12 使用頁面輸出快取

2021-08-31 11:17:33 字數 3264 閱讀 2845

使用頁面輸出快取

可以給頁面新增<%@ outputcache%>指令啟用頁面輸出快取。

cachepageoutput.aspx

[code]

<%@ page language="c#" %>

<%@ outputcache duration="15" varybyparam="none" %>

[/code]

頁面快取15秒。

1、使用引數改變輸出快取

例程:一概要面和詳情頁。單擊概要頁標題,詳情面顯示選中的詳細資訊。

通常會在概要面和詳情頁間傳遞乙個查詢字串引數來指定顯示在詳細頁中的內容。如果快取詳情頁的輸出內容,那麼就會導致每個人都只能看到第乙個選中的內容。

通過使用varybyparam特性解決這個問題。

資料表[code]

movies

id int 自動增長

title nvarchar(50)

director nvarchar(50)

datereleased datetime

description nvarchar(max)

[/code]

主頁,master.aspx

[code]

<%@ page language="c#" %>

[/code]

從頁面:details.aspx

[code]

<%@ page language="c#" %>

<%@ outputcache duration="3600" varybyparam="id" %>

[/code]

web.config增加

[code]

[/code]

結果:單擊從頁

當前時間 11:47

可以看出進行了快取。

details.aspx中**<%@ outputcache duration="3600" varybyparam="id" %>

快取1小時

varbyparam會導致更多的快取而不是更少的快取。

2011-5-17 11:47 danny

2、基於控制項變化的輸出快取

varbycontrol特性用於根據頁面中的特定控制項的值生成不同版本的頁面快取。

masterdetails.aspx

[code]

<%@ page language="c#" %>

<%@ outputcache duration="3600" varybycontrol="dropcategories" %>

[/code]

2011-5-17 13:05 danny

3、基於頭變化的輸出快取

varybyheader特性,使得在特定的瀏覽器頭的值變化時,可以建立不同的頁面快取版本。

accept-language

user-agent

cookie

varybyheader.aspx

[code]

<%@ page language="c#" %>

<%@ outputcache duration="3600" varybyparam="none" varybyheader="user-agent" %>

[/code]

不同的瀏覽器有不同的值,不可預知,不建議使用。

2011-5-17 13:17 danny

4、基於瀏覽器變化的輸出快取

varybycustom 值為browser  兩個要考慮的:瀏覽器型別和它的主版本號。

ie 和firefox不同的頁面快取

ie5、ie6不同的頁面快取

varybybrowser.aspx

[code]

<%@ page language="c#" %>

<%@ outputcache duration="3600" varybyparam="none" varybycustom="browser" %>

[/code]

其中maxthon和ie8顯示的是同一快取,但和firefox是不同的。

由此可見,maxthon其實用的是ie的核心。

5、基於自定義函式變化的輸出快取

varybycustom可以指定乙個自定義函式來決定何時生成不同的頁面快取版本。

在global.asax檔案中重寫getvarybycustomstring()方法來建立自定義函式。

varybycustom.aspx

[code]

<%@ page language="c#" %>

<%@ outputcache duration="3600" varybyparam="none" varybycustom="css" %>

[/code]

其中,ie8,maxthon和firefox都是同一快取的。

2011-5-17 13:33 danny

6、設定快取位置

<%@outputcache%>

location特性指定頁面被快取在**

any --頁面被快取在瀏覽器、**伺服器和web伺服器(預設值)

client --頁面只快取在瀏覽器

downstream --頁面被快取在瀏覽器和任何**伺服器,但不快取在伺服器

none --頁面不快取

serverandclient --頁面被快取在瀏覽器和web伺服器,但不快取在**伺服器

cachelocation.aspx

[code]

<%@ page language="c#" %>

<%@ outputcache duration="3600" varybyparam="none" location="client" %>

[/code]

還是以前一樣,maxthon和ie是同一核心,顯示同一快取,而firefox是不同的。

7、建立頁面輸出快取檔案依賴

可以在一快取頁面和硬碟上的乙個檔案(或一級檔案)之間建立乙個依賴。當檔案修改時,快取頁面自動失效並重新在下次頁面請求時生成。

movies.xml

[code]

<?xml version="1.0" encoding="utf-8" ?>

[/code]

outputcachefiledependency.aspx

[code]

<%@ page language="c#" %>

<%@ outputcache duration="9999" varybyparam="none" %>

[/code]

2011-5-17 13:57 danny

頁面輸出快取

頁面輸出快取 最簡單的一種,下面的duration和varybyparam屬性是必須的 outputcache duration 10 varybyparam none 只使用.cs檔案來設定頁面輸出快取 通過web.config設定頁面輸出快取 中的配置 頁面檔案 outputcache cach...

頁面輸出快取

頁面輸出快取 作為最簡單的快取形式,將已經生成的動 靜態頁面全部內容儲存在伺服器記憶體中。在這一過程中,不需要再次經過頁面的生命處理週期。這樣縮短了請求的響應時間,提高了應用程式的效能。1 使用 outputcache指令 使用 outputcache指令,能夠實現對頁面輸出快取的一般效能需求。ou...

使用Cache快取Page頁面

使用cache outputcache duration 15 varybypara none 頁面使用cache,cache的有效期為15 seconds 使用 表示,放在page load裡面 cache manager可以控制這個頁面 告訴cache manager,頁面的有效期為當前時間 1...