上一篇文章講的是 VaryByParam的用法。
這個範例,則是改用 VaryByControl 的用法。
我們鎖定畫面上的下拉式選單(DropDownList控制項),來作Cache。本文有附上程式範例給大家下載。
上一篇文章(ASP.NET的OutputCache。直接看執行結果,學習Cache一看就懂)講的是底下的 VaryByParam的用法。
這個範例,則是改用 VaryByControl 的用法。
我們鎖定畫面上的下拉式選單(DropDownList控制項),來作Cache
名 稱 | 說 明 資料來源:微軟MSDN網站 | |
---|---|---|
CacheProfile | 取得或設定與輸出快取項目設定關聯的 OutputCacheProfile 名稱。 | |
Duration | 取得或設定快取項目保留在輸出快取中的時間。 | |
Enabled | 取得或設定值,指出是否啟用目前內容的輸出快取。 | |
Location | 取得或設定數值,判斷快取項目的位置。 | |
NoStore | 取得或設定數值,判斷是否已設定 HTTP Cache-Control: no-store 指示詞。 | |
SqlDependency | 取得或設定快取項目相依的一組成對資料庫和資料表名稱。 | |
VaryByControl | 取得或設定一組以 "分號" 分隔的控制識別項,其包含在目前頁面或使用者控制項中,用來變更目前快取項目。 | |
VaryByCustom | 取得輸出快取用來變更快取項目的自訂字串清單。 | |
VaryByHeader | 取得或設定一組以 "逗號" 分隔的標頭名稱,用來變更快取項目。標頭名稱會識別與要求關聯的 HTTP 標頭。 | |
VaryByParam | 取得以 "逗號" 分隔的查詢字串或表單(POST or GET)張貼參數清單,輸出快取會使用此清單變更快取項目。 ex: none / * / 參數名稱 |
Cache與 Transation的部份,已經收錄在本書下集(ASP.NET專題實務 II -- 範例集與4.0新功能)
我找幾支簡單的程式分享給大家。
採用的範例DataBase,也是書本上附的 「test資料表」。
讀者可以把程式下載回去,玩玩看。
這支程式的關鍵,也只有一句話 <% @ OutputCache Duration ="30" VaryByControl ="DropDownList1" %>
把他設定在 .aspx檔案的HTML碼裡面即可。
意思是說:快取設定30秒,鎖定 DropDownList1這個控制項。
HTML畫面的設定也很簡單。這個範例畫面,在中國時報、蘋果日報的網站上,還滿常見的(我不確定他們有沒有用到 Cache)
兩個控制項(DropDownList 與 GridView),搭配一個 SqlDataSource。
上面的HTML畫面,最重要的部份,就是兩個控制項之間的互動。
當我們選取 DropDownList的任何一個選單,底下的 GridView內容會隨之變換。
要依賴 GridView的 SqlDataSource來輔助,下面這畫面是關鍵!!
P.S. 如果上面這兩張圖片的設定,您看不懂的話,那您就是剛剛入門ASP.NET的新手而已。 能力還太淺,還用不著學習 Cache這部份。
上面這些步驟,大部分的ASP.NET書籍一定會講。 您先把這一部份的基礎,學通、學熟練了,再來學Cache。
因為這步驟(上面兩張圖片)很重要,所以我的書本 Ch 9(第九章)反覆練習這個重點,衍生出各種常用的範例。
HTML設計畫面的原始碼如下(僅供參考):
02 <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True">
03 <asp:ListItem>==請選擇==</asp:ListItem>
04 <asp:ListItem>政治</asp:ListItem>
05 <asp:ListItem>教育</asp:ListItem>
06 <asp:ListItem>其他</asp:ListItem>
07 <asp:ListItem>娛樂</asp:ListItem>
08 </asp:DropDownList></p>
09 <p>
10
11
12 <asp:GridView ID="GridView1" runat="server" CellPadding="4" DataSourceID="SqlDataSource1">
13 ........這部份省略...........
14 </asp:GridView>
15
16
17 <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:testConnectionString %>"
18 SelectCommand="SELECT [id], [test_time], [title], [class] FROM [test] WHERE ([class] LIKE '%' + @class + '%')">
19 <SelectParameters>
20 <asp:ControlParameter ControlID="DropDownList1" Name="class" PropertyName="SelectedValue"
21 Type="String" />
22 </SelectParameters>
23 </asp:SqlDataSource>
因為這個範例很簡單,不需要寫後置程式碼(Code-Behind)。
完全靠VS 2005 or VS 2008的畫面,拖拉點放就完成設定了。不用自己動手寫程式啦
執行結果如下:
當我們點選「政治」類的文章,程式執行時間是 02:07:13秒。
這時候你重整畫面,或是重複點選「政治」這個選項,畫面都不會動。因為已經被 Cache住了。
- 同一個「文章分類」,除非你等待30秒,這支程式才會重新跟Server索取資料。
- 或是你點選別的「文章分類」,這支程式才會重新跟Server索取資料。
Cache的好處,就是對於「非即時更新」、「變化不大」的資訊,我們可以透過 Cache的方式提供給讀者觀賞。
不需要每一次都跟 Server重新要求,這樣會浪費 Server的資源。
例如:股票市場的資訊(假設你作一個 Yahoo股市的網頁),台灣的股市是在9:00~13:30進行交易。這段時間的股票變化、漲跌,分分秒秒都不同。
你的網頁,用了 Cache那就死定了。因為觀眾看不到即時資料,就算他不斷重整畫面,也是看見「被Cache的舊資料」。
但是營業時間結束後,個股的今日漲跌已定,不再有變化。這時候使用Cache,就不需要每次都去Server / 資料庫裡面撈資料,浪費Server資源。
上面的解釋,您可以參考一下。或許我舉的例子,不太妥當。
因為 Cache何時該用?用在哪裡?.............都要看你的程式、客戶的需求來決定。千萬不要濫用這些功能。
===============================================================================
附檔的程式,僅供各位參考---- Sample.rar
有購買本書的讀者,可以搭配書本附的 test資料表來操作。
因為我的程式裡面,連結資料庫的帳號、密碼,都寫在Web.Config裡面,讀者請依照實際狀況修改一下。可以參考P.6-9頁(6-2節)的範例&步驟,設定自己的「資料庫連線字串」,並存在Web,config檔裡面。
或是本書的 P.14-16頁,自己修改資料庫連線字串。
範例的 Cache_2.aspx 就是上面的範例。
另外一個 Cache_2_old.aspx則是同一支程式(沒有Cache功能),兩個讓讀者作比較,執行起來玩玩看就知道了。
其餘的程式,則是上一篇文章的範例。
請看相關文章:
UC 與 輸出快取(Output Cache) -- PartialCachingAttribute類別
相關文章請看:
- http://www.dotblogs.com.tw/ajun/archive/2008/02/18/1078.aspx
- http://www.dotblogs.com.tw/ajun/archive/2008/02/18/1077.aspx
- http://www.dotblogs.com.tw/jeff377/archive/2008/08/28/5236.aspx
- http://www.dotblogs.com.tw/yilinliu/archive/2008/08/14/4908.aspx
-
觀念補強,請看這一篇 -- http://forums.microsoft.com/MSDN-CHT/ShowPost.aspx?PostID=3968992&SiteID=14
今日值班正妹,隋棠。
我將思想傳授他人, 他人之所得,亦無損於我之所有;
猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson
線上課程教學,遠距教學 (Web Form 約 51hr) https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015
線上課程教學,遠距教學 (ASP.NET MVC 約 140hr) https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab
寫信給我,不要私訊 -- mis2000lab (at) yahoo.com.tw 或 school (at) mis2000lab.net
(1) 第一天 ASP.NET MVC5 完整影片(5.5小時 / .NET 4.x版)免費試聽。影片 https://youtu.be/9spaHik87-A
(2) 第一天 ASP.NET Core MVC 完整影片(3小時 / .NET Core 6.0~8.0)免費試聽。影片 https://youtu.be/TSmwpT-Bx4I
[學員感言] mis2000lab課程評價 - ASP.NET MVC , WebForm 。 https://mis2000lab.medium.com/%E5%AD%B8%E5%93%A1%E6%84%9F%E8%A8%80-mis2000lab%E8%AA%B2%E7%A8%8B%E8%A9%95%E5%83%B9-asp-net-mvc-webform-77903ce9680b
ASP.NET遠距教學、線上課程(Web Form + MVC)。 第一天課程, "完整" 試聽。
......... facebook社團 https://www.facebook.com/mis2000lab ......................
......... YouTube (ASP.NET) 線上教學影片 https://www.youtube.com/channel/UC6IPPf6tvsNG8zX3u1LddvA/
Blog文章 "附的範例" 無法下載,請看 https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download
請看我們的「售後服務」範圍(嚴格認定)。
......................................................................................................................................................
ASP.NET MVC => .NET Core MVC 線上教學 ...... 第一天課程 完整內容 "免費"讓您評估 / 試聽
[遠距教學、教學影片] ASP.NET (Web Form) 課程 上線了!MIS2000Lab.主講 事先錄好的影片,並非上課側錄! 觀看時,有如「一對一」面對面講課。