2

在查看了一些 HTML 源之后,我发现了一些针对 css 和 js 的“毫无意义”的文件包含。

我称之为“毫无意义”,因为,

  1. <script src="some_file.js?123"></script>总是完全等于(大小以字节为单位)到
  2. <link href="some.css?var=val" rel="stylesheet" type="text/css" />=== 和前面提到的一样。
  3. 正如我们所知,通常客户端技术无法解析来自 HTTP(意味着来自 POST 和 GET)的变量,这项工作适用于服务器端。

所以问题是,为什么人们使用这个?想/不使用这个?

谢谢。

4

2 回答 2

6

通常这样做是为了防止浏览器缓存静态文件。

于 2012-05-27T00:24:57.577 回答
3

正如 WojtekT 所建议的那样,查询部分可用于防止缓存(是否成功或有用是另一个问题),但它也可用于将数据传递给生成或提供资源的进程。例如,some.css?var=rel可能会导致生成的样式表版本不同,或样式表完全不同some.css。例如,该参数可以用于传递用户选项(可能比 cookie 或 HTML 存储更笨拙,但仍然可能)。

您的假设 3 在两个方面是错误的。首先,常见的客户端技术(client-side JavaScript)可以轻松处理 GET 变量。其次,这与客户端无关。浏览器处理该引用some.css?var=val以构造一个绝对 URL,保留查询部分,然后向服务器生成一个 GET 请求(传递查询部分),除非它发现资源在浏览器的缓存中。

于 2012-05-27T05:05:05.597 回答