Tôi đang chạy Drupal (phiên bản mới nhất 7.22) trên Apache 2.2 và tôi cũng đã cài đặt Varnish (mô-đun và proxy). Trong Apache, tôi đã vô hiệu hóa mô-đun mod_deflate. Đọc trên web, có vẻ như các tùy chọn trên trang hiệu suất trong Drupal (tổng hợp css, js) không nên nén các tệp css và js. Tuy nhiên, duyệt trang web của tôi và kiểm tra các tiêu đề http, tôi thấy rằng tôi đang nhận được "Mã hóa nội dung: gzip". Nhìn vào .htaccess (mặc định), tôi thấy rằng có một số quy tắc viết lại để lưu trữ các tệp được nén vào các máy khách có thể đọc chúng. Vì vậy, tôi đoán đây là nơi mà các tiêu đề "Mã hóa nội dung: gzip" đến từ. Ngoài ra, khi tôi cho phép nén các trang được lưu trong bộ nhớ cache trên trang cài đặt hiệu suất trong drupal, tôi thấy rằng ngay cả html của trang tôi đang yêu cầu (chỉ là người dùng ẩn danh) được nén lại.
1) Thực hiện các tùy chọn "Tổng hợp và nén các tệp CSS." và "Tổng hợp các tệp JavaScript." thực sự nén các tập tin tổng hợp hay chỉ là .htaccess làm cho chúng có vẻ như được nén? Sử dụng các công cụ phát triển chrome, các tệp dường như được nén. Tuy nhiên, kiểm tra chúng bằng addon thanh công cụ dành cho nhà phát triển trong firefox, (Thông tin -> Xem kích thước tài liệu) chúng không được báo cáo là đã nén (trong khi tệp html luôn được báo cáo như vậy, ngay cả khi tôi truy cập dưới dạng người dùng được xác thực!)
2) Nếu chúng thực sự được nén, quá trình nén diễn ra ở đâu? Tôi có thể kiểm soát mức độ nén, vv bằng cách nào đó?
3) Tôi luôn nhận được "MISS" X-Drupal-Cache. Tôi không quan tâm lắm vì tôi đã cài đặt Varnish. Tuy nhiên, vì tôi không nhấn vào bộ đệm, tại sao tôi lại trả lại một tệp html đã nén (không có trong bộ đệm)?
4) Có bất kỳ cơ hội nào mà mô-đun Varnish làm rối tung mọi thứ không? Tôi đang truy cập trang web bằng https để chắc chắn rằng Varnish bị bỏ qua, trong mọi trường hợp.
5) Nếu tôi bật mod_deflate, tôi có nên giữ nguyên phần đó của .htaccess không? Tôi hiểu rằng mod_deflate không cho phép giải nén, nhưng nếu nén tốt hơn thì sao?
6) Ngoài ra, nếu drupal tự nén các tệp css, js và html, thì điểm nào cho phép mod_deflate cho các tệp này?
Đây là phần có liên quan của tệp .htaccess của tôi để tham khảo:
<IfModule mod_headers.c>
# Serve gzip compressed CSS files if they exist and the client accepts gzip.
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME}\.gz -s
RewriteRule ^(.*)\.css $1\.css\.gz [QSA]
# Serve gzip compressed JS files if they exist and the client accepts gzip.
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME}\.gz -s
RewriteRule ^(.*)\.js $1\.js\.gz [QSA]
# Serve correct content types, and prevent mod_deflate double gzip.
RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip:1]
RewriteRule \.js\.gz$ - [T=text/javascript,E=no-gzip:1]
<FilesMatch "(\.js\.gz|\.css\.gz)$">
# Serve correct encoding type.
Header set Content-Encoding gzip
# Force proxies to cache gzipped & non-gzipped css/js files separately.
Header append Vary Accept-Encoding
</FilesMatch>
</IfModule>