IIS 重置是否会强制重新发送缓存项目?

IIS 重置是否会强制重新发送缓存项目?

我正在尝试制定一个策略,以便在我们发布网站更新时处理缓存的 javascript 文件、css、图像等。在我开始在 javascript 文件上实现版本号之前,我想知道每次发布后重置 IIS 是否会导致缓存文件重新发送。

答案1

当您执行 IISReset 时,IIS 缓存将被清除,然后在客户端请求进入后重新启动并开始重建。如果您更新文件,则旧的缓存文件将变得陈旧,并且 IIS 将提供更新的文件并使用新文件更新缓存。

IISReset(虽然很苛刻)将清除 IIS 缓存,但它不会对代理或客户端中的本地缓存执行任何操作。也许您只是对术语有些混淆,但说到缓存,没有“重新发送”的概念。一切都基于请求。如果客户端请求某些内容,并且在缓存中找到它,那么它将从缓存中提供。如果您要保留相同的文件名,则需要强制文件内容过期。

答案2

不,客户端缓存是基于内容过期时间的。

答案3

当您修改一个 javascript 文件时,您需要运行 Web 应用程序的所有客户端来获取新文件,对我来说“最近”的文件很清楚。

对于从服务器获取新文件的每个客户端,您只需要在网页中的 javascript 的 include/script 中包含"?version=1".

只需要一个参数即可?blue=hello,或者?v=1234155您可以根据需要使用。重要的是每次更改 javascript 时使用不同的值。"?version=1"对于第一次更改,"?version=2"对于第二次更改,知道下一个值是实用且唯一的。您也可以根据需要使用 GUID:或者您可以使用2013/02/20 17:50:25 的"?version=4747b320-62ce-11cf-a5d6-28db04c10777"日期和时间。"?version=20130220175025"

示例 #1

<script type="text/javascript" src="http//..../jquery/1.7.1/jquery.min.js?version=1"></script>

示例 #2

<script type="text/javascript" src="http//..../jquery/1.7.1/jquery.min.js?k=4747b320-62ce-11cf-a5d6-28db04c10777"></script>

相关内容