亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

頁面緩存『轉』

系統 1876 0

一般情況下,WEB頁面都會在Internet臨時文件夾中有一個臨時文件.
我在操作IE時會出現這種情況:
假如說有一個頁面Page1.aspx,在我第一次訪問后,它會在我的Internet臨時文件夾里有一個Page1.aspx文件生成.之后,如果我改了Page1.aspx的數據后再次訪問該頁面,發現IE并沒有對這個Page1.aspx的數據進行更新,反而打開的是我第一次訪問的頁面.為什么會這樣,是因為IE自動(默認)調用了Internet臨時文件夾里有一個Page1.aspx文件,而不是重新下載新的Page1.aspx.
怎樣能讓IE自動重新下載新的Page1.aspx呢?
一種方法是對Internet選項進行設置.
Internet選項-->常規-->Internet臨時文件中"設置"-->每次訪問此頁時檢查.
這種設置時最好同時刪除臨時文件.
這種方法是讓客戶自己設置自己的瀏覽器,如果客戶忘記了設置,那么,新的頁面總是下載不到本地.這時,客戶會怎樣認為呢?("肯定是程序的錯!"其實也不是程序的錯,但是用程序完全可以解決這個問題)
第二種方法:用程序自己來讓頁面自動下載.
這種方法實際上是讓頁面不保存到Internet臨時文件夾中,每次訪問頁面都會讓瀏覽器下載頁面.
只要在aspx.cs代碼的Page_Load事件中加上

Context.Response.Cache.SetCacheability(HttpCacheability.NoCache);

即可.

不防你試試.在不加這句時,你打開頁面,Internet臨時文件夾里會有一個頁面文件,而加了,就會沒有了.
不過,像aspx文件中如果有圖片文件或js文件,那還是會下載到Internet臨時文件夾的.


-------------------------------------------------------------------------------------------------------------------


頁面緩存

使用 OutputCache 指令。

<%@ OutputCache Duration="3600"

????????????? ? Location="Any"

????????????? ? VaryByCustom="browser"

????????????? ? VaryByParam="RequestID" %>

其中 Duration VaryByParam 特性是必須的。

?

Location 控制頁面緩存的位置

Location

含義

Any

默認值。意味著頁面的輸出可以緩存在客戶端瀏覽器,緩存在任何“下游”的客戶端(如代理服務器),或緩存在 Web 服務器本身

Client

指明輸出緩存只能存儲在發出請求的客戶端(即瀏覽器)的本地緩存中

Downstream

指明輸出緩存能存儲在任何支持 HTTP1.1 緩存的設備(如代理服務器)中

Server

指明輸出緩存將存儲在 Web 服務器上

None

指明該頁面禁用輸出緩存

?

Duration 允許我們控制頁面在緩存中生存的時間(單位是秒)

?

VaryByParam 允許我們緩存頁面的不同版本。在上面的例子中, VaryByParam 設為了 RequestID ,所以 ASP.NET 使用 RequestID 參數的不同值,這些值或者是在 HTTP GET 的查詢字符串中傳入,或者是在 HTTP POST 的參數中傳入。可以通過檢查 RequestID 參數的值讓應用程序區分不同的用戶;通過在頁面的 OutputCache 指令中放置 VaryByParam "RequestID" ,可以讓 ASP.NET 為每個用戶緩存頁面的不同版本。

如果不想根據參數的值緩存頁面的不問版本,那么只要把 VaryByParam 設為 none 。

也可以要求 ASP.NET 為每個可能的參數組合緩存頁面的一個版本。為此,可把 VaryByParam 設為 * 。

?

VaryByHeader VaryByCustom 特性與 VaryByParam 的相似之處在于,它們允許指定何時應創建頁面新的緩存版本。

VaryByHeader 允許我們根據由分號分隔的 HTTP 頭的列表末緩存頁面的不向版本。

VaryByCustom 當設為 browser 時,允許我們根據瀏覽器的名稱和主版本信息緩存不同版本。也可以把它設為一個自定義方法的名稱,從而實現我們自己的邏輯,控制緩存的版本。

