- 如果沒有過期的HTTP標頭在響應設置,這是什麼意思爲瀏覽器?
- GlassFish v3中,如何配置到期的已部署在文檔根目錄不能作爲戰爭文件的靜態資源頭?
- 我注意到Glassfish似乎默認設置了ETag標頭。真的嗎? 我希望在這裏實現的最終目標是設置一個遙遠未來的過期標題,但只要部署新版本的css,js,圖像文件就能告訴瀏覽器「有新東西」。
感謝這麼多的任何建議。有關問題expires頭
感謝這麼多的任何建議。有關問題expires頭
對於expires
在服務器響應的報頭沒有提供,見§14.21這裏: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
即使當提供時,expires
由max-age
指令重寫,因此,如果expires
不設置max-age
被使用。如果沒有提供,那麼看到這裏§13.2.4: http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.2.4 基本上它說,客戶端可以爲一個不確定的時間段內設置緩存,並沒有一致。
要解決您的問題,您可能會說您的靜態元素永遠不會過期,併爲HTML文檔的包含元素添加過期時間。要做到這一點,在這裏看到: http://www.tipsandtricks-hq.com/how-to-add-far-future-expires-headers-to-your-wordpress-site-1533
引用:「要添加過期頭圖像,CSS,JavaScript文件添加以下到您的.htaccess
文件
過期頭
> <FilesMatch "\.(ico|jpg|jpeg|png|gif|js|css|swf)$">
> ExpiresDefault "access plus 2 hours"
> </FilesMatch>
或過期images header header
> ExpiresActive On
> ExpiresDefault A0
> ExpiresByType image/gif A2592000
[...] 請記住,當你使用過期頭文件在瀏覽器中緩存,直到它過期,所以不要使用在頻繁變化的文件。如果您更改/更新具有遙遠未來期限的文件(例如,CSS或javascript文件),則應重命名該文件並使用重命名版本,以便瀏覽器不會獲取舊文件。「
感謝您的提示! – 2012-03-01 09:59:25
閱讀http://blogs.msdn.com/b/ie/archive/2010/07/14/caching-improvements-in-internet-explorer-9.aspx背景。
至於你的第二個問題而言,我發現這個有趣的資源:
http://blogs.oracle.com/cwebster/entry/caching_static_resources_in_glassfish
的解決方案呈現不僅僅有配置,但需要將實現和使用的過濾器。
無論不管Expires頭是否設置,實際執行的動作都是依賴於實現的,這只是對瀏覽器的一個建議,任何給定瀏覽器的任何給定版本都可以隨意忽略它。可以追加一個查詢字符串,或者一個版本號,最後修改日期(如果你的樣式表或JavaScript正在改變每天一次超過,你不使用測試或分期正確),或文件的當前校驗和。例如,而不是site.css
,你可以使用
<link rel="stylesheet" href="site.css?lastmodified=20110605">
或
<link rel="stylesheet"
href="site.css?sha1sum=da39a3ee5e6b4b0d3255bfef95601890afd80709">
這不是一個完整的答案,但它更容易在回答中格式化輸出比評論。
Last-Modified
標題,然後瀏覽器不需要expires
頭緩存內容,並知道什麼時候已經過期。expires
頭不需要緩存頁面,它實際上意味着動態內容當你知道(如果它每天生成的圖形爲例)可能的到期日期。文檔到期的方式有很多種。例如,如果指定了文件Last-Modified
頭和正確的內容長度已知,那麼瀏覽器可以緩存頁面,並在下一次可以使用If-Modified-Since
頭,這將導致304 Not Modified
,使瀏覽器可以顯示緩存的內容。所以,如果Last-Modified是有別擔心 - 瀏覽器將始終顯示新版本(除了極少數例外)
也就是說3個問題,而不是一個。 – Raedwald 2015-03-29 17:39:35