情境:
我正在使用IIS和ASP,我们需要缓存网站(使Google Page Speed和我的老板很高兴)。我们目前有1个星期的IIS缓存所有(asp / JS / CSS)。
问题:
更新ASP页面上的HTML内容后,我的老板会看到旧版本的页面,直到他进行(强制)刷新。
问题:
在更改ASP HTML内容后,如何(强制)更新服务器缓存?
我希望我的同事和经理能够看到最新的更改,而不会让他们强制浏览器刷新。
答案 0 :(得分:1)
您是否配置为使用" If-Modified-Since" HTTP标头?
对Scott Hanselman博客的这一解释为您提供了所需信息 - Forcing an update of a cached JavaScript file in IIS
提供了有用的入门读物答案 1 :(得分:0)
让我们看看我们是否能让老板开心。和你一样,我有一些人认为F5或Ctrl + F5很烦人。
快速查看,以确保您的IIS服务器上的输出缓存正在更新。更改让我们将其设置为" 缓存直到更改"。 我读到你每周都要清除它,但如果事情没有改变......为什么?
设置客户端浏览器缓存默认值。 并且您对所有页面标题都有以下内容,使页面在使用GMT时间30分钟后过期。 主标题:
Dim dtmExp
Response.Buffer = True
Response.CharSet = "UTF-8"
dtmExp = DateAdd("n", 30, Now())
Response.ExpiresAbsolute = dtmExp
Response.Expires = dtmExp
我们有几个选项和方法可以触发标题更改。 您可以在此示例中使用会话,Cookie,数据库更新等。我可以使用Sessions随时更改内容以更好地适应您的应用程序。
PageEdit.asp
Session("EditedPageFullURL") = "/yourpage.asp"
在常用功能页面中添加以下内容。
Function EditorsReload(eChk,erURL)
If IsNumeric(eChk) Then
Session("Editing") = eChk
End If
If Len(erURL) = 0 Then
Exit Function
End If
If Session("Editing") <> "" Then
If Session("Editing") = 1 Then
If (LCase(erURL) = LCase(Request.ServerVariables("SCRIPT_NAME"))) Then
Session("Editing") = ""
Session("EditedPageFullURL") = ""
Response.Expires = -1
Response.ExpiresAbsolute = Now() -1
Response.AddHeader "pragma", "no-store"
Response.AddHeader "cache-control","no-store, no-cache, must-revalidate"
End If
End If
End If
End Function
将以下内容放在您可能拥有的任何标题下方的页面中。
Call EditorsReload(1,Session("EditedPageFullURL"))
您可以将其包装在&#34;会话中(&#34; AUTH&#34;)&#34;如果您的网站设置了登录和成员会话。 除此之外,只有在Session(&#34; EditedPageFullRUL&#34;长度大于1)时才会触发。
这将更新老板浏览器标题,强制浏览器刷新本地缓存。 这是一次性交易,因此任何额外的页面刷新都使用标准头文件。
有很多方法可以做到这一点,所以要有创意!