2010-03-24 34 views
2

我想驗證我的頁面的圖像,CSS和JavaScript文件是由我的瀏覽器緩存。我使用了Fiddler和Google Page Speed,目前還不清楚是否給我提供了我需要的信息。 Fiddler顯示圖像,CSS和JavaScript的HTTP 304響應,它應該告訴瀏覽器使用緩存副本。 Google Page Speed顯示304響應,但不顯示「傳輸大小零」,而是顯示資源的完整文件大小。還要注意,我已經看到Google Page Speed報告了一個200響應,但接着把這個詞(高速緩存)放在200旁邊(所以狀態是200(高速緩存)),這沒有什麼意義。如何驗證JavaScript和圖像是否被緩存?

任何其他的建議,我可以驗證服務器是否發回圖像,CSS,JavaScript後,他們已被檢索和緩存的前一頁打?

回答

6

在瀏覽器中HTTP調試器可能是最容易使用的情況。嘗試使用HTTPFox for Firefox或內置蜻蜓的Opera。這兩個都表示何時使用本地瀏覽器緩存。

如果您看起來有衝突的信息,那麼wireshark/tcpdump會顯示您是否正在下載對象,因爲它正在監視正在傳輸和接收的實際網絡數據包。如果您之前沒有查看過網絡痕跡,那麼最初可能會有點混淆。

+0

試用HTTPFox,但無法找到它的文檔。對於導致304響應的資源,它顯示接收文件大小爲(XXX),例如(1134);對於200響應,它沒有括號,例如1134.括號是否表明它在本地被緩存,並且文件實際上並未被轉移? – BestPractices 2010-03-24 15:14:56

+0

當然可以。 304響應不具有列出大小的身體。 – hobbs 2010-03-27 08:22:58

2

在fiddler中,檢查響應正文(對於圖像,css)是空的。還要確保您的最大年齡在Cache-Control標題中足夠長。大多數瀏覽器(Safari,Firefox)都有很好的流量分析工具。

+0

所以它會再次提出請求,但只是迴應一個空的迴應?我認爲瀏覽器不會重新請求資源,如果它已被緩存。 – Merritt 2010-03-24 15:13:59

+0

它再次提出請求 - 服務器告訴瀏覽器資源是否未被修改(通過給它一個304響應)。看起來像這樣:HTTP/1.1 304 Not Modified Date:Wed,24 Mar 2010 14:51:02 GMT。 X-Powered-By:Servlet/2.5 JSP/2.1 – BestPractices 2010-03-24 15:19:22

+1

客戶端可能會使用緩存副本,並且不會在_max-age_或_Expires_頭期滿前發出新請求,之後可能會詢問服務器文件是否仍未更改(如果-Modified-Since的)。其他緩存機制也存在,例如, ETAG。見http://www.mnot.net/cache_docs/和http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html – jholster 2010-03-24 21:35:51

0

HTTP/304響應被禁止有一個主體。因此,不會發送完整響應,而只是返回304響應的標題。但往返本身並不是免費的,因此發送適當的過期信息是改善性能的良好實踐,以避免首先返回返回304的條件請求。

http://www.fiddler2.com/redir/?id=httpperf解釋了這個話題的一些細節。

1

您的服務器訪問日誌可以爲您提供很多有關緩存策略有效性的信息。

可以說你有一個html頁面/home.html,它引用了/some.js和/lookandfeel.css。對於給定的時間段,將請求數量聚合到所有三個文件。

如果你的緩存有效,你會看到大量的home.html請求,但對於css或js很少。之間的某處是你看到所有3個請求的數量相同,但css和js有304個。最糟糕的是當你只看到二十幾歲時。

顯然,你必須知道你的應用程序來做這樣的研究。 js和css文件可能會在多個頁面之間共享 - 這可能會使分析變得複雜。但總的想法仍然很好。

這樣一項研究的優勢在於,您可以找出緩存策略對用戶的有效性,而不是「緩存在我的機器上工作」。但是,這不能代替使用http代理/提琴手。

+0

有用的建議 - 謝謝! – BestPractices 2010-03-28 14:09:22