2010-07-31 37 views
17

谷歌瀏覽器的審覈。如果我跑我的網站與谷歌瀏覽器的審覈,我得到的槓桿瀏覽器緩存部分這樣的信息:上緩存

以下資源缺少一個 緩存過期。那些 沒有指定到期的資源可能不被 緩存的瀏覽器:

所有的圖片列表如下。我收到了類似的通知在槓桿代理緩存

考慮增加一個「緩存控制: 公共」頭以下 資源:

除了照片,我也得到了關於HTML,CSS和JavaScript文件的注意事項:

以下資源顯式爲 不可緩存。考慮邀請他們 緩存如果可能的話:

它很有趣,因爲我辛辛苦苦緩存所有靜態內容(除了圖片,在這裏我剛離開Apache的默認設置)。 Firefox確實將所有這些項目存儲在緩存中。

有什麼我應該改進我的HTTP頭文件?


下面是刪除瀏覽器caché後加載的一些項目的完整標題集。圖片使用默認設置,我以前沒有真正檢查過,其餘的應該是cachéd三個小時。我可以使用.htaccessPHP設置標題。

PNG

HTTP/1.1 200 OK 
Date: Sat, 31 Jul 2010 12:46:14 GMT 
Server: Apache 
Last-Modified: Thu, 18 Mar 2010 21:40:54 GMT 
Etag: "c48024-230-4821a15d6c580" 
Accept-Ranges: bytes 
Content-Length: 560 
Keep-Alive: timeout=4 
Connection: Keep-Alive 
Content-Type: image/png 

HTML

HTTP/1.1 200 OK 
Date: Sat, 31 Jul 2010 12:46:13 GMT 
Server: Apache 
X-Powered-By: PHP/5.2.11 
Expires: Sat, 31 Jul 2010 15:46:13 GMT 
Cache-Control: max-age=10800, s-maxage=10800, must-revalidate, proxy-revalidate 
Content-Encoding: gzip 
Vary: Accept-Encoding 
Last-Modified: Wed, 24 Mar 2010 20:30:36 GMT 
Keep-Alive: timeout=4 
Connection: Keep-Alive 
Transfer-Encoding: chunked 
Content-Type: text/html; charset=ISO-8859-15 

CSS

HTTP/1.1 200 OK 
Date: Sat, 31 Jul 2010 12:48:21 GMT 
Server: Apache 
X-Powered-By: PHP/5.2.11 
Expires: Sat, 31 Jul 2010 15:48:21 GMT 
Cache-Control: max-age=10800, s-maxage=10800, must-revalidate, proxy-revalidate 
Content-Encoding: gzip 
Vary: Accept-Encoding 
Last-Modified: Thu, 18 Mar 2010 21:40:12 GMT 
Keep-Alive: timeout=4 
Connection: Keep-Alive 
Transfer-Encoding: chunked 
Content-Type: text/css 

的JavaScript

HTTP/1.1 200 OK 
Date: Sat, 31 Jul 2010 12:48:21 GMT 
Server: Apache 
X-Powered-By: PHP/5.2.11 
Expires: Sat, 31 Jul 2010 15:48:21 GMT 
Cache-Control: max-age=10800, s-maxage=10800, must-revalidate, proxy-revalidate 
Content-Encoding: gzip 
Vary: Accept-Encoding 
Last-Modified: Thu, 18 Mar 2010 21:40:12 GMT 
Keep-Alive: timeout=4 
Connection: Keep-Alive 
Transfer-Encoding: chunked 
Content-Type: application/x-javascript 

更新

我測試過Jumby的建議,並把我的CSS的過期1年:

Cache-Control:max-age=31536000, s-maxage=31536000, must-revalidate, proxy-revalidate 
Connection:Keep-Alive 
Content-Encoding:gzip 
Content-Length:4198 
Content-Type:text/css 
Date:Mon, 02 Aug 2010 20:48:56 GMT 
Expires:Tue, 02 Aug 2011 20:48:56 GMT 
Keep-Alive:timeout=5, max=99 
Last-Modified:Thu, 18 Mar 2010 20:40:12 GMT 
Server:Apache/2.2.14 (Win32) PHP/5.3.1 
Vary:Accept-Encoding 
X-Powered-By:PHP/5.3.1 

然而,Chrome仍然會聲稱 「明確無緩存」。

+0

只是得到了類似的問題,無論我做什麼,鉻審計保持竊聽。 – axkibe 2012-06-14 09:26:37

回答

4

3小時過期對於yslow /頁面速度的東西可能不夠「時間」​​,他們可能會抱怨它。我已經看到這與我的網站上的靜態內容與4小時到期& yslow(沒有嘗試谷歌的東西)。

多數那些想版本靜態內容與LONG到期時間(如1年);看到here

+0

我試過了您的建議(請參閱我編輯的帖子),但Chrome仍然抱怨。我試圖忽略它並使用其他工具。即使Chrome瀏覽器稍後訪問該頁面,也會從caché加載文檔。 – 2010-08-02 20:58:48

+1

嘗試消除/修改標題,以查看是否可以確定是由哪個標題引起的。我會嘗試使用Cache-Control:public。此外,結帳redbot.org並輸入您的靜態內容的URL。 – 2010-08-02 22:12:57

+3

http://redbot.org是一個偉大的工具(它也解釋了爲什麼「緩存控制:公衆」在大多數情況下是不必要的)。我需要仔細看看靜態內容緩存,但我相信Chrome的審計功能只是越野車。 – 2010-08-23 09:49:09

2

的問題是緩存控制指令的「必須重新驗證」的一部分。擺脫這一點,你應該很好去。

+0

是的,但爲什麼它是一個問題? Chrome的消息是否有誤導性?不正確的?巧妙地正確? – 2014-12-02 21:26:03

+0

我可以驗證,如果刪除「必須重新驗證」,Chrome瀏覽器審覈將不會抱怨這些終端無法緩存。考慮到RFC中描述的行爲,這似乎沒有意義。我想知道Chrome如何處理「必須重新驗證」...... – wprl 2015-08-11 20:26:18

0

我剛剛得到一個類似的問題,我發現了同樣的設置,並在127.0.0.1我的測試服務器上嘗試時,而不是一個真正的DNS名稱的真實服務器上的代碼產生鉻審計警告。