ASP.NET2.0揭祕讀書筆記之八——頁面輸出快取
引言
利用快取,可以極大提高web應用程式的效能。
ASP.NET頁面中執行最慢的操作是資料庫的訪問。開啟一個資料庫連線並讀取資料是很慢的操作。改進效能的最好方法是改進訪問資料的程式碼而不是訪問資料庫的程式碼。
ASP.NET 2.0 Framework支援下列型別的快取:
頁面輸出快取
區域性頁面快取
資料來源快取
資料快取
一、 使用頁面輸出快取
可以給一個頁面新增指令啟動頁面輸出快取。例如,下面程式碼使得輸出的頁面能快取15秒。
Code
ttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
void Page_Load()
{
lblTime.Text = DateTime.Now.ToString("T");
}
http://www.w3.org/1999/xhtml" >
使用引數改變輸出快取
有時候我們同一個頁面在根據傳入的不同引數時會顯示不同的內容,如果這種情況使用上面的快取就會導致傳入任何不用引數都會顯示相同的快取內容,這個時候可以使用VaryByParam屬性來解決這個問題。VaryByParam屬性會在傳入不用引數時使頁面快取新的例項。
傳入的引數名稱為id。
可以給VaryByParam屬性賦兩個特殊的值。
none——傳入的引數都被忽略了,只有一個版本的頁面快取;
*——傳入引數的任意變化都會建立一個新版本的頁面快取。
如果希望根據不只一個引數值的變化來建立不用的頁面快取版本,那麼可以用分號分隔一組引數列表給VaryByParam屬性。
基於控制元件變化的輸出快取
VaryByControl屬性用於根據頁面中的特定控制元件的不同值來建立不用版本的頁面快取。
DataSourceID="srcCategories"
DataTextField="Name"
DataValueField="Id"
Runat="server" />
基於頭變化的輸出快取
還有一個選擇是使用VaryByHeader屬性,使得在特定瀏覽器頭的值變化時,可以建立不用版本的緩衝頁面。
幾個標準的瀏覽器頭在每次頁面請求時都會傳遞,這些頭包含:
Accept-Language——代表請求頁面中使用者最希望的有優先順序順序的人類語言列表;
User-Agent——代表請求頁面裝置的型別;
Cookie——代表當前域名下建立的瀏覽器的cookie。
基於瀏覽器變化的輸出快取
如果想針對不用瀏覽器使用不用快取版本,可以使用VaryByCustom屬性。該屬性接受一個特殊的browser值。當VaryByCustom的值為browser時,瀏覽器的型別和主版本號被認為重要並需要考慮的。
設定快取位置
使用指令的Location屬性指定頁面被快取在哪裡。該屬性包含下面值:
Any——頁面被快取在瀏覽器、代理伺服器端和web伺服器端;
Client——快取在瀏覽器;
DownStream——頁面被快取在瀏覽器和任何的代理伺服器端;
None——頁面不快取;
ServerAndClient——頁面被快取在瀏覽器和web伺服器端;
建立頁面輸出快取檔案依賴
可以在一個快取頁面和硬碟上的一個檔案(或者一組檔案)之間建立一個依賴。當檔案修改時,快取頁面自動失效並在下次頁面請求時重新生成。
Code
ttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
void Page_Load()
{
Response.AddFileDependency(MapPath("Movies.xml"));
}
http://www.w3.org/1999/xhtml" >
DataSourceID="srcMovies"
Runat="server" />
DataFile="Movies.xml"
Runat="server" />
上面程式碼顯示了當前時間,注意,時間直到Movies.xml檔案被修改時才會變化。程式碼中使用了 Response.AddFileDependency()方法在快取頁面和磁碟上的單個檔案間建立了依賴。如果需要依賴多個檔案,則需要使用AddFileDependencies()代替。
使用程式設計的方式設定頁面輸出快取過期
可以使用Response.RemoveOutputCacheItem()方法,以程式設計的方法,從快取中移除一個頁面。例如我們前臺產品頁面被快取了,當在後臺新增新的產品時就可以使用程式設計方式移除前臺快取的產品頁面。
protected void dtlMovie_ItemInserted(object sender, DetailsViewInsertedEventArgs e)
{
HttpResponse.RemoveOutputCacheItem(Page.ResolveUrl("~/MovieList.aspx"));
Response.Redirect("~/MovieList.aspx");
}
建立頁面輸出快取配置
通過在Web配置檔案中配置頁面輸出快取,從而將這些配置應用於多個頁面。可以建立一個快取配置(Cache Profile),將使網站的快取更容易管理。
下面程式碼使用了Cache1Hour配置。該配置設定於指令的CacheProfile屬性。
Code
ttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
http://www.w3.org/1999/xhtml" >
可以給快取配置設定和獨立頁面的指令一樣的屬性。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-594861/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 《CSS揭祕》讀書筆記CSS筆記
- 《揭祕跨境電商》讀書筆記筆記
- 《分散式快取》讀書筆記二分散式快取筆記
- 《CSS揭祕》筆記(一)CSS筆記
- 《職得》八月讀書筆記筆記
- Vue專案全域性配置頁面快取,實現按需讀取快取Vue快取
- JVM讀書筆記之OOMJVM筆記OOM
- Nginx之11吸星大法 - (頁面快取)Nginx快取
- 深入淺出node讀書筆記筆記
- 《Maven實戰》之讀書筆記Maven筆記
- Nuxt頁面級快取UX快取
- 頁面快取優化快取優化
- Django筆記三十三之快取操作Django筆記快取
- 《Go 語言程式設計》 讀書筆記 (八) 包Go程式設計筆記
- JVM讀書筆記之記憶體管理JVM筆記記憶體
- 快樂的Linux命令列--讀書筆記1Linux命令列筆記
- https安全傳輸揭祕HTTP
- 讀書筆記筆記
- 《數學之美》讀書筆記&思考筆記
- 《讀書與做人》讀書筆記筆記
- Python筆記一之excel的讀取Python筆記Excel
- CSS揭祕筆記(2):背景與邊框CSS筆記
- C++ 學習筆記之——輸入和輸出C++筆記
- 揭開Future的神祕面紗——結果獲取
- 關於瀏覽器快取問題(圖片更換後,頁面仍優先讀取快取)瀏覽器快取
- webpackDemo讀書筆記Web筆記
- Vue讀書筆記Vue筆記
- 散文讀書筆記筆記
- Cucumber讀書筆記筆記
- HTTP 讀書筆記HTTP筆記
- postgres 讀書筆記筆記
- 讀書筆記2筆記
- 讀書筆記3筆記
- JVM讀書筆記之java記憶體結構JVM筆記Java記憶體
- CSS揭祕,閱讀分享CSS
- Vue 頁面快取keep-aliveVue快取Keep-Alive
- HTTP快取筆記(1)HTTP快取筆記
- 《Spring揭祕》學習筆記——IOC是什麼Spring筆記
- 設計模式讀書筆記之原型模式、釋出訂閱模式設計模式筆記原型