?

片斷緩存

可以利用用戶控件將頁面分段,在 ascx 文件中寫入緩存的語句,而不在 aspx 文件中寫緩存語句,這樣 ASP.NET 就可以只緩存 ascx 片斷的輸出了。一般像頁眉或頁腳基本上都是一樣的,就不需要重新加載。但是如果其中有動態變化的數據就不能對其進行緩存,因為一旦被緩存后程序就不會再創建它的實例來更新數據顯示,只有等到生存期過期才行,所以對于這種情況就不適于用頁面片斷緩存。

注意:

一、注意片段緩存不支持 Location 特性;緩存頁面片段惟一合法的地方是 web 服務器。這是因為片段緩存在 ASP.NET 中是新的功能,所以瀏覽器和代理服務器不支持。

二、片段緩存有另外一個在頁面緩存中沒有的特性—— VaryByControl 。 VaryByControl 特性允許指定一個由分號分隔的字符串列表,代表用戶控件內使用的控件的名稱; ASP.NET 將針對值的每個不同的組合生成用戶構件的一個緩存版本。

?

數據緩存

低級 API Cache 類,它位于 ASP.NET 中的 System.web.Caching 命名空間,可以用它緩存生成很耗費資源的數據。 Cache 類的使用和 Session Application 對象一樣簡單。每個應用程序只有一個 Cache 對象——這意味著使用 Cache 對象存儲在緩存中的數據是應用程序級別的數據。使事情更為簡單的是, Page 類的 Cache 屬性使應用程序的 Cache 對象實例能在代碼中使用。

通過 Cache 對象緩存的數據存儲在應用程序的內存中。這意味著該數據的生存期不會超過應用程序的重啟 ( 事實上,這和存儲在 Application Session 對象中的數據一樣,除非使用 StateService SQL State 會話模式存儲 Session 數據 )

具體的使用和語法與 Session Application 一樣。轉換回來的時候需要注意對其進行相應類型的強制類型轉換。

?

這不是在 ASP.NET 緩存中添加緩存項的惟一方式。 Cache 對象有兩個方法 Insert() 方法和 Add() 方法,它們靈活性更高。它們的用法近似,但稍有不同:

Insert() 方法用于覆蓋 ASP.NET 緩存中現有的緩存項。

Add() 方法只用于在 ASP.NET 緩存中添加新的緩存項 ( 如果用它覆蓋現有的緩存項,則會失敗 )

每個方法都有 7 個參數,而且兩個方法的參數相同。

在緩存某一項時,可以指定它的相關性,告訴 ASP.NET 該緩存項在緩存中一直保留到某個事件發生時為止。

相關性值

含義

CacheDependency

允許指定一個文件或緩存鍵。如果文件發生變化,對象就被刪除。如果緩存鍵發生變化,對象也被刪除。

DateTime

這是一個 DataTime 值,指明緩存數據過期的時間(絕對過期時間)

TimeSpan

這是一個時間間隔,指明緩存數據在上一次訪問后可以在緩存中保留多長時間(彈性過期時間)

使用 CacheItemPriority 來指定緩存數據的優先級,以便在緩存被填滿的時候刪除那些優先級低的數據。

優先級值

含義

High

設為此優先級的緩存項是最不可能在內存不足時被刪除的

AboveNormal

設為此優先級的緩存項比優先級為 Normal 或以下的緩存項更優先保留

Normal

設為此優先級的緩存項比優先級為 BelowNormal Low 的緩存項更優先保留

BelowNormal

這是倒數第二級的優先級;設為此優先級的緩存項只比優先級設為 Low 的緩存項更優先保留

Low

設為此優先級的緩存項是最有可能在內存不足時被刪除的

Default

緩存項的優先級的默認值是 Normal

NotRemovable

當緩存項設為此優先級時,是在告訴 ASP.NET 即使是內存不足,也不要從緩存中刪除它

DateTime dt = new DateTime(DateTime . Now . Year, 12 , 31 );

Cache . Add( "MembersDataSet" ,dsMembers, null ,

dt,TimeSpan . Zero,

CacheItemPriority . Normal, null );

第一個參數是引用緩存對象的鍵,第二個參數是要緩存的對象。第三個參數是 null( 表明沒有相關性 ) 。

第四和第五個參數是絕對的過期時間和彈性的過期時間。這里,我們指定緩存應在當前年份的最后一天過期 (dt) 。我們想指定沒有彈性的過期時間,所以第五個參數使用 TimeSpan.Zero 。第六個參數使用 System.Web.Caching.CacheItemPriority 枚舉中的一個值,把優先級設為 Normal

?

指定一個 5 分鐘的彈性過期時間,沒有指定絕對過期時間

Cache . Add( "MembersDataSet" ,dsMembers, null ,

??????????????? DateTime . MaxValue,TimeSpan . FromMinutes( 5 ),

??????????? CacheItemPriority . Normal, null );

?

添加一個相關性。在這個例子中,過期時間也取決于一個文件的修改,即 test.xml 文件:

CacheDependency dep = new CacheDependency( @"C:\test.xml" );

Cache . Add( "MembersDataSet" ,dsMembers,dep,

??????????????? DateTime . MaxValue,TimeSpan . FromMinutes( 5 ),

??????????? CacheItemPriority . Normal, null );

?

過期時間取決于緩存中另一項的修改:

String[] dependencyKeys = new String[ 1 ];

dependencyKeys[ 0 ] = "MembersChanged" ;

CacheDependency dependency = new CacheDependency( null , dependencyKeys);

Cache . Add( "MembersDataSet" ,dsMembers,dependency,

??????????????? DateTime . MaxValue,TimeSpan . Zero,

??????????? CacheItemPriority . Normal, null );

?

最后一個參數是 CacheItemRemovedCallback 類型的,允許我們在緩存項從緩存中刪除時要求通知,可以編寫一個自定義的方法 ( 像這里的 ItemRemovedCallback() 方法 ) ,然后在第 7 個參數中指定該方法:

??????? public void ItemRemovedCallback(String key, Object value , CacheItemRemovedReason reason)

??????? {

??????? }

?

Cache . Add( "MembersDataSet" ,dsMembers,dependency,

??????? ??????? DateTime . MaxValue,TimeSpan . FromMinutes( 5 ),

??? ??????? CacheItemPriority . Normal,

new CacheItemRemovedCallback( this . ItemRemovedCallback));

第一個參數是在緩存中存儲緩存項時使用的鍵,第二個是存儲的對象本身,第三個是緩存項刪除的原因。

?

頁面緩存『轉』


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久久亚洲欧美综合 | 午夜伦4480yy妇女久久久 | 综合图区亚洲 | 成人久久免费视频 | 曰本三级男人吃奶水 | 全部免费的毛片在线看青青 | 99精品在免费线视频 | 亚洲精品一区二区乱码在线观看 | 91精品视频在线播放 | jizz中国视频 | 久久精品免费视频观看 | 国产区视频在线观看 | 99久久亚洲 | 曰韩一级片 | 日韩欧美一级毛片视频免费 | 亚洲日韩精品欧美一区二区一 | 亚洲精品久久玖玖玖玖 | 久久精品中文字幕有码日本 | 免费一级欧美片片线观看 | 欧美jizz18性欧美 | 99视频网站| 久久综合九色婷婷97 | 欧美在线视频一区二区三区 | 国产一级爱 | 欧美视频在线观在线看 | 国产精品高清在线观看地址 | 伊人久久精品一区二区三区 | 国产色产综合色产在线观看视频 | 高清二区 | 亚洲乱码中文字幕 | 奇米影视狠狠干 | 起碰成人免费公开网视频 | 狠狠色噜噜狠狠狠狠97老肥女 | 五月天婷婷久久 | 国产特黄一级一片免费 | 91久久国产成人免费观看资源 | 久久国产精品-国产精品 | 日本人又黄又爽免费视频 | 四虎在线免费 | 91精品国产91久久久久 | 国产女主播喷出白浆视频 |