2

如果我编辑 .css 文件并通过 ftp 将其上传到 apache 网络服务器,我需要清除浏览器中的缓存以查看正确的页面。

  1. 为什么会这样?我认为浏览器应该检查 .css 文件的日期以决定从网络或缓存中加载它。

  2. 对于 Web 开发人员来说,问题的正确解决方案是什么?

4

3 回答 3

3

我认为浏览器应该检查 .css 文件的日期以决定从网络或缓存中加载它。

取决于标题。浏览器甚至不需要检查文件是否已被修改,例如,如果 Expires 标头具有未来的日期。这是一件好事,因为它节省了对服务器的请求。

针对 Web 开发人员的解决方案 - 在浏览器的 Web 工具中禁用缓存和/或如果该选项在给定浏览器中不可用,则不断清除缓存。

当您希望更改生效时,您可以更改 CSS 文件名。向 CSS url 添加一个带有修改日期的参数通常就足够了,例如<link rel=stylesheet" href="style.css?20130917" />,但如果您使用附加层(如 CDN),您可能需要使用<link rel=stylesheet" href="style.20130917.css" />一些服务器端魔法来将 filename.[numbers].css 映射到文件名.css。

于 2013-09-18T18:47:12.687 回答
2

您可以使用“hack” - 在加载 css 文件时在文件路径 ?randomNumber=xxxx 之后添加,例如:

/path/to/my/css/file.css?anything=123123

于 2013-09-18T18:45:24.530 回答
1

如果要确保浏览器获取该 CSS 文件的新副本,则需要更改该文件的 URL。但这并不像看起来那么糟糕。在最后修改的日期时间的 CSS 文件末尾附加一个新的查询字符串的常见技巧。这样它只会在文件更改时更改。

<link href="/css/stylesheet.css?20131422080000">
于 2013-09-18T18:44:17.350 回答