簡體   English   中英

無需驗證的Apache緩存控制

[英]apache cache-control without validation

如何使用命令告訴瀏覽器不要檢查更新的文件,使瀏覽器緩存資產(例如圖像)? 我擁有永遠不會改變的靜態資產,並且不斷要求服務器進行更新是一種浪費。

我的主機未將favicon.ico文件聲明為image / x-icon,因此我需要以下內容

AddType image/x-icon .ico

您設置的到期時間如下,每種類型一次。 這是一個示例集(您可以使用日,周,月等:

ExpiresActive On
ExpiresByType text/css        "access plus 1 month"
ExpiresByType text/javascript "access plus 1 month"
ExpiresByType image/gif       "access plus 1 week"
ExpiresByType image/png       "access plus 1 week"
ExpiresByType image/x-icon    "access plus 1 week"

您可能還希望設置Cache標頭

<FilesMatch "\.(css|js|gif|jpe?g|png|ico)$">
   Header add "Cache-Control" "public, max-age=604800"
</FilesMatch>

根據需要擴展其他類型。 604800 = 1周(以秒為單位)。 如果要更改此數值,請進行數學計算。

瀏覽器如何使用這些標題

RFC 2616(HTTP / 1.1)提出了有關瀏覽器何時以及如何使用此信息的框架建議。 要了解實際情況,請使用Google Chrome開發者視圖(Ctl + Shft + I)網絡標簽。 (大多數其他主流瀏覽器雖然可以通過擴展包提供相同的工具。)但是,這是建議性的,因為用戶可以選擇通過其瀏覽器選項忽略此設置,並始終選擇檢查服務器,或者每個會話檢查一次服務器。 在IIRC中,一些早期的瀏覽器(例如MSIE pre 8)將“每次檢查一次”會話作為默認選項。

同樣,如果您選擇刷新頁面,則大多數瀏覽器都會使用If-Modified-SinceIf-None-Match重新驗證頁面上的所有資源,因此您需要重新訪問鏈接或重新輸入URI才能看到正常的重用動作。 同樣,大多數人將Shift + refresh視為“強制刷新”,即不進行協商。

當我管理OpenOffice.orf用戶論壇時,我曾經分析了一個月的訪問日志,以通過使用簡單的算法來確定何時應緩存重用資源,但仍由客戶端瀏覽器在何處獲取來進行多少緩存。 我驚訝地發現此緩存丟失率超過30%(由於用戶的瀏覽器設置)。 但是,大多數用戶使用谷歌作為知識庫訪問這些用戶論壇,以詢問特定問題,然后查看一些頁面,但在一個月內再也不會返回。 當我將自己限制為主持人的IP(主要使用Ff或Chrome作為其瀏覽器)時,該比率增加到了95%。

因此,客戶端瀏覽器確實會使用此信息,但使用的信息並不像您期望的那樣多。 我還在這里討論,當您不明確請求時,瀏覽器也可以緩存資源。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM