這是正確的嗎?
是的,過期和最大年齡做同樣的事情,但以兩種不同的方式。與Last-Modified和Etag相同的東西
如果是這樣,我應該怎麼做 expires或max-age?
過期依賴於用戶時鐘的準確性,所以它通常是一個糟糕的選擇(因爲大多數瀏覽器支持HTTP/1.1)。使用max-age,告訴瀏覽器該文件在很多秒鐘內都有效。例如,1天的緩存將是:
緩存控制:最大年齡= 86400
注意,當兩個Cache-Control
和Expires
存在,Cache-Control
優先。 read
如果我還必須做Last-Modified或ETag,那是哪一個?我想我得到最後修改
你是對的,Last-Modified應該更好。雖然是時候了,但它是由服務器發送的。因此用戶的時鐘沒有問題。瀏覽器發送的最後修改服務器發送的最後一次請求的文件,如果是相同的,服務器answsers空響應«304未修改»
另外,哪些文件,我應該使瀏覽器緩存?
所有文件都有益於緩存。你有兩種不同的方法:
- max-age:適用於永不改變的文件(圖像,CSS,javascript)。只要最大年齡值,瀏覽器就不會向服務器發送任何請求。所以你會看到第二次加載時頁面加載非常快。如果您需要更新文件,只需添加一個問號,更改日期(例如/image.png?20110602,或者更好的代理中的緩存,像/20110602/image.png或/image.20110602.png) 。這樣,如果文件緊急,可以使文件過期(請記住,瀏覽器在有最大文件時幾乎不會訪問服務器)。主要用途是加快速度並限制發送到服務器的請求。
- 憑藉最後修改:可以在所有文件中設置(包括那些具有最大年齡)。即使你有動態頁面,你也不能在一段時間內改變文件的內容(即使它是10分鐘),所以這可能是有用的。這裏的主要用途是告訴瀏覽器「不斷要求我提供這個文件,如果它是新的,我會給你發送新的文件」。因此,每個頁面加載都會發送一個請求,但如果文件已經很好(304未修改),則答案爲空,因此可以節省帶寬。
您緩存越多,速度就越快的頁面會顯示出來。但沖洗緩存是一項艱鉅的任務,請小心使用。
一個良好的學習這一切都與許多解釋:http://www.mnot.net/cache_docs/
感謝提供解釋。但是,我仍然很難嘗試瞭解如何真正實現您的建議,以實現最大化和最後修改。我在哪裏可以找到一些實際代碼的例子,我將把它們放在我的htaccess中?我是否需要列出每個圖像?我想我基本上理解這裏的概念,但需要一些更明確的幫助,看看在htaccess中看起來會是什麼樣子。 – Andy 2011-06-25 01:56:39
查看在Apache手冊的例子:http://httpd.apache.org/docs/2.3/fr/mod/mod_expires.html(模塊失效)。例如:ExpiresByType image/gif M604800將在7天后自動修改GIF圖像(7 * 86400)。您會在同一頁面上找到許多其他示例。 Last-Modified也可能被髮送,但我不使用Apache,因此我沒有對此進行測試。 – Yvan 2011-08-01 13:13:15
Apache網址壞了,但在這裏archive.org住在:(FR)https://web.archive.org/web/20120418030430/http://httpd.apache.org/docs/2.3/fr/mod /mod_expires.html或https://web.archive.org/web/20120418030430/http://httpd.apache.org/docs/2.3/en/mod/mod_expires.html(EN) – ledlogic 2014-01-29 15:53:42