IIS重置会强制重新发送缓存的项目吗?


10

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

Answers:


8

当您执行IISReset时,将清除IIS缓存,然后在客户端请求进来备份后开始重新构建IIS缓存。如果更新文件,则较早的缓存文件将变得过时,并且IIS将为更新的文件提供服务,并且使用新文件更新缓存。

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


谢谢您的帮助。请原谅我在这方面的无知...我在客户端和IIS缓存之间感到困惑。“重发”一词是指服务器发送内容,而不是从客户端的缓存中提取内容。
DaveK's

@完全不用担心,很高兴它有所帮助!另外一点,如果文件位于客户端高速缓存或上游代理高速缓存中,则服务器甚至不会收到请求,除非高速缓存的项陈旧并且服务器上有可用的新版本。
squillman's


3

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

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

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

例子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>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.