Cache

Apache mod_expires

  • February 16, 2012

我對整個訪問和修改感到困惑。

我希望文件被記憶體,直到它們被修改。如果數據相同,則顯示記憶體版本。如果數據已更改,請下載更新版本並記憶體它。

我不明白你為什麼想要不同的東西?所有這些訪問加上 6 個月對我來說沒有意義。如果上次修改日期比記憶體日期新,則請求新文件。這不能以如此簡單的方式完成嗎?

我希望能夠在 2012 年 1 月 1 日創建 index.html 並讓每個人都記憶體它。在我編輯它之前,我不想再次下載它。假設我在 2012 年 1 月 5 日對其進行了編輯,並且自 2012 年 1 月 1 日以來沒有看過 index.html 的人出現了,他們應該看到他們有 1/1/2012 記憶體,但現在該文件的最後一次修改時間為2012 年 1 月 5 日,因此他們下載了 2012 年 1 月 5 日的版本並將其記憶體。

我從不想編輯某些東西並且讓使用者在任何時間都看不到它。我希望在下次請求時查看我的所有編輯。

如何對所有文件執行此操作?

不要做任何事。Apache 已經具備您所期望的開箱即用行為。

當瀏覽器向它已經看到和記憶體的 URL 發出請求,並且使用者沒有明確地強制重新載入時,它會包含一個If-Modified-Since帶有前一個請求的時間戳的標頭。如果伺服器確定該資產自If-Modified-Since時間戳以來沒有更改,則它只響應304 Not Modified. (除了時間戳之外,還有一個名為ETag用於檢查記憶體有效性的標頭,它通過比較內容的雜湊值來工作,但這並沒有給這個討論增加任何內容。)

您想要使用任何mod_expires功能的唯一時間是您想要告訴瀏覽器不要打擾發出 HTTP 請求以檢查記憶體資產是否在一段時間內是最新的。例如,您可以有一個 CSS 文件位於的方案/style.1.css,並將其後續版本命名為/style.2.css/style.3.css等。在這種情況下,您可以通過設置標頭來完全節省 HTTP 請求的成本Expires

引用自:https://serverfault.com/questions/358958