前端開發——頁面緩存問題

前言

我們平時在瀏覽器瀏覽一些網址,多多少少都會涉及到緩存的問題,有時候覺得緩存挺煩的。但是在開發過程中,利用好緩存,可讓服務器或者數據庫減少很大的壓力。下面我來用C#舉幾種緩存類型的例子!

爲整個頁面設置緩存

在aspx文件開始位置加上這樣一句代碼

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

它表示網頁沒有任何改變的情況下緩存15秒,這種情況一般爲請求量非常大的網站。VaryByParam表示對相同月面,不同的id參數進行單獨緩存。如果設置爲 * 表示所有。

絕對過期時間的緩存

絕對過期時間緩存,在一定的時間內是有緩存的,一旦過時,就會清除緩存。當然時間因情況而定

//設置過期時間的緩存
                Cache.Insert("key", DateTime.Now.ToString(), null, DateTime.Now.AddSeconds(時間,單位秒), TimeSpan.Zero);

設置滑動過期時間緩存

滑動過期時間,表示在一定的時間段不對網站做操作,就清除緩存,如果一直有操作則一直存在緩存。

//設置滑動過期時間
                Cache.Insert("key", DateTime.Now.ToString(), null, DateTime.MaxValue, new TimeSpan(0, 0, 5));

設置依賴項緩存

依賴某個文件,如果文件發生變化,則清除緩存,如果文件一直不變,緩存一直存在。

////設置依賴項緩存
                string file = Request.MapPath("ceshi.txt");
                Cache.Insert("key", DateTime.Now.ToString(), new System.Web.Caching.CacheDependency(file));

依賴數據庫緩存

依賴於一個數據庫中的一個表,如果該表發生變換,緩存也就清除。
具體的設置步驟如下:

  • 打開ASP.NET State Service服務
    在這裏插入圖片描述

  • 在CMD中選擇到VS的安裝路徑下,輸入指令
    aspnet_regsql -S . -E -ed -d Charge(數據庫名稱) -et -t User_Info(表名稱)

  • 出現下圖:
    在這裏插入圖片描述

  • 在配置文件中<system.web>節點下添加配置

<caching>
      <sqlCacheDependency enabled="true">
        <databases>
          <add name="Charge" connectionStringName="connectionString" pollTime="500"/>
        </databases>
      </sqlCacheDependency>
    </caching>
  • 連接數據庫的字符串
<connectionStrings>
    <add name="connectionString" connectionString="server=.;uid=sa;pwd=123456;database=Charge"/>
</connectionStrings>
  • 編寫C#代碼
//依賴數據庫的緩存
              // Cache.Insert("key",DateTime.Now.ToString(),new SqlCacheDependency("數據庫名稱", "表名"));
在這裏插入代碼片

總結

雖然只領略到了皮毛,就知道緩存這個東西很厲害,利用好這個東西,能減少服務器不下的壓力!