當前位置:首頁 » 硬碟大全 » net緩存時間
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

net緩存時間

發布時間: 2023-05-24 16:43:33

① asp.net ashx頁面緩存設定問題

public void ProcessRequest(HttpContext context)
{
context.Response.CacheControl = "蔽行宏public";
context.Response.Expires = 12 * 60; //帶卜12個小宏冊時
}

② asp.net怎麼設置瀏覽器客戶端緩存

1. Expires:+過期時間

表示在指定時間後瀏覽器緩存失效,需要注意的是這兒的過期時間必須是HTTP格式的日期時間,其他的都會被解析成當前時間「之前」,緩存會馬上過期,HTTP的日期時間必須是格林威治時間(GMT),而不是本地時間。舉例:

③ asp.net緩存什麼時候使用

有時候為了提高網頁載入速度和減輕資料庫壓力我們會採用緩存,一般在數據對刷新時間上不是要求特別高的時候,我們可以使用緩存。用京東來舉例:比如首頁的商品分類導航,一般相對固定,如果是從資料庫讀取則可以直接使用緩存,設置幾個小時刷新一次。

④ ASP.NET 數據緩存有什麼用 應該怎麼用

頁面緩存
使用OutputCache指令。
<%@ OutputCache Duration="3600"
Location="Any"
VaryByCustom="browser"
VaryByParam="RequestID" %>
其中Duration和VaryByParam特性是必須的。
Duration允許我們控制頁面在緩存中生存的時間(單位是秒)
VaryByParam允許我們緩存頁面的不同版本。在上面的例子中,VaryByParam設為襪高了RequestID,所以ASP.NET使用RequestID參數的不同值,這些值或者是在HTTP GET的查詢字元串中傳入,或者是在HTTP POST的參數中傳入。可以通過檢查RequestID參數的值讓應用程序區分不同的用戶;通過在頁面的OutputCache指令中放置 VaryByParam="RequestID",可以讓ASP.NET為每個用戶緩存告逗尺頁面的不同版本。
如果不想根據參數的值緩存頁面的不問版本,那麼只要把指和VaryByParam設為none。
也可以要求ASP.NET為每個可能的參數組合緩存頁面的一個版本。為此,可把VaryByParam設為*。

⑤ asp.net aspx文件 緩存設定問題

1.概念

Cache-control用於控制HTTP緩存(在HTTP/1.0中可能部分沒實現,僅僅實現了Pragma: no-cache)

數據包中的格式:

Cache-Control: cache-directive

cache-directive可以為以下:

request時用到:

| "no-cache"
| "no-store"
| "max-age" "=" delta-seconds
| "max-stale" [ "=" delta-seconds ]
| "min-fresh" "=" delta-seconds
| "no-transform"
| "only-if-cached"
| "cache-extension"

response時用到:

| "public"
| "private" [ "=" <"> field-name <"> ]
| "no-cache" [ "=" <"> field-name <"> ]
| "no-store"
| "no-transform"
| "must-revalidate"
| "proxy-revalidate"
| "max-age" "=" delta-seconds
| "s-maxage" "=" delta-seconds
| "cache-extension"

部分說明:
根據是否可緩存分為
Public 指示響應可被任何緩存區緩存。
Private 指示對於單個用戶的整個或部分響應消息,不能被共享緩存處理。這允許伺服器僅僅描述當用戶的
部分響應消息,此響應消息對於其他用戶的請求無效。
no-cache 指示請求或響應消息不能緩存(HTTP/1.0用Pragma的no-cache替換)
根據什麼能被緩存
no-store 用於防止重要的信息被無意的發布。在請求消息中發送將使得請求和響應消息都不使用緩存。
根據緩存超時
max-age 指示客戶機可以接收生存期不大於指定時間(以秒為單位)的響應。
min-fresh 指示客戶機可以接收響應時間小於當前時間加上指定時間的響應。
max-stale 指示客戶機可以接收超出超時期間的響應消息。如果指定max-stale消息的值,那麼客戶機可以
接收超出超時期指定值之內的響應消息。
Expires 表示存在時間,允許客戶端在這個時間之前不去檢查(發請求),等同max-age的
效果。但是如果同時存在,則被Cache-Control的max-age覆蓋。
格式:
Expires = "Expires" ":" HTTP-date
例如
Expires: Thu, 01 Dec 1994 16:00:00 GMT (必須是GMT格式)

2.應用
通過HTTP的META設置expires和cache-control
<meta http-equiv="Cache-Control" content="max-age=7200" />
<meta http-equiv="Expires" content="Mon, 20 Jul 2009 23:00:00 GMT" />
上述設置僅為舉例,實際使用其一即可。這樣寫的話僅對該網頁有效,對網頁中的圖片或其他請求無效,並不會做任何cache。
這樣客戶端的請求就多了,盡管只是檢查Last-modified狀態的東西,但是請求一多對瀏覽速度必定有影響。
如果要對文件添加cache可以通過apache的mod_expire模塊,寫法為
<IfMole mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 days"
</IfMole>
記得ExpiresActive設為On,我起先沒設置On,似乎怎樣YSlow都查不到緩存機制。這樣添加的話就是默認所有的。
如果要針對個別MIME類型則可以:
ExpiresByType image/gif "access plus 5 hours 3 minutes"
見 Apache Mole mod_expires
另外,當點擊瀏覽器上的刷新,客戶端發送的請求中均是max-age=0,表示validate操作,發送請求到伺服器
要求檢查cache,再更新cache,一般得到的是304 Not Modified,表示沒變動。

Response.CacheControl = "public";
Response.Expires = 60 * 12;

⑥ asp.net頁面輸出緩存

如果頁面數據長時間不修改的話。緩存時間設的越長越好
如果想手動控制重新緩存新數據的話可以設置一個外部監視器。當人工修改伺服器某文件後web程序自動使原來緩存失效並重新緩存新的數據。

<%@ OutputCache Duration="褲滑戚120" VaryByParam="CategoryID"%>
這是一個簡單的頁面級緩存。意思是根據CategoryID緩存該頁面120秒。每當CategoryID改變時重新緩存一個新頁面。既100個不同的CategoryID請求該頁面,伺服器會緩存100個不同的頁面,每一個CategoryID在120秒內再次請求該頁面時伺服器根據CategoryID返回所讓姿緩存的頁面。

如果是自定義緩存的胡陵話,我一時半會也打不過來那麼多字。查查資料吧。

牢記。合理利用緩存。不然伺服器壓力會很大。

⑦ .net 緩存是什麼 放在哪裡 概念模糊了 大俠幫忙

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

實現

要實現頁面輸出緩存,只要將一條 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" %>

片段緩存,用戶控制項輸出緩存

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

實現

片段緩存使用的語法與頁面級輸出緩存一樣,但其應用於用戶控制項(.ascx 文件)而不是 Web 窗體(.aspx 文件)。除了 Location 屬性,對於 OutputCache 在 Web 窗體上支持的所有屬性,用戶控制項也同樣支持。用戶控制項還支持名為 VaryByControl 的 OutputCache 屬性,該屬性將根據用戶控制項(通常是頁面上的控制項,例如,DropDownList)的成員的值改變該控制項的緩存。如果指定了 VaryByControl,可以省略 VaryByParam。最後,在默認情況下,對每個頁面上的每個用戶控制項都單獨進行緩存。不過,如果一個用戶控制項不隨應用程序中的頁面改變,並且在所有頁面都使用相同的名稱,則可以應用 Shared="true" 參數,該參數將使用戶控制項的緩存版本供所有引用該控制項的頁面使用。

示例

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

該示例將緩存用戶控制項 60 秒,並且將針對查詢字元串的每個變動、針對此控制項所在的每個頁面創建單獨的緩存條目。

<%@ OutputCache Duration="60" VaryByParam="none" VaryByControl="CategoryDropDownList" %>

該示例將緩存用戶控制項 60 秒,並且將針對 CategoryDropDownList 控制項的每個不同的值、針對此控制項所在的每個頁面創建單獨的緩存條目。

<%@ OutputCache Duration="60" VaryByParam="none" VaryByCustom="browser" Shared="true %>

最後,該示例將緩存用戶控制項 60 秒,並且將針對每個瀏覽器名稱和主要版本創建一個緩存條目。然後,每個瀏覽器的緩存條目將由引用此用戶控制項的所有頁面共享(只要所有頁面都用相同的 ID 引用該控制項即可)。
頁面級和用戶控制項級輸出緩存的確是一種可以迅速而簡便地提高站點性能的方法,但是在 ASP.NET 中,緩存的真正靈活性和強大功能是通過 Cache 對象提供的。使用 Cache 對象,您可以存儲任何可序列化的數據對象,基於一個或多個依賴項的組合來控制緩存條目到期的方式。這些依賴項可以包括自從項被緩存後經過的時間、自從項上次被訪問後經過的時間、對文件和/或文件夾的更改以及對其他緩存項的更改,在略作處理後還可以包括對資料庫中特定表的更改。

