如果在.htaccess中使用mod_expires,客戶端將下載修改後的文件

如果在.htaccess中使用mod_expires,客戶端將下載修改後的文件

我正在嘗試使用快取來加快網站的回應時間。我讀過的大多數文件都建議將過期時間設定為從訪問時間起 +1 個月,如下所示:

ExpiresActive On
ExpiresByType text/css "access plus 1 month"

我擔心如果我更新 css 文件,客戶端將無法取得更新的文件。

如果檔案被修改,是否可以確保客戶端下載新版本的檔案?

非常感謝任何幫助

答案1

您的擔憂是正確的 - 瀏覽器檢索到該文件的客戶端通常要到訪問該文件 1 個月後才會收到更新版本,除非他們碰巧清除了瀏覽器快取或在頁面上重新加載。

解決此問題的一種方法是,當您更新 CSS 文件時,將引用它的 HTML 更改為在連結標記的 href 屬性末尾(即在 .css 之後)添加 ?v=2 或 ?v=3 等。瀏覽器將其視為唯一的 URL,因此下載新副本,但它將指向伺服器上相同的實體 .css 檔案。

<link rel="stylesheet" type="text/css" href="/styles.css" />

變成

<link rel="stylesheet" type="text/css" href="/styles.css?v=2" />

相關內容