淺析ASP.NET頁(yè)面緩存的幾點(diǎn)體會(huì)
盡管本文的作者寫的很簡(jiǎn)單,但是相信通過這些文字,還是能對(duì)大家了解ASP.NET頁(yè)面緩存有很大的幫助。
前幾天遇到個(gè)問題,百思不得其解。后來查閱了一些資料心里才有了點(diǎn)思路。把自己遇到的問題記錄下來希望能給其他的園友一些幫助吧。
事情是這樣的。我的一個(gè)ASP.NET頁(yè)面用window.open導(dǎo)航后再次訪問時(shí)沒有得到更新,確切的說是再次訪問時(shí)根本就沒有訪問服務(wù)器??墒沁@個(gè)現(xiàn)象在我的機(jī)器上并沒有出現(xiàn),而項(xiàng)目組中其他的機(jī)器都有此問題。當(dāng)時(shí)我這個(gè)郁悶吶,因?yàn)椴环奖阏{(diào)試,最后就在頁(yè)面上輸出好多alert。終于在幾次試驗(yàn)之后發(fā)現(xiàn)了問題的所在。
其主要問題就是IE緩存了頁(yè)面,當(dāng)服務(wù)器端出現(xiàn)更新時(shí)IE并沒有檢查到。我的機(jī)器沒有問題是因?yàn)槲业膇e設(shè)置為每次訪問頁(yè)面都要檢查更新,他們的則是自動(dòng)檢查更新。由于我再次導(dǎo)航到頁(yè)面用的是前端的window.open方法,此方法不能使瀏覽器的自動(dòng)檢查起作用。
上面的敘述比較亂,不知道大家能不能看懂。下面我說下具體的解決方法吧。
方法一:導(dǎo)航時(shí)用服務(wù)器端的Response.Redirect方法,或者用前端得window.location.replace方法。
方法二:禁用ASP.NET頁(yè)面緩存。
在必要的時(shí)候我還是推薦方法二的。因?yàn)槲覀冏鲩_發(fā)的不能控制瀏覽器的設(shè)置。用戶如果把IE設(shè)置為從不檢查更新緩存的問題則不好避免,所以還是用方法二,讓IE的臨時(shí)文件夾不存在頁(yè)面文件。
另外,是否禁用頁(yè)面緩存要根據(jù)實(shí)際情況來說,起初我認(rèn)為頁(yè)面緩存只是緩存在服務(wù)器,后來看了一篇blog
發(fā)現(xiàn)緩存的意義還是很大的。在很多情況下可以大大減小服務(wù)器的壓力。只不過開發(fā)過程中要多多從需求出發(fā),不能盲目的設(shè)置什么屬性。
原文標(biāo)題:asp.net頁(yè)面緩存的學(xué)習(xí)
鏈接:http://www.cnblogs.com/417533880/archive/2009/10/09/1579629.html
【編輯推薦】