如果我编辑 .css 文件并通过 ftp 将其上传到 apache 网络服务器,我需要清除浏览器中的缓存以查看正确的页面。
为什么会这样?我认为浏览器应该检查 .css 文件的日期以决定从网络或缓存中加载它。
对于 Web 开发人员来说,问题的正确解决方案是什么?
如果我编辑 .css 文件并通过 ftp 将其上传到 apache 网络服务器,我需要清除浏览器中的缓存以查看正确的页面。
为什么会这样?我认为浏览器应该检查 .css 文件的日期以决定从网络或缓存中加载它。
对于 Web 开发人员来说,问题的正确解决方案是什么?
我认为浏览器应该检查 .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。
您可以使用“hack” - 在加载 css 文件时在文件路径 ?randomNumber=xxxx 之后添加,例如:
/path/to/my/css/file.css?anything=123123
如果要确保浏览器获取该 CSS 文件的新副本,则需要更改该文件的 URL。但这并不像看起来那么糟糕。在最后修改的日期时间的 CSS 文件末尾附加一个新的查询字符串的常见技巧。这样它只会在文件更改时更改。
<link href="/css/stylesheet.css?20131422080000">