รูปแบบไฟล์ CRX (ส่วนขยายของ Chrome) ใช้เพื่อแพ็กเกจส่วนขยายของเบราว์เซอร์สำหรับ Google Chrome, Microsoft Edge และเว็บเบราว์เซอร์อื่นๆ ที่ใช้ Chromium ไฟล์ CRX เป็นไฟล์เก็บถาวร ZIP ที่มีโค้ดต้นทางของส่วนขยาย ทรัพยากร และข้อมูลเมตา โดยพื้นฐานแล้ว ไฟล์เหล่านี้จะให้วิธีมาตรฐานและปลอดภัยในการแจกจ่ายส่วนขยายให้กับผู้ใช้
ไฟล์ CRX ประกอบด้วยส่วนประกอบหลักหลายส่วน ส่วนแรกคือไฟล์ 'manifest.json' ซึ่งทำหน้าที่เป็นไฟล์กำหนดค่าของส่วนขยาย ไฟล์นี้มีข้อมูลเมตา เช่น ชื่อส่วนขยาย เวอร์ชัน คำอธิบาย สิทธิ์ และการตั้งค่าอื่นๆ Manifest ยังระบุจุดเข้าของส่วนขยาย เช่น สคริปต์พื้นหลัง สคริปต์เนื้อหา และไอคอนการทำงานของเบราว์เซอร์
อีกส่วนประกอบที่สำคัญของไฟล์เก็บถาวร CRX คือโค้ดต้นทางของส่วนขยาย ซึ่งรวมถึง HTML, CSS, JavaScript และไฟล์อื่นๆ ที่จำเป็นสำหรับการทำงานของส่วนขยาย โค้ดต้นทางจะจัดระเบียบเป็นโครงสร้างไดเร็กทอรีภายในไฟล์เก็บถาวร CRX โดยมีการระบุไฟล์และไดเร็กทอรีแต่ละรายการใน manifest
ไฟล์ทรัพยากร เช่น รูปภาพ ฟอนต์ และไฟล์การแปลภาษา ก็รวมอยู่ในไฟล์เก็บถาวร CRX ด้วยเช่นกัน ไฟล์เหล่านี้จะถูกอ้างอิงโดยโค้ดต้นทางของส่วนขยาย และใช้เพื่อปรับปรุงส่วนติดต่อผู้ใช้และให้ฟังก์ชันการทำงานเพิ่มเติม
เพื่อให้แน่ใจว่าไฟล์ CRX มีความสมบูรณ์และปลอดภัย ไฟล์เหล่านี้จะได้รับการลงนามแบบดิจิทัลโดยนักพัฒนาส่วนขยายโดยใช้คีย์ส่วนตัว คีย์สาธารณะที่สอดคล้องกันจะรวมอยู่ในไฟล์เก็บถาวร CRX เอง เมื่อผู้ใช้ติดตั้งส่วนขยาย CRX เบราว์เซอร์จะตรวจสอบลายเซ็นดิจิทัลเพื่อให้แน่ใจว่าส่วนขยายนั้นไม่ได้ถูกแก้ไข และมาจากนักพัฒนาที่คาดไว้
รูปแบบ CRX ยังรองรับฟีเจอร์เสริม เช่น การอัปเดตอัตโนมัติและสคริปต์เนื้อหา การอัปเดตอัตโนมัติช่วยให้ส่วนขยายสามารถดาวน์โหลดและติดตั้งการอัปเดตจาก URL ที่ระบุโดยอัตโนมัติ เพื่อให้แน่ใจว่าผู้ใช้มีเวอร์ชันล่าสุดอยู่เสมอ สคริปต์เนื้อหาเป็นไฟล์ JavaScript ที่สามารถแทรกเข้าไปในเว็บเพจเพื่อปรับเปลี่ยนพฤติกรรมหรือรูปลักษณ์ของเว็บเพจ
ในการสร้างไฟล์เก็บถาวร CRX นักพัฒนามักใช้เครื่องมือแพ็กเกจที่จัดทำโดยผู้จำหน่ายเบราว์เซอร์หรือยูทิลิตี้ของบุคคลที่สาม เครื่องมือเหล่านี้จะนำโค้ดต้นทางและทรัพยากรของส่วนขยาย บีบอัดเป็นไฟล์เก็บถาวร ZIP และลงนามในไฟล์เก็บถาวรด้วยคีย์ส่วนตัวของนักพัฒนา จากนั้นไฟล์ CRX ที่ได้จะสามารถแจกจ่ายผ่านร้านส่วนขยายของเบราว์เซอร์หรือผ่านวิธีการอื่นๆ
เมื่อผู้ใช้ติดตั ้งส่วนขยาย CRX เบราว์เซอร์จะแยกเนื้อหาของไฟล์เก็บถาวรและตรวจสอบลายเซ็นดิจิทัล หากลายเซ็นถูกต้อง ส่วนขยายจะได้รับการติดตั้งและพร้อมใช้งาน เบราว์เซอร์ยังกำหนด ID ที่ไม่ซ้ำกันให้กับส่วนขยาย ซึ่งใช้เพื่อระบุและจัดการส่วนขยายภายในเบราว์เซอร์
ส่วนขยาย CRX สามารถเข้าถึง API ของเบราว์เซอร์ได้หลากหลาย ซึ่งช่วยให้ส่วนขยายสามารถโต้ตอบกับเว็บเพจ ปรับเปลี่ยนส่วนติดต่อผู้ใช้ของเบราว์เซอร์ และทำงานต่างๆ ได้ อย่างไรก็ตาม เพื่อให้แน่ใจว่าปลอดภัยและป้องกันการใช้งานในทางที่ผิด ส่วนขยายจึงต้องอยู่ภายใต้สิทธิ์และนโยบายความปลอดภัยของเนื้อหา (CSP) สิทธิ์จะกำหนดว่าส่วนขยายสามารถดำเนินการใดได้บ้าง ในขณะที่ CSP จะจำกัดแหล่งที่มาที่ส่วนขยายสามารถโหลดทรัพยากรได้
นักพัฒนายังสามารถใช้รูปแบบ CRX เพื่อสร้างธีมสำหรับเบราว์เซอร์ได้อีกด้วย ธีมเป็นส่วนขยายที่ปรับเปลี่ยนรูปลักษณ์ของเบราว์เซอร์ เช่น ชุดสี รูปภาพพื้นหลัง และองค์ประกอบส่วนติดต่อ เช่นเดียวกับส่วนขยายทั่วไป ธีมจะถูกแพ็กเกจเป็นไฟล์ CRX และสามารถติดตั้งได้โดยผู้ใช้
โดยรวมแล้ว รูปแบบไฟล์เก็บถาวร CRX ให้วิธีที่สะดวกและปลอดภัยในการแพ็กเกจและแจกจ่ายส่วนขยายของเบราว์เซอร์ โครงสร้างมาตรฐานและกลไกลการลงนามแบบดิจิทัลช่วยให้แน่ใจว่าส่วนขยายปลอดภัยสำหรับการติดตั้งและใช้งาน ในขณะที่ความยืดหยุ่นและการรองรับ API ที่ครอบคลุมช่วยให้นักพัฒนาสามารถสร้างส่วนขยายที่มีประสิทธิภาพและมีฟีเจอร์มากมาย ซึ่งช่วยเพิ่มประสบการณ์การท่องเว็บให้กับผู้ใช้
การบีบอัดไฟล์ช่วยลดความซ้ำซ้อนเพื่อให้ข้อมูลเดียวกันใช้บิตน้อยลง ขีดจำกัดสูงสุดของระยะทางที่คุณสามารถไปได้ถูกควบคุมโด ยทฤษฎีข้อมูล: สำหรับการบีบอัดแบบไม่สูญเสียข้อมูล ขีดจำกัดคือเอนโทรปีของแหล่งที่มา (ดู ทฤษฎีบทการเข้ารหัสต้นทาง ของแชนนอนและบทความต้นฉบับของเขาในปี 1948 “ทฤษฎีทางคณิตศาสตร์ของการสื่อสาร”) สำหรับการบีบอัดแบบสูญเสียข้อมูล การแลกเปลี่ยนระหว่างอัตราและคุณภาพถูกจับโดย ทฤษฎีอัตรา-ความผิดเพี้ยน.
คอมเพรสเซอร์ส่วนใหญ่มีสองขั้นตอน ขั้นแรก แบบจำลอง จะทำนายหรือเปิดเผยโครงสร้างในข้อมูล ประการที่สอง ตัวเข้ารหัส จะเปลี่ยนการคาดการณ์เหล่านั้นให้เป็นรูปแบบบิตที่เกือบจะเหมาะสมที่สุด ตระกูลการสร้างแบบจำลองแบบคลาสสิกคือ Lempel–Ziv: LZ77 (1977) และ LZ78 (1978) ตรวจจับสตริงย่อยที่ซ้ำกันและส่งออกการอ้างอิงแทนไบต์ดิบ ในด้านการเข้ารหัส การเข้ารหัสฮัฟฟ์แมน (ดูบทความต้นฉบับ 1952) กำหนดรหัสที่สั้นกว่าให้กับสัญลักษณ์ที่มีแนวโน้มมากกว่า การเข้ารหัสเลขคณิต และ การเข้ารหัสช่วง เป็นทางเลือกที่ละเอียดกว่าซึ่งบีบเข้าใกล้ขีดจำกัดเอนโทรปีมากขึ้น ในขณะที่ ระบบเลขไม่สมมาตร (ANS) ที่ทันสมัยบรรลุการบีบอัดที่คล้ายกันด้วยการใช้งานที่ขับเคลื่อนด้วยตารางที่รวดเร็ว
DEFLATE (ใช้โดย gzip, zlib และ ZIP) รวม LZ77 เข้ากับการเข้ารหัสฮัฟฟ์แมน ข้อกำหนดของมันเป็นแบบสาธารณะ: DEFLATE RFC 1951, zlib wrapper RFC 1950, และรูปแบบไฟล์ gzip RFC 1952. Gzip ถูกจัดเฟรมสำหรับการสตรีมและอย่างชัดเจน ไม่พยายามให้การเข้าถึงแบบสุ่ม. รูปภาพ PNG กำหนดมาตรฐาน DEFLATE เป็นวิธีการบีบอัดเพียงวิธีเดียว (โดยมีหน้าต่างสูงสุด 32 KiB) ตามข้อกำหนด PNG “วิธีการบีบอัด 0… deflate/inflate… มากที่สุด 32768 ไบต์” และ W3C/ISO PNG ฉบับที่ 2.
Zstandard (zstd): คอมเพรสเซอร์สำหรับวัตถุประสงค์ทั่วไปรุ่นใหม่ที่ออกแบบมาสำหรับอัตราส่วนที่สูงพร้อมการคลายการบีบอัดที่รวดเร็วมาก รูปแบบ được ghi lại trong RFC 8878 (cũng gương HTML) và thông số kỹ thuật tham chiếu trên GitHub. Giống như gzip, khung cơ bản không nhắm đến truy cập ngẫu nhiên. Một trong những siêu năng lực của zstd là từ điển: các mẫu nhỏ từ kho dữ liệu của bạn giúp cải thiện đáng kể việc nén trên nhiều tệp nhỏ hoặc tương tự (xem tài liệu từ điển python-zstandard và ví dụ làm việc của Nigel Tao). Các triển khai chấp nhận cả từ điển “không có cấu trúc” và “có cấu trúc” (thảo luận).
Brotli: เหมาะสำหรับเนื้อหาเว็บ (เช่น แบบอักษร WOFF2, HTTP) มันผสมพจนานุกรมคงที่กับ แกน LZ+เอนโทรปีที่คล้ายกับ DEFLATE ข้อกำหนดคือ RFC 7932ซึ่งยังบันทึกหน้าต่างเลื่อนของ 2WBITS