Tôi đã có một số hướng dẫn về cách gzip một tệp css mà trong đó bạn tạo một tệp php công khai để bao gồm các tệp css có nén. Vấn đề là tôi không thể làm cho nó để cache các tập tin css của tôi. Tôi đang sử dụng firebug để tham khảo và tôi đã thực sự cố gắng sử dụng cùng một mã để nén một số javascript và nó lưu trữ nó tốt.Caching gzipped css
Đây là mã:
if(extension_loaded('zlib')){ ob_start('ob_gzhandler'); } $offset = 60 * 60 * 24 * 31; header('Content-type: text/css'); header ('Cache-Control: max-age=' . $offset . ', must-revalidate'); header ('Expires: ' . gmdate ("D, d M Y H:i:s", time() + $offset) . ' GMT'); ob_start("compress"); function compress($buffer) { // Remove Comments, White Space, End ;'s $buffer = preg_replace('#/\*.*?\*/#s', '', $buffer); $buffer = preg_replace('/\s*([{}|:;,])\s+/', '$1', $buffer); $buffer = preg_replace('/\s\s+(.*)/', '$1', $buffer); $buffer = str_replace(';}', '}', $buffer); $buffer = str_replace(' {', '{', $buffer); return $buffer; } include('global.css'); if(extension_loaded('zlib')){ ob_end_flush(); }
Sau đó tôi chỉ đơn giản là tham khảo tập tin php của tôi như là một tài liệu css trên các trang khác. Như bạn có thể thấy tôi đã thử thêm độ tuổi tối đa vào danh sách kết hợp cũng chứng minh là không thành công.
Dưới đây là các tiêu đề phản ứng
Date Tue, 21 Jul 2009 19:59:19 GMT Server Apache/1.3.41 (Darwin) PHP/4.4.9 X-Powered-By PHP/4.4.9 Cache-Control max-age=2592000, must-revalidate Expires Thu, 20 Aug 2009 19:59:19 GMT Content-Encoding gzip Vary Accept-Encoding Keep-Alive timeout=15, max=93 Connection Keep-Alive Transfer-Encoding chunked Content-Type text/css
Có điều gì tôi đang mất tích, hoặc một cách tốt hơn để đi về việc này?
Cảm ơn,
EDIT:
Một kịch bản có khả năng dò hay không tập tin đã được thay đổi & gửi 304 nếu nó chưa, kết hợp với tiêu đề thích hợp đã giải quyết vấn đề này.
Arthur
Hey Anthony, Tôi đã thử thêm Sửa đổi lần cuối như bạn đã đề xuất với sự kết hợp của ngày sửa đổi sau đó và trước đó mà không có may mắn. Tôi cũng đã gửi tiêu đề thông qua với một ETag & Nếu sửa đổi kể từ, và nó vẫn không bộ nhớ đệm ... Cảm ơn bạn đã phản hồi, tôi sẽ ghi nhớ tất cả những điều này trong tương lai để tham khảo và gỡ lỗi trong tương lai. – askon
@askon: Đó không phải là yếu tố quan trọng, vấn đề chính là bạn đưa vào chỉ thị phải xác thực lại trong tiêu đề Bộ nhớ cache-Kiểm soát. Sử dụng điều đó có nghĩa là css sẽ luôn được tìm nạp lại. Ngoài ra, bạn có đang sử dụng làm mới trang (F5) trong thử nghiệm của mình không? Điều đó sẽ không chứng minh bất cứ điều gì, các tài nguyên như css được nạp lại theo ngữ cảnh làm mới và không có một cơ chế 304 được tích hợp vào mã của bạn, điều này sẽ dẫn đến việc tìm nạp hoàn toàn tài nguyên. – AnthonyWJones
Xin lỗi tôi nên cụ thể hơn một chút. Tôi đã xóa dòng phải xác thực lại, đây là phản hồi tiêu đề của tôi: http://freetexthost.com/zqbddbchvz Điều tôi không hiểu là tôi có thể thử cùng một tập lệnh ngoại trừ một văn bản/javascript tài liệu và nó cho thấy 200 và lưu trữ nó. – askon