为啥要在图像和 css 文件之后查询字符串?

Posted

技术标签:

【中文标题】为啥要在图像和 css 文件之后查询字符串?【英文标题】:Why querystrings after images & css files?为什么要在图像和 css 文件之后查询字符串? 【发布时间】:2012-07-09 00:31:52 【问题描述】:

我在各种网站上看到了一个查询字符串,后跟一个数字,用于图像和 css 文件。当我查看源代码(通过 Chrome 开发人员)时,缓存的 css 文件和图像的名称中没有查询字符串中的数字。我还在网站上看到刷新页面时查询字符串中的数字会发生变化。

例如:

myimage.jpg?num=12345

myStyles.css?num=82943

刷新后:

myimage.jpg?num=67948

myStyles.css?num=62972

谁能向我解释这些没有跟踪的查询字符串的目的可能是什么?

【问题讨论】:

更改数字以防止缓存,因为它总是看起来像一个不同的文件。 What does '?' do in a Css link?的可能重复 【参考方案1】:

查询字符串用于版本控制,它强制导航器重新加载 css 和图像,而不是使用缓存

【讨论】:

【参考方案2】:
    防止缓存(查询字符串可以在每次文件更新时提供唯一的 URL,从而导致浏览器下载新副本,而不是从缓存中加载过时的副本) 版本控制(类似于 #1,但目的更具体)

【讨论】:

【参考方案3】:

开发人员经常使用带有随机数(或版本号)的查询字符串来强制浏览器请求新副本并避免缓存这些文件,因为每次请求都不同。

所以如果你有一个文件/image.png,但它是一个生成的图像,比如验证码或其他东西,你可以在它后面加上一个随机数查询字符串/image.png?399532,然后浏览器不会从其拉取image.png缓存,而是从服务器下载新副本。

【讨论】:

以上是关于为啥要在图像和 css 文件之后查询字符串?的主要内容,如果未能解决你的问题,请参考以下文章

何时/为啥要在 SQL 中使用 QUOTENAME?

为啥 apache2 试图执行我的 CSS 和图像文件?

机器人框架为啥要在命令字符串中加引号?

为啥要在项目中使用#include_next?

为啥以文本形式打开图像文件会打印出奇怪的字符?

为啥要在 SQL 中使用 WHERE 1=0 语句?