Expires
標頭基本上已被HTTP 1.1棄用;改爲使用Cache-Control: max-age
。
確保您包括Last-Modified
。
它是可選的,但您可能還想指定Cache-Control: must-revalidate
,以確保中間代理不會傳遞可能過時的內容。
您無需設置ETag
。
實施例請求:
GET http://localhost/images/logo.png HTTP/1.1
Accept: image/png, image/svg+xml, image/*;q=0.8, */*;q=0.5
Referer: http://localhost/default.aspx
Accept-Language: en-US
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Accept-Encoding: gzip, deflate
Host: localhost
Connection: Keep-Alive
該響應包括所請求的內容:10秒超時之前作出
HTTP/1.1 200 OK
Cache-Control: max-age=10
Content-Type: image/png
Last-Modified: Sat, 21 Feb 2009 11:28:18 GMT
Accept-Ranges: bytes
Date: Sun, 18 Dec 2011 05:48:34 GMT
Content-Length: 2245
請求從高速緩存解決,沒有HTTP請求。超時後:
GET http://localhost/images/logo.png HTTP/1.1
Accept: image/png, image/svg+xml, image/*;q=0.8, */*;q=0.5
Referer: http://localhost/default.aspx
Accept-Language: en-US
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
If-Modified-Since: Sat, 21 Feb 2009 11:28:18 GMT
Host: localhost
的反應僅僅是標題,沒有內容:
HTTP/1.1 304 Not Modified
Cache-Control: max-age=10
Last-Modified: Sat, 21 Feb 2009 11:28:18 GMT
Accept-Ranges: bytes
Date: Sun, 18 Dec 2011 05:49:04 GMT
後續請求再次從瀏覽器的緩存解決,直到指定緩存過期時間。
這真的值得優化嗎?每週只發送一次身體已經很好的優化了。身體是如此帶寬消耗? –
您應該顯示響應/請求+響應代碼中的頭部,304響應(未修改)不會阻止使用新頭部,並且必須包含Date頭部。 – bestsss
@JBNizet我相信他的問題是,如果資源被修改,瀏覽器現在會重新檢查每次訪問,因爲它沒有收到更新的「下一個星期一重試」。瀏覽器只看到「該文件已超過7天,我必須重試」。解決方法可能是每週強行發送一次,即強制每週一次有一個「新」版本,即使它實際上是相同的。 –