如果在 .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" />

相关内容