我已經瞭解瞭如何gzip一個css文件,其中創建了一個公共php文件以包含壓縮的css文件。問題是我無法讓它緩存我的CSS文件。我使用的是Firebug的參考,我實際上已經嘗試使用相同的代碼來壓縮一些JavaScript,並緩存它很好。緩存gzipped css
下面是代碼:
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(); }
然後,我只是引用我的PHP文件上的其他頁面的CSS文件。 正如你可以看到我已經嘗試添加最大年齡的混合,這也證明不成功。
這裏是響應頭
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
有什麼我失蹤,或更好的方式去這樣做呢?
感謝,
編輯:
檢測該文件是否已被變更&發送304如果還沒有,在適當頭相結合,解決了這個問題的腳本。
亞瑟
嘿安東尼, 我已經嘗試添加最後修改,就像你建議與後期和以前的修改日期的組合,沒有運氣。 我也通過ETag發送標頭,如果修改後,它仍然沒有緩存... 感謝您的回覆,我將把所有這些記在心,以備將來參考和調試。 – askon 2009-07-21 20:53:07