เครื่องมือ PDF แบบ server-side กับ client-side ทำงานต่างกันอย่างไร
เครื่องมือ PDF แบบ server-side จะอัปโหลดไฟล์ของคุณไปยังคอมพิวเตอร์ของผู้ให้บริการ ประมวลผลที่นั่น แล้วส่งผลลัพธ์กลับมา ส่วนเครื่องมือแบบ client-side จะดาวน์โหลดโปรแกรมมาที่เบราว์เซอร์ของคุณแทน และโปรแกรมนั้นประมวลผลไฟล์บนอุปกรณ์ของคุณเอง แบบแรกเอกสารของคุณต้องเดินทาง แบบที่สองมีแค่โค้ดที่เดินทาง
ความต่างข้อเดียวนี้เป็นตัวกำหนดว่าใครจะมีโอกาสเห็นไฟล์ของคุณได้บ้าง และยังอธิบายด้วยว่าทำไมเครื่องมือสองแบบนี้ให้ความรู้สึกต่างกัน ล้มเหลวคนละแบบ และเหมาะกับงานคนละอย่าง บทความนี้จะไล่ให้ดูทีละขั้นว่าแต่ละแบบเกิดอะไรขึ้นจริงๆ
เกิดอะไรขึ้นในเครื่องมือแบบ server-side
- คุณเลือกไฟล์ หน้าเว็บส่งไฟล์ผ่านอินเทอร์เน็ตไปยังเซิร์ฟเวอร์ของผู้ให้บริการ ซึ่งมักเป็นการอัปโหลดผ่าน HTTPS
- เซิร์ฟเวอร์จัดเก็บไฟล์ไว้ อย่างน้อยก็บนดิสก์หรือในหน่วยความจำตลอดเวลาที่ทำงาน และมักอยู่ในคิวร่วมกับไฟล์ของคนอื่น
- โปรแกรมบนเซิร์ฟเวอร์ เช่น ไลบรารี PDF ตัวแปลงไฟล์ หรือระบบรู้จำข้อความ เป็นตัวทำงาน
- ผลลัพธ์ก็ถูกจัดเก็บไว้เช่นกัน และหน้าเว็บให้ลิงก์คุณไว้ดาวน์โหลด
- ไฟล์ทั้งสองถูกลบในภายหลัง ตามกฎการเก็บรักษาข้อมูลของผู้ให้บริการเอง
เมื่อก่อนนี่เป็นวิธีเดียวที่ใช้ได้จริง เบราว์เซอร์ยังช้า และไลบรารีที่อ่านและเขียน PDF ใหม่ได้ก็ทำงานได้แค่บนเซิร์ฟเวอร์ เบราว์เซอร์ทุกวันนี้รันโค้ดซับซ้อนได้เร็ว และไลบรารี PDF โอเพนซอร์สที่เขียนด้วย JavaScript ก็ทำงานประจำวันส่วนใหญ่ได้ในแท็บเดียว
HTTPS ปกป้องขั้นที่ 1 จากการดักฟัง ส่วนขั้นที่ 2 ถึง 5 ขึ้นอยู่กับผู้ให้บริการ ทั้งระบบความปลอดภัย การเข้าถึงของพนักงาน ข้อมูลสำรอง และภาระทางกฎหมายในประเทศที่เซิร์ฟเวอร์ตั้งอยู่ ผู้ให้บริการส่วนใหญ่จัดการเรื่องนี้อย่างรับผิดชอบ แต่คุณต้องไว้ใจให้เขาทำเช่นนั้น
เกิดอะไรขึ้นในเครื่องมือแบบ client-side
- คุณเปิดหน้าเครื่องมือ เบราว์เซอร์ดาวน์โหลดหน้าเว็บและ JavaScript ของมัน เหมือนเว็บไซต์ทั่วไป
- คุณเลือกไฟล์ File API ของเบราว์เซอร์อ่านไฟล์จากดิสก์เข้าสู่หน่วยความจำของแท็บ ไม่มีอะไรถูกส่งออกไป
- โค้ดที่รันในแท็บเป็นตัวทำงาน ส่วนที่หนักมักรันใน Web Worker ซึ่งเป็นเธรดเบื้องหลัง หน้าเว็บจึงยังตอบสนองได้ดี
- ผลลัพธ์ถูกสร้างในหน่วยความจำและส่งให้คุณเป็นไฟล์ดาวน์โหลด ผ่านลิงก์ชั่วคราวที่ชี้ไปยังหน่วยความจำในเบราว์เซอร์ของคุณเอง
- เมื่อคุณปิดแท็บ หน่วยความจำจะถูกคืน ไม่มีอะไรต้องลบที่อื่น เพราะไม่มีอะไรถูกส่งออกไป
เครื่องมือ PDF ของ Kopitiam ทำงานแบบนี้ ใช้ pdf.js ซึ่งเป็นเอนจิน PDF โอเพนซอร์สจาก Mozilla เพื่ออ่านและวาดหน้า โดยตัวแยกวิเคราะห์ไฟล์รันอยู่ใน Web Worker และใช้ pdf-lib ซึ่งเป็นไลบรารีโอเพนซอร์สอีกตัวเพื่อสร้าง PDF ใหม่ ทั้งสองตัวรันอยู่ในแท็บของคุณ
ทำไมเครื่องมือแบบ client-side ทำงานออฟไลน์ได้
เมื่อโปรแกรมอยู่ในเบราว์เซอร์ของคุณแล้ว ก็ไม่ต้องใช้เครือข่ายในการทำงาน นี่คือเหตุผลที่การทดสอบแบบออฟไลน์ได้ผล เปิดเครื่องมือ ปิด Wi-Fi แล้วเครื่องมือก็ยังทำงานต่อไป ถ้ามันอัปโหลดไฟล์จริงๆ ก็จะล้มเหลวทันที
มีรายละเอียดที่ควรรู้ Kopitiam เริ่ม worker ของเอนจิน PDF ทันทีที่เปิดหน้าเครื่องมือ ไม่ใช่ตอนที่คุณวางไฟล์ เครื่องมือจึงยังทำงานต่อได้ถ้าการเชื่อมต่อหลุดหลังจากโหลดหน้าเว็บแล้ว ฟีเจอร์ที่ใช้ไม่บ่อยบางตัวจะโหลดโค้ดเพิ่มในครั้งแรกที่ใช้ เช่น เอนจินฟอนต์สำหรับข้อความในอักษรที่ไม่ใช่ละติน นั่นคือโค้ดที่เข้ามาหาคุณ ไม่ใช่ไฟล์ของคุณที่ส่งออกไป
ข้อจำกัดจริงของการประมวลผลแบบ client-side
การทำงานบนอุปกรณ์ของคุณมีต้นทุน และเครื่องมือที่ซื่อตรงควรบอกให้คุณรู้
- หน่วยความจำ ไฟล์ทั้งไฟล์อยู่ในหน่วยความจำของแท็บ และมักมีมากกว่าหนึ่งชุดระหว่างประมวลผล ไฟล์สแกนขนาด 200 MB อาจต้องใช้หน่วยความจำหลายเท่าของขนาดนั้น เบราว์เซอร์จำกัดหน่วยความจำต่อแท็บ และโทรศัพท์จำกัดเข้มที่สุด
- ความเร็ว แล็ปท็อปหรือโทรศัพท์ของคุณเป็นตัวทำงาน ไม่ใช่ศูนย์ข้อมูล การแปลง 400 หน้าเป็นรูปภาพ หรือบีบอัดรูปทุกรูปในไฟล์สแกนยาวๆ ใหม่ จะใช้เวลานานขึ้นอย่างเห็นได้ชัดบนอุปกรณ์รุ่นเก่า
- แบตเตอรี่และความร้อน งานที่ใช้เวลานานบนโทรศัพท์จะทำให้โปรเซสเซอร์ทำงานหนักอยู่พักหนึ่ง
- งานยาก งานบางอย่างทำด้วยซอฟต์แวร์บนเซิร์ฟเวอร์ได้ง่ายกว่ามาก เช่น การรู้จำข้อความในคลังไฟล์สแกนขนาดใหญ่ หรือการแปลงไฟล์ Office ที่ซับซ้อนให้เลย์เอาต์ตรงเป๊ะ เครื่องมือหลายตัวที่ส่วนอื่นเป็นแบบ client-side จะส่งงานเฉพาะเหล่านี้ไปยังเซิร์ฟเวอร์
ในทางปฏิบัติ ขีดจำกัดขนาดไฟล์ของเครื่องมือแบบ client-side คืออุปกรณ์ของคุณ ไม่ใช่ตัวเลขบนหน้าราคา Kopitiam ไม่มีการจำกัดขนาดไฟล์ในโค้ด ไฟล์ที่ใหญ่มากจึงจะทำงานได้หรือไม่ก็หน่วยความจำไม่พอ การแยกไฟล์ใหญ่ก่อน หรือใช้เบราว์เซอร์บนคอมพิวเตอร์แทนโทรศัพท์ มักช่วยให้ผ่านได้
ลองนึกถึงไฟล์สแกนขนาด 40 MB ที่คุณต้องลดขนาดเพื่อส่งอีเมล บนเครือข่ายมือถือที่ช้า เครื่องมือแบบ server-side ต้องอัปโหลดทั้ง 40 MB ก่อนจะเริ่มได้ แล้วคุณก็ต้องดาวน์โหลดผลลัพธ์ เวลารอส่วนใหญ่จึงหมดไปกับเครือข่าย เครื่องมือแบบ client-side ข้ามการรับส่งทั้งสองขั้น แต่โทรศัพท์ของคุณต้องบีบอัดเอง ซึ่งอาจใช้เวลาพักหนึ่งกับไฟล์สแกนยาวๆ ไม่มีแบบไหนเร็วกว่าเสมอ ขึ้นอยู่กับการเชื่อมต่อและอุปกรณ์ของคุณ
แบบผสม และคำกล่าวอ้างที่ต้องอ่านให้ดี
ไม่ใช่ทุกเครื่องมือที่เป็นแบบใดแบบหนึ่งล้วนๆ คุณจะเจออยู่ไม่กี่รูปแบบ
- ส่วนใหญ่ในเครื่อง บางส่วนบนเซิร์ฟเวอร์ งานง่ายๆ รันในเบราว์เซอร์ ส่วนการแปลงไฟล์หรือการรู้จำข้อความถูกอัปโหลด ให้หาคำชี้แจงแยกตามเครื่องมือ ไม่ใช่คำชี้แจงรวมทั้งเว็บ
- อัปโหลดแบบเข้ารหัส ไฟล์ถูกอัปโหลด แต่เข้ารหัสระหว่างส่งและระหว่างจัดเก็บ ดีกว่าไม่มีอะไรเลย แต่เซิร์ฟเวอร์ก็ยังต้องถอดรหัสไฟล์เพื่อทำงานกับมัน
- ทำงานในเครื่องแต่บันทึกบนคลาวด์ งานทำในเครื่อง แต่ผลลัพธ์ถูกเก็บในบัญชีของคุณเพื่อเปิดได้ภายหลัง นั่นคือสำเนาบนเซิร์ฟเวอร์ ตามที่ออกแบบไว้
- แอปบนคอมพิวเตอร์ โปรแกรมที่ติดตั้งก็เป็นแบบ client-side เหมือนกัน แต่ก็ส่งไฟล์หรือข้อมูลการใช้งานกลับไปหาผู้พัฒนาได้ นโยบายความเป็นส่วนตัวของมันจึงยังสำคัญ
วิธีตรวจว่าคุณกำลังใช้แบบไหน
เปิดเครื่องมือสำหรับนักพัฒนาของเบราว์เซอร์ (กด F12 ในเบราว์เซอร์บนคอมพิวเตอร์ส่วนใหญ่) ไปที่แท็บ Network แล้วลองใช้เครื่องมือกับไฟล์ทดสอบ เครื่องมือแบบ server-side จะแสดงคำขอขนาดใกล้เคียงกับไฟล์ของคุณส่งออกไปตอนเริ่มทำงาน เครื่องมือแบบ client-side จะแสดงแค่คำขอเล็กๆ เช่น โฆษณาหรือการส่งข้อมูลให้ระบบวิเคราะห์ และไม่มีคำขอไหนที่ใหญ่ขึ้นตามไฟล์ของคุณ การทำงานเดียวกันโดยปิด Wi-Fi คือการทดสอบเดียวกันแบบรวบรัด
ควรเลือกแบบไหน
สำหรับสัญญา สลิปเงินเดือน จดหมายทางการแพทย์ และสแกนบัตรประชาชน แบบ client-side เป็นตัวเลือกเริ่มต้นที่ดีกว่า เพราะไม่มีสำเนาที่อื่นให้รั่วไหลหรือถูกเก็บไว้ สำหรับโบรชัวร์สาธารณะหรือเมนู แบบไหนก็ได้ เมื่อคุณต้องการสิ่งที่เบราว์เซอร์ทำได้ไม่ดี เช่น การรู้จำข้อความในคลังเอกสาร 2,000 หน้า เครื่องมือแบบ server-side ที่น่าเชื่อถือและมีนโยบายการเก็บรักษาที่ชัดเจนก็เป็นตัวเลือกที่สมเหตุสมผล ใช้กับไฟล์นั้น ไม่ใช่ใช้จนเป็นนิสัย
คำถามที่พบบ่อย
- เครื่องมือ PDF แบบ server-side กับ client-side ต่างกันอย่างไร
- เครื่องมือแบบ server-side อัปโหลดไฟล์ของคุณและประมวลผลบนคอมพิวเตอร์ของผู้ให้บริการ เครื่องมือแบบ client-side ส่งโปรแกรมมาที่เบราว์เซอร์ของคุณและประมวลผลไฟล์บนอุปกรณ์ของคุณเอง ไฟล์จึงไม่เคยถูกอัปโหลด
- การประมวลผล PDF แบบ client-side เป็นส่วนตัวกว่าไหม
- ใช่ เพราะไม่มีสำเนาไฟล์ของคุณอยู่ที่ไหนเลยนอกจากในอุปกรณ์ของคุณ เครื่องมือแบบ server-side อาจบริหารจัดการได้ดี แต่คุณต้องพึ่งระบบความปลอดภัยและกฎการเก็บรักษาของมันตลอดเวลาที่มันยังเก็บไฟล์ไว้
- ทำไมเครื่องมือแบบ client-side ถึงมีปัญหากับ PDF ขนาดใหญ่มาก
- ไฟล์ทั้งไฟล์ต้องอยู่ในหน่วยความจำของแท็บเบราว์เซอร์ให้ได้ และมักมากกว่าหนึ่งชุดระหว่างประมวลผล โทรศัพท์และแล็ปท็อปรุ่นเก่ามีหน่วยความจำเหลือน้อยกว่า ไฟล์สแกนขนาดใหญ่มากจึงอาจช้าหรือล้มเหลว การแยกไฟล์ก่อนมักช่วยได้
- ถ้าเว็บโหลดโฆษณา ยังถือว่าเป็นแบบ client-side ไหม
- เป็นได้ โฆษณา ฟอนต์ และระบบวิเคราะห์เป็นคำขอเล็กๆ ที่แยกกัน สิ่งที่สำคัญคือเนื้อหาในไฟล์ของคุณถูกส่งออกไปหรือไม่ ซึ่งคุณตรวจได้ในแท็บ Network หรือด้วยการทดสอบแบบออฟไลน์
- Kopitiam เป็นแบบ server-side หรือ client-side
- เครื่องมือ PDF ของ Kopitiam เป็นแบบ client-side ใช้ pdf.js และ pdf-lib ในแท็บเบราว์เซอร์ของคุณ ไฟล์ไม่เคยถูกอัปโหลด และเครื่องมือยังทำงานต่อได้ถ้าการเชื่อมต่อหลุดหลังจากโหลดหน้าเว็บแล้ว