在 Cache 中存儲數據

在 Cache 中存儲數據的最簡單的方法就是使用一個鍵為其賦值,就像 HashTable 或 Dictionary 對象一樣:

Cache["key"] = "value";

這種做法將在緩存中存儲項,同時不帶任何依賴項,因此它不會到期,除非緩存引擎為了給其他緩存數據提供空間而將其刪除。要包括特定的緩存依賴項,可使用 Add() 或 Insert() 方法。其中每個方法都有幾個重載。Add() 和 Insert() 之間的唯一區別是,Add() 返回對已緩存對象的引用,而 Insert() 沒有返回值(在 C# 中為空,在 VB 中為 Sub)。

示例

Cache.Insert("key", myXMLFileData, new System.Web.Caching.CacheDependency(Server.MapPath("users.xml")));

該示例可將文件中的 xml 數據插入緩存,無需在以後請求時從文件讀取。 CacheDependency 的作用是確保緩存在文件更改後立即到期,以便可以從文件中提取最新數據,重新進行緩存。如果緩存的數據來自若干個文件,還可以指定一個文件名的數組。

Cache.Insert("dependentkey", myDependentData, new System.Web.Caching.CacheDependency(new string[] {}, new string[]

{"key"}));

該示例可插入鍵值為 "key" 的第二個數據塊(取決於是否存在第一個數據塊)。如果緩存中不存在名為 "key" 的鍵,或者如果與該鍵相關聯的項已到期或被更新,則 "dependentkey" 的緩存條目將到期。

Cache.Insert("key", myTimeSensitiveData, null, DateTime.Now.AddMinutes(1), TimeSpan.Zero);

絕對到期:此示例將對受時間影響的數據緩存一分鍾,一分鍾過後,緩存將到期。注意,絕對到期和滑動到期(見下文)不能一起使用。

Cache.Insert("key", myFrequentlyAccessedData, null,

System.Web.Caching.Cache.NoAbsoluteExpiration,

TimeSpan.FromMinutes(1));

滑動到期:此示例將緩存一些頻繁使用的數據。數據將在緩存中一直保留下去,除非數據未被引用的時間達到了一分鍾。注意,滑動到期和絕對到期不能一起使用。

更多選項

除了上面提到的依賴項,我們還可以指定項的優先順序(依次為 low、high、NotRemovable,它們是在 System.Web.Caching.CacheItemPriority 枚舉中定義的)以及當緩存中的項到期時調用的 CacheItemRemovedCallback 函數。大多數時候,默認的優先順序已經足夠了 — 緩存引擎可以正常完成任務並處理緩存的內存管理。CacheItemRemovedCallback 選項考慮到一些很有趣的可能性,但實際上它很少使用。不過,為了說明該方法,我將提供它的一個使用示例:

CacheItemRemovedCallback 示例

System.Web.Caching.CacheItemRemovedCallback callback = new System.Web.Caching.CacheItemRemovedCallback (OnRemove);

Cache.Insert("key",myFile,null,

System.Web.Caching.Cache.NoAbsoluteExpiration,

TimeSpan.Zero,

System.Web.Caching.CacheItemPriority.Default, callback);

. . .

public static void OnRemove(string key,

object cacheItem,

System.Web.Caching.CacheItemRemovedReason reason)

{

AppendLog("The cached value with key " + key +

" was removed from the cache. Reason: " +

reason.ToString());

}

該示例將使用 AppendLog() 方法(這里不討論該方法,請參閱 Writing Entries to Event Logs)中定義的任何邏輯來記錄緩存中的數據到期的原因。通過在從緩存中刪除項時記錄這些項並記錄刪除的原因,您可以確定是否在有效地使用緩存或者您是否可能需要增加伺服器上的內存。注意,callback 是一個靜態(在 VB 中為 Shared)方法,建議使用該方法的原因是,如果不使用它,保存回調函數的類的實例將保留在內存中,以支持回調(對 static/Shared 方法則沒有必要)。
該特性有一個潛在的用處 — 在後台刷新緩存的數據,這樣用戶永遠都不必等待數據被填充,但數據始終保持相對較新的狀態。但實際上,此特性並不適用於當前版本的緩存 API,因為在從緩存中刪除緩存的項之前,不觸發或不完成回調。因此,用戶將頻繁地發出嘗試訪問緩存值的請求,然後發現緩存值為空,不得不等待緩存值的重新填充。我希望在未來的 ASP.NET 版本中看到一個附加的回調,可以稱為 ,如果定義了該回調,則必須在刪除緩存項之前完成執行。

緩存數據引用模式

每當我們嘗試訪問緩存中的數據時,都應該考慮到一種情況,那就是數據可能已經不在緩存中了。因此,下面的模式應該普遍適用於您對緩存的數據的訪問。在這種情況下,我們假定已緩存的數據是一個數據表。

public DataTable GetCustomers(bool BypassCache)

{

string cacheKey = "CustomersDataTable";

object cacheItem = Cache[cacheKey] as DataTable;

if((BypassCache) (cacheItem == null))

{

cacheItem = GetCustomersFromDataSource();

Cache.Insert(cacheKey, cacheItem, null,

DateTime.Now.AddSeconds(GetCacheSecondsFromConfig(cacheKey),

TimeSpan.Zero);

}

return (DataTable)cacheItem;

}

關於此模式,有以下幾點需要注意:

某些值(例如,cacheKey、cacheItem 和緩存持續時間)是一次定義的,並且只定義一次。

可以根據需要跳過緩存 — 例如,當注冊一個新客戶並重定向到客戶列表後,最好的做法可能就是跳過緩存,用最新數據重新填充緩存,該數據包括新插入的客戶。

緩存只能訪問一次。這種做法可以提高性能,並確保不會發生 NullReferenceExceptions,因為該項在第一次被檢查時是存在的,但第二次檢查之前就已經到期了。

該模式使用強類型檢查。C# 中的 "as" 運算符嘗試將對象轉換為類型,如果失敗或該對象為空,則只返回 null(空)。

持續時間存儲在配置文件中。在理想的情況下,所有的緩存依賴項(無論是基於文件的,或是基於時間的,還是其他類型的依賴項)都應該存儲在配置文件中,這樣就可以進行更改並輕松地測量性能。我還建議您指定默認緩存持續時間,而且,如果沒有為所使用的 cacheKey 指定持續時間,就讓 GetCacheSecondsFromConfig() 方法使用該默認持續時間。

相關的代碼示例是一個 helper 類,它將處理上述所有情況,但允許通過一行或兩行代碼訪問緩存的數據。請下載 CacheDemos.msi。

小結

緩存可以使應用程序的性能得到很大的提高,因此在設計應用程序以及對應用程序進行性能測試時應該予以考慮。應用程序總會或多或少地受益於緩存,當然有些應用程序比其他應用程序更適合使用緩存。對 ASP.NET 提供的緩存選項的深刻理解是任何 ASP.NET 開發人員應該掌握的重要技巧。

盡早緩存;經常緩存

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

緩存可以掩蓋許多過失

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

頁面級輸出緩存

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

⑧ NET中System.Web.Caching.Cache緩存默許有效期是多久

這個應該是應用程序的一個生命周棚知期吧,就是程序世辯開始到程序結束,如果你不手動破壞的壞應該是就程序停止運行了,cache才鏈返消能被清理.

⑨ asp.net 滑動緩存 總是3分鍾左右過期為什麼優先順序已經是NotRemovable

你看看是不是瀏覽器的原因: 工具-- 內容 有關於 緩存的設置

⑩ asp.net cache[]保存時間是多久

cache保存的時間。需要分幾個點來看


  1. 你設置cache時,是採用的絕對過期搜乎時間,還是相對過期時間?

    如果是絕對過期時間(比如1分鍾):那麼時間到了,就移除了。不存在了。

    如果是相對過期時間(比如1分鍾):那麼只要在1分鍾內,cache被訪問,那麼移除時間往後延遲1分鍾。也就是說,只要在相對過期時間內,被訪問。那麼永遠不會過期(iis由於內存不足刪除除外)

  2. 依賴項過期,也就是你的cache依賴某個文件。如果這個文件不被修改,那麼cache不會過期(iis內存不足刪除除外)

  3. 每個cache在保存時,都褲租有其保存級別(也就是當iis內存不足時,是否刪除cache)。當iis內存不足時,就會開始由低到高(cache的級別)開始清理cache。這時,就不是你設置cache所能控制的了的。當iis內存不足,並且清理了低級別的cache依舊不足,那麼再高級別的cache也會被刪胡漏兆除