ASP.NET的OutputCache #2,學習Cache一看就懂。

上一篇文章講的是 VaryByParam的用法。

這個範例,則是改用 VaryByControl 的用法。

我們鎖定畫面上的下拉式選單(DropDownList控制項),來作Cache。本文有附上程式範例給大家下載。

上一篇文章(ASP.NET的OutputCache。直接看執行結果,學習Cache一看就懂)講的是底下的 VaryByParam的用法。

這個範例,則是改用 VaryByControl 的用法。

我們鎖定畫面上的下拉式選單(DropDownList控制項),來作Cache

 

  名  稱 說   明    資料來源:微軟MSDN網站
Public property CacheProfile 取得或設定與輸出快取項目設定關聯的 OutputCacheProfile 名稱。
Public property Duration 取得或設定快取項目保留在輸出快取中的時間。
Public property Enabled 取得或設定值,指出是否啟用目前內容的輸出快取。
Public property Location 取得或設定數值,判斷快取項目的位置。
Public property NoStore 取得或設定數值,判斷是否已設定 HTTP Cache-Control: no-store 指示詞。
Public property SqlDependency 取得或設定快取項目相依的一組成對資料庫和資料表名稱。
Public property VaryByControl 取得或設定一組以 "分號" 分隔的控制識別項,其包含在目前頁面或使用者控制項中,用來變更目前快取項目。
Public property VaryByCustom 取得輸出快取用來變更快取項目的自訂字串清單。
Public property VaryByHeader 取得或設定一組以 "逗號" 分隔的標頭名稱,用來變更快取項目。標頭名稱會識別與要求關聯的 HTTP 標頭。
Public property 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(第九章)反覆練習這個重點,衍生出各種常用的範例。

新書上市-- ASP.NET專題實務(文魁出版)

 

HTML設計畫面的原始碼如下(僅供參考):

01         Server時間(網頁執行瞬間的時間)--<font color ="red"><%=now()%> </font><p>
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類別

 

 

相關文章請看:

 

 今日值班正妹,隋棠。

 
 

我將思想傳授他人, 他人之所得,亦無損於我之所有;

猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson

寫信給我--  mis2000lab (at) yahoo.com.台灣  或是  school (at) mis2000lab.net

................   facebook社團   https://www.facebook.com/mis2000lab   ......................

................   Google+   https://plus.google.com/100202398389206570368/posts ........

................  YouTube (ASP.NET) 線上教學影片  http://goo.gl/rGLocQ

*********************************************************************************************

*** 第一天 的 ASP.NET MVC線上課程 免費看(5.5小時)*** 

************************************************************(歡迎索取,免費申請)*****

 

ASP.NET遠距教學、線上課程(Web Form + MVC)第二門 課程「四折」-- 以MVC課程作為優惠。

第一天完整課程,提供 "完整" 試聽。  如不滿意 全額退費!

 

 

Blog文章 "附的範例" 無法下載,請看 這裡 ...... https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download

請看我們的「售後服務」範圍(嚴格認定)

......................................................................................................................................................

...................................................................................................................................................... 

[遠距教學、教學影片] ASP.NET (Web Form) 課程 上線了!MIS2000Lab.主講

事先錄製好的影片,並非上課時側錄!   觀看影片時,有如我「一對一」跟您面對面講課

 

    MIS2000 Lab.  線上教學影片(YouTube) **免費觀賞**