我與IIS和ASP的工作,我們需要緩存的網站(做Google Page Speed,我的老闆,快樂)。我們目前有IIS緩存一切(asp/JS/CSS)爲期1周。
問題:
更新的ASP頁面的HTML內容後,我的老闆看到舊版本的頁面,直到他做了(力)刷新。
問:
我怎麼能(力)更新服務器緩存我做出改變的ASP HTML內容之後?
我希望我的同事和管理人員能夠查看最新更改,而不必強制瀏覽器刷新。
我與IIS和ASP的工作,我們需要緩存的網站(做Google Page Speed,我的老闆,快樂)。我們目前有IIS緩存一切(asp/JS/CSS)爲期1周。
問題:
更新的ASP頁面的HTML內容後,我的老闆看到舊版本的頁面,直到他做了(力)刷新。
問:
我怎麼能(力)更新服務器緩存我做出改變的ASP HTML內容之後?
我希望我的同事和管理人員能夠查看最新更改,而不必強制瀏覽器刷新。
您是否配置爲使用「If-Modified-Since」HTTP標頭?
斯科特Hanselman的博客這樣的解釋給你和你在找什麼想法 - Forcing an update of a cached JavaScript file in IIS
一個有用的入門讓我們看看,如果我們可以讓老闆高興。和你一樣,我有一些人認爲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
我們有多種選擇和方法,以觸發我們的頭改變。 你可以在這個例子中使用會話,餅乾,數據庫更新等,我使用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"))
如果您的網站有登錄和成員會話設置,您可以將它包裝在「Session(」AUTH「)」中。 除此之外,僅當會話(「EditedPageFullRUL」的長度大於1時纔會觸發。
這將更新老闆瀏覽器頭,迫使瀏覽器刷新本地緩存。 這是一次性交易,因此任何額外的頁面刷新都使用標準標題。
這樣做有很多方法,所以要有創意!