成人在线你懂的-成人在线免费小视频-成人在线免费网站-成人在线免费视频观看-日韩精品国产一区二区-日韩精品国产一区

掃一掃
關注微信公眾號

ASP.NET緩存:方法分析和實踐示例(1)
2008-04-22   中國IT實驗室

在 ASP.NET 提供的許多特性中,緩存支持無疑是我最欣賞的特性,我這樣說當然是有充分理由的。相比 ASP.NET 的所有其他特性,緩存對應用程序的性能具有最大的潛在影響,利用緩存和其他機制,ASP.NET 開發人員可以接受使用開銷很大的控件(例如,DataGrid)構建站點時的額外開銷,而不必擔心性能會受到太大的影響。為了在應用程序中最大程度地利用緩存,您應該考慮在所有程序級別上都實現緩存的方法。

  盡早緩存;經常緩存

  您應該在應用程序的每一層都實現緩存。向數據層、業務邏輯層、UI 或輸出層添加緩存支持。內存現在非常便宜 — 因此,通過以智能的方式在整個應用程序中實現緩存,可以獲得很大的性能提高。

  緩存可以掩蓋許多過失

  緩存是一種無需大量時間和分析就可以獲得“足夠良好的”性能的方法。這里再次強調,內存現在非常便宜,因此,如果您能通過將輸出緩存 30 秒,而不是花上一整天甚至一周的時間嘗試優化代碼或數據庫就可以獲得所需的性能,您肯定會選擇緩存解決方案(假設可以接受 30 秒的舊數據)。緩存正是那些利用 20% 付出獲得 80% 回報的特性之一,因此,要提高性能,應該首先想到緩存。不過,如果設計很糟糕,最終卻有可能帶來不良的后果,因此,您當然也應該盡量正確地設計應用程序。但如果您只是需要立即獲得足夠高的性能,緩存就是您的最佳選擇,您可以在以后有時間的時候再盡快重新設計應用程序。

  頁面級輸出緩存

  作為最簡單的緩存形式,輸出緩存只是在內存中保留為響應請求而發送的 HTML 的副本。其后再有請求時將提供緩存的輸出,直到緩存到期,這樣,性能有可能得到很大的提高(取決于需要多少開銷來創建原始頁面輸出 - 發送緩存的輸出總是很快,并且比較穩定)。

  實現

  要實現頁面輸出緩存,只要將一條 OutputCache 指令添加到頁面即可。

  <%@ OutputCache Duration="60" VaryByParam="*" %>

  如同其他頁面指令一樣,該指令應該出現在 ASPX 頁面的頂部,即在任何輸出之前。它支持五個屬性(或參數),其中兩個是必需的。

  Duration

  必需屬性。頁面應該被緩存的時間,以秒為單位。必須是正整數。

  Location

  指定應該對輸出進行緩存的位置。如果要指定該參數,則必須是下列選項之一:Any、Client、Downstream、None、Server 或 ServerAndClient.

  VaryByParam

  必需屬性。Request 中變量的名稱,這些變量名應該產生單獨的緩存條目。"none" 表示沒有變動。"*" 可用于為每個不同的變量數組創建新的緩存條目。變量之間用 ";" 進行分隔。

  VaryByHeader

  基于指定的標頭中的變動改變緩存條目。

  VaryByCustom

  允許在 global.asax 中指定自定義變動(例如,"Browser")。

  利用必需的 Duration 和 VaryByParam 選項的組合可以處理大多數情況。例如,如果您的產品目錄允許用戶基于 categoryID 和頁變量查看目錄頁,您可以用參數值為 "categoryID;page" 的 VaryByParam 將產品目錄緩存一段時間(如果產品不是隨時都在改變,一小時還是可以接受的,因此,持續時間是 3600 秒)。這將為每個種類的每個目錄頁創建單獨的緩存條目。每個條目從其第一個請求算起將維持一個小時。

  VaryByHeader 和 VaryByCustom 主要用于根據訪問頁面的客戶端對頁面的外觀或內容進行自定義。同一個 URL 可能需要同時為瀏覽器和移動電話客戶端呈現輸出,因此,需要針對不同的客戶端緩存不同的內容版本。或者,頁面有可能已經針對 IE 進行了優化,但需要能針對 Netscape 或 Opera 完全降低優化(而不僅僅是破壞頁面)。后一個例子非常普遍,我們將提供一個說明如何實現此目標的示例:

  示例:VaryByCustom 用于支持瀏覽器自定義

  為了使每個瀏覽器都具有單獨的緩存條目,VaryByCustom 的值可以設置為 "browser".此功能已經內置在緩存模塊中,并且將針對每個瀏覽器名稱和主要版本插入單獨的頁面緩存版本。

  <%@ OutputCache Duration="60" VaryByParam="None" VaryByCustom="browser" %>

  片段緩存,用戶控件輸出緩存

  緩存整個頁面通常并不可行,因為頁面的某些部分是針對用戶定制的。不過,頁面的其他部分是整個應用程序共有的。這些部分最適合使用片段緩存和用戶控件進行緩存。菜單和其他布局元素,尤其是那些從數據源動態生成的元素,也應該用這種方法進行緩存。如果需要,可以將緩存的控件配置為基于對其控件(或其他屬性)的更改或由頁面級輸出緩存支持的任何其他變動進行改變。使用同一組控件的幾百個頁面還可以共享那些控件的緩存條目,而不是為每個頁面保留單獨的緩存版本。

熱詞搜索:

上一篇:定制頁面提示信息
下一篇:ASP.NET緩存:方法分析和實踐示例(2)

分享到: 收藏
主站蜘蛛池模板: 七度空间卫生巾图片| 东莞久久精工机械有限公司| 拔萝卜电视剧视频高清完整版| 吃什么皮肤白的最快| 高登眼镜| 娟子个人资料 简历| 婚后三十年电视剧剧情介绍| 第五单元初试身手| 高潮艺术| 刘禹| 都市频道在线直播| 林黛玉进贾府人物形象分析| 美女网站视频免费| 聊斋在线观看| 电影《醉猴》刘家良主演| 试看60秒做受小视频| 91精品在线视频播放| 三年级英语| 远景山谷 (1981)中字| 杨子姗赵又廷演的电影叫什么| 猎罪图鉴在哪看| 向退休生活游戏正版赚钱入口| 陷入纯情| 教学质量分析| 兰陵王电影| 露底| 教学质量分析| 少女频道电影在线观看中文版| 内裤之穴| 一人之下动画| 性感瑜伽| 崔维斯·费米尔| 口舌| 小镇追凶电影免费观看| 吃光全宇宙| 哈基米| 抖音浏览器| 罗密欧与朱丽叶电影| 女人妣| 纳尼亚传奇| ab变频器中文说明书|