0

我正在尝试将查询字符串附加到所有.js文件的末尾,而不实际进行代码更改。这样做的目的是让静态文件在更改时从服务器而不是缓存中提取,这样我们就没有任何陈旧的静态文件。

所以当我的 html 说

<script type="text/javascript" src="file1.js">

我希望它真正拉

<script type="text/javascript" src="file1.js?v=1">

从服务器。这可能吗?

到目前为止,我有:

RewriteEngine on
RewriteCond %{QUERY_STRING} ^$ 
RewriteRule ^(.*)\.js$ /$1.js?v=1 [L,R]

但我不认为它完全按照我的意愿去做......

4

2 回答 2

0

这将使文件请求的数量增加一倍(在这种情况下为所有 .js 文件),但它应该可以正常工作。

我使用的是目录(有效地修改文件名),而不是查询字符串,因为这是首选技术。[ 1 ][ 2 ]

首先,重定向到不同的文件夹名称

ReWriteRule ^(.*\.js)$ /rev/000/$1 [L,R]

用您的修订号替换000零件(您应该能够自动执行此操作)

L 标志停止处理重写,并且 R 执行 HTTP 重定向,使用新文件名向您的服务器发起第二个请求。

然后捕获使用新“文件夹”标记的请求,并使用不调用另一个请求的重写规则将它们指向原始文件(您的第一个规则将在这段时间内传递)

ReWriteRule ^/rev/[0-9]+/(.*)$ $1
于 2014-01-22T20:23:24.117 回答
0

这没有任何意义:如果资源被缓存并带有到期日期,浏览器将永远不会首先发出请求。

更直接的方法是为 JS 文件设置适当的缓存规则,如下所述:如何防止 Apache httpd (MAMP) 中的 http 文件缓存,根据自己的喜好调整filesMatch指令。

于 2013-09-26T01:58:41.070 回答