Cấp độ nén zipfile python

Nén là một cách đơn giản, hiệu quả để tiết kiệm băng thông và tăng tốc trang web của bạn. Tôi do dự khi đề xuất nén gzip khi tăng tốc javascript của bạn vì sự cố trong các trình duyệt cũ hơn

Nhưng đó là thế kỷ 21. Hầu hết lưu lượng truy cập của tôi đến từ các trình duyệt hiện đại và thật lòng mà nói, hầu hết người dùng của tôi đều khá am hiểu về công nghệ. Tôi không muốn làm chậm tốc độ của những người khác vì ai đó đang chạy theo IE 4. 0 trên Windows 95. Google và Yahoo sử dụng nén gzip. Cần có một trình duyệt hiện đại để tận hưởng nội dung web hiện đại và tốc độ web hiện đại — vì vậy mã hóa gzip là. Đây là cách thiết lập nó

Đợi, đợi, đợi. Tại sao chúng ta lại làm việc này?

Trước khi bắt đầu, tôi nên giải thích mã hóa nội dung là gì. Khi bạn yêu cầu một tệp như //www.yahoo.com/index.html, trình duyệt của bạn sẽ nói chuyện với máy chủ web. Cuộc trò chuyện diễn ra một chút như thế này

  1. Trình duyệt. Này, BẮT tôi /index. html
  2. Người phục vụ. Ok, để tôi xem nếu chỉ số. html nằm xung quanh…
  3. Người phục vụ. Đã tìm thấy nó. Đây là mã phản hồi của bạn [200 OK] và tôi đang gửi tệp
  4. trình duyệt. 100KB?

Tất nhiên, các tiêu đề và giao thức thực tế trang trọng hơn nhiều [theo dõi chúng bằng các tiêu đề HTTP Trực tiếp nếu bạn muốn].

Nhưng nó đã hoạt động và bạn đã nhận được tệp của mình

Vậy vấn đề là gì?

Chà, hệ thống hoạt động, nhưng nó không hiệu quả lắm. 100KB là rất nhiều văn bản và thẳng thắn mà nói, HTML là dư thừa. Mỗi thẻ ,

and
có một thẻ đóng gần như giống nhau. Các từ được lặp lại trong toàn bộ tài liệu. Bất kỳ cách nào bạn cắt nó, HTML [và người anh em lực lưỡng của nó, XML .

Và kế hoạch là gì khi tệp quá lớn?

Nếu chúng ta có thể gửi một. zip vào trình duyệt [index. html. zip] thay vì chỉ mục cũ đơn giản. html, chúng tôi sẽ tiết kiệm băng thông và thời gian tải xuống. Trình duyệt có thể tải xuống tệp nén, giải nén và sau đó hiển thị cho người dùng, người đang có tâm trạng tốt vì trang được tải nhanh. Cuộc hội thoại trình duyệt-máy chủ có thể trông như thế này

  1. Trình duyệt. Này, tôi có thể NHẬN chỉ mục không. Html? .
  2. Người phục vụ. Để tôi tìm tập tin… yep, nó đây. Và bạn sẽ dùng một phiên bản nén?
  3. Người phục vụ. Ok, tôi đã tìm thấy chỉ mục. html [200 OK], đang nén và gửi qua
  4. trình duyệt. Tuyệt quá. Nó chỉ có 10KB. Tôi sẽ giải nén nó và hiển thị cho người dùng

Công thức rất đơn giản. Tệp nhỏ hơn = tải xuống nhanh hơn = người dùng hài lòng

Bạn không tin tôi sao? . HTML portion of the yahoo home page goes from 101kb to 15kb after compression:

Các chi tiết lông [không phải như vậy]

Phần khó khăn của trao đổi này là trình duyệt và máy chủ biết rằng có thể gửi tệp nén qua. Thỏa thuận có hai phần

  • Trình duyệt gửi một tiêu đề cho máy chủ biết rằng nó chấp nhận nội dung nén [gzip và deflate là hai sơ đồ nén]. Accept-Encoding: gzip, deflate

  • Máy chủ gửi phản hồi nếu nội dung thực sự được nén. Content-Encoding: gzip

Nếu máy chủ không gửi tiêu đề phản hồi mã hóa nội dung, điều đó có nghĩa là tệp không được nén [mặc định trên nhiều máy chủ]. Tiêu đề “Chấp nhận mã hóa” chỉ là yêu cầu của trình duyệt, không phải là yêu cầu. Nếu máy chủ không muốn gửi lại nội dung nén, trình duyệt phải thực hiện với phiên bản thông thường nặng nề

Thiết lập máy chủ

“Tin tốt” là chúng ta không thể kiểm soát trình duyệt. Nó sẽ gửi tiêu đề Accept-encoding: gzip, deflate hoặc không

Công việc của chúng tôi là định cấu hình máy chủ để nó trả về nội dung được nén nếu trình duyệt có thể xử lý, tiết kiệm băng thông cho mọi người [và mang lại cho chúng tôi người dùng hài lòng]

Đối với IS, bật tính năng nén trong cài đặt.

Trong Apache, việc bật tính năng nén đầu ra khá đơn giản. Thêm phần sau vào của bạn. tập tin htaccess

# compress text, html, javascript, css, xml:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

# Or, compress certain file types by extension:

SetOutputFilter DEFLATE

Apache thực sự có hai tùy chọn nén

  • mod_deflate dễ cài đặt hơn và là tiêu chuẩn
  • mod_gzip có vẻ mạnh mẽ hơn. bạn có thể nén trước nội dung

Xả hơi nhanh chóng và hiệu quả, vì vậy tôi sử dụng nó; . Trong cả hai trường hợp, Apache sẽ kiểm tra xem trình duyệt có gửi tiêu đề “Chấp nhận mã hóa” hay không và trả về phiên bản nén hoặc phiên bản thông thường của tệp. Tuy nhiên, một số trình duyệt cũ hơn có thể gặp sự cố [xem thêm bên dưới] và bạn có thể thêm các lệnh đặc biệt để khắc phục sự cố này

Nếu bạn không thể thay đổi. htaccess, bạn có thể sử dụng PHP để trả về nội dung nén. Cung cấp HTML tệp của bạn. php và thêm mã này vào đầu.

Trong PHP .

Chủ Đề