啟用客戶端緩存
1. 手機客戶端無法緩存怎麼辦
以愛奇藝客戶端為例:
第一步、用手機瀏覽器打開愛奇藝網站;
第二步、找到因版權受限而無法緩存下載的視頻,點擊播放窗口右下角的「下載」按鈕;
之後瀏覽器將自動跳轉到客戶端並開始在線視頻的緩存工作;
若視頻不會自動緩存,可輕觸屏幕任意位置,你會發現頁面右側的「緩存」按鈕已從「無法緩存」變成正常狀態,點擊即可下載;
如需緩存該節目的其他劇集,可點擊緩存頁面右上角的「添加」按鈕,直接選擇下載。
2. asp.net怎麼設置瀏覽器客戶端緩存
1. Expires:+過期時間
表示在指定時間後瀏覽器緩存失效,需要注意的是這兒的過期時間必須是HTTP格式的日期時間,其他的都會被解析成當前時間「之前」,緩存會馬上過期,HTTP的日期時間必須是格林威治時間(GMT),而不是本地時間。舉例:
3. 瀏覽器緩存(http緩存)
瀏覽器緩存有兩種:強制緩存和協商緩存
向瀏覽器緩存中查找請求結果,根據【緩存規則】決定是否使用該結果。
強制緩存失效後,攜帶緩存標識請求伺服器,伺服器根據緩存標識判斷是否使用緩存
當瀏覽器向伺服器發送請求的時候,伺服器會將緩存規則放入HTTP響應的報文的HTTP頭中和請求結果一起返回給瀏覽器(ps:下文說的時間點均為類似:Sat Aug 14 2021 11:01:52,秒級)
兩個欄位:Expires和Cache-Control,優先順序:Cache-Control > Expires,客戶端比較時間
Expires :HTTP/1.0,返回值為【到期時間點】,再次請求,客戶端的時間< Expires,直接用緩存(ps:客戶端與伺服器端時間可能存在誤差,出問題)
Cache-Control :HTTP/1.1,有以下欄位
Last-Modified / If-Modified-Since 和 Etag / If-None-Match,優先順序Etag > Last-Modified,伺服器比較時間
Last-Modified(服務端返回客戶端) / If-Modified-Since(客戶端傳入服務端) :兩個冊慎值相同,表示:資源文件在伺服器最後裂姿談被修改的時間【時間點】。
Etag(服務端返回客戶端) / If-None-Match(客戶端傳入服務端) ,兩個值相同,為當前資源文件的一個唯一標識(由伺服器生成)
Etag什麼時候用
雅虎禁用了Etag:因為ETag的值和伺服器有關,那麼對於同樣的文件,可能下次請求的時候是發給不同的伺服器,結果也會重新發送數據,所以就會影響網頁載入速度,增加伺服器的壓力(但Last-Modified也與伺服器有關)
主要解決的問題:
瀏覽器的每個tab都是一個進程
兩個緩存的肆碰地方 from memory cache(內存緩存) 和 from disk cache(硬碟緩存) ,讀取順序為memory > disk
4. 如何使用 Windows Azure Caching
Windows Azure Caching 入門
Windows Azure Caching 提供了一種使用承載角色實例的虛擬機上的內存來進行緩存的方法。承載緩存的角色實例稱為緩存群集。專用角色緩存 - 這些角色實例專用於緩存。
若要在角色實例中使用緩存,您需要配置緩存群集,然後配置緩存客戶端以便它們可以訪問緩存群集。
配置緩存群集
配置緩鬧型存客戶端
配置緩存群集
若要配置專用角色緩存群集,請向項目中添加緩存輔助角色。
在向項目中添加緩存輔助角色後,默認配置是專用角色緩存。
在啟用緩存後,可以配置緩存群集存儲帳戶。Windows Azure Caching 需要 Windows Azure 存儲帳戶。此存儲帳戶用於保存從組成緩存群集的所有虛擬機訪問的緩存群集的相關配置數據。此存儲帳戶在緩存群集角色屬性頁的「緩存」選項卡上的「命名緩存設置」上方指定。
如果沒有配置此存儲帳戶,則角色將無法啟動。
緩存的大小由角色的 VM 大小、角色的實例計數共同決定。
本節提供了有關配置緩存大小的簡單概述。有關緩存大小及其他容量規劃注意事項的更多信息,請參見 Windows Azure Caching 容量規劃注意事項。
若要配置虛擬機大小和角色實例數,請在「解決方案資源管理器」中右鍵單擊角色屬性,然後選擇「屬性」。
切換到「配置」選項卡。默認的「實例計數」為 1,默認的「VM 大小」為「小型」。
VM 大小的總內存如下:
小型:1.75 GB
中型:3.5 GB
大型:7 GB
超大型:14 GB
這些內存大小表示可用於跨 OS、緩存進程、緩存數據和應用程序共享的 VM 的內存總量。有關配置虛擬機大小的更多信息,請參見如何配置虛擬機大小。請注意,特小型 VM 大小不支持緩存。
在指定專用角色緩存後,虛擬機的所有可用內存均用於緩存。如果配置了兩個角色實例,將使用虛擬機的組合內存。這構成了緩存群集,其中的可用緩存內存分布在多個角色實例上,但對緩存的客戶端顯示為單個資源。配置其他角色實例會以相液此猜同方式增加緩存大小。若要確定設置所需大小的緩存所需的設置,您可以使用 Windows Azure Caching 容量規劃注意事項中的容量規劃電子表格。
在配置緩存群集後,可以配置緩存客戶端以允許訪問緩存。
配置緩存客戶端
若要訪問 Windows Azure Caching 緩存,客戶端必須位於同一部署中。如果緩存群集是專用角色緩存群集,則客戶端是部署中的其他角色。提供了 NuGet 包,它可用於配置訪問緩存的每個客戶端角色。若要使用 Caching NuGet 包配置角色以訪問緩存群集,請在「解決方案資源管理器」中右鍵單擊角色項目,然後選擇「管理 NuGet 包」。
選擇「Windows Azure Caching」,單擊「安裝」,然後單擊「我接受」。
如果「Windows Azure Caching」沒有顯示在列表中,請在「聯機搜索」文本框中鍵入 WindowsAzure.Caching,然後從結果中選擇它。
NuGet 包可執行多項操作:它將所需配置添加到角色的配置文件中,將緩存客戶端診斷級別設置添加到 Windows Azure 應用程序的 ServiceConfiguration.cscfg 文件中,並添加所需的程序集引用。
對於 ASP.NET Web 角色,Caching NuGet 包還將兩個注釋掉的節扒襲添加到 web.config 中。第一個節允許會話狀態存儲在緩存中,第二個節啟用 ASP.NET 頁面輸出緩存。有關更多信息,請參見如何:在緩存中存儲 ASP.NET 會話狀態和如何:在緩存中存儲 ASP.NET 頁面輸出緩存。
NuGet 包將以下配置元素添加到角色的 web.config 或 app.config 中。將 dataCacheClients 節和 cacheDiagnostics 節添加到configSections 元素之下。如果 configSections 元素不存在,則會創建一個作為 configuration 元素的子級。
<configSections>
<!-- Existing sections omitted for clarity. -->
<section name="dataCacheClients"
type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core"
allowLocation="true"
allowDefinition="Everywhere" />
<section name="cacheDiagnostics"
type="Microsoft.ApplicationServer.Caching.AzureCommon., Microsoft.ApplicationServer.Caching.AzureCommon"
allowLocation="true"
allowDefinition="Everywhere" />
</configSections>
這些新節包括對 dataCacheClients 元素和 cacheDiagnostics 元素的引用。這些元素還添加到 configuration 元素中。
<dataCacheClients>
<dataCacheClient name="default">
<autoDiscover isEnabled="true" identifier="[cache cluster role name]" />
<!--<localCache isEnabled="true" sync="TimeoutBased" objectCount="100000" ttlValue="300" />-->
</dataCacheClient>
</dataCacheClients>
<cacheDiagnostics>
<crashDump mpLevel="Off" mpStorageQuotaInMB="100" />
</cacheDiagnostics>
在添加配置後,將 [cache cluster role name] 替換為承載緩存群集的角色的名稱。
如果沒有將 [cache cluster role name] 替換為承載緩存群集的角色的名稱,則在訪問緩存時會引發TargetInvocationException,其內部 DatacacheException 將顯示消息「No such role exists」。
NuGet 包還將 ClientDiagnosticLevel 設置添加到 ServiceConfiguration.cscfg 中的緩存客戶端角色的 ConfigurationSettings中。下面的示例是 ServiceConfiguration.cscfg 文件中的 WebRole1 節,其 ClientDiagnosticLevel 為 1,這是默認的ClientDiagnosticLevel。
<Role name="WebRole1">
<Instances count="1" />
<ConfigurationSettings>
<!-- Existing settings omitted for clarity. -->
<Setting name="Microsoft.WindowsAzure.Plugins.Caching.ClientDiagnosticLevel"
value="1" />
</ConfigurationSettings>
</Role>
Windows Azure Caching 同時提供了緩存伺服器和緩存客戶端診斷級別。診斷級別是配置為緩存收集的診斷信息級別的單個設置。有關更多信息,請參見解決和診斷 Windows Azure Caching 問題
NuGet 包還添加對以下程序集的引用:
Microsoft.ApplicationServer.Caching.Client.dll
Microsoft.ApplicationServer.Caching.Core.dll
Microsoft.WindowsFabric.Common.dll
Microsoft.WindowsFabric.Data.Common.dll
Microsoft.ApplicationServer.Caching.AzureCommon.dll
Microsoft.ApplicationServer.Caching.AzureClientHelper.dll
如果您的角色是 ASP.NET Web 角色,則還添加以下程序集引用:
Microsoft.Web.DistributedCache.dll。
這些程序集位於 C:\Program Files\Microsoft SDKs\Windows Azure\.NET SDK\2012-10\ref\Caching\ 文件夾中。
在配置了您的客戶端項目的緩存後,您可以使用以下各節中介紹的方法來使用您的緩存。
使用緩存
本節中的步驟介紹如何使用緩存執行常見任務。
如何:創建 DataCache 對象
如何:在緩存中添加和檢索對象
如何:在緩存中指定對象的有效期
如何:在緩存中存儲 ASP.NET 會話狀態
如何:在緩存中存儲 ASP.NET 頁面輸出緩存
如何:創建 DataCache 對象
若要以編程方式使用緩存,您需要引用該緩存。將以下代碼添加到要從中使用 Windows Azure Caching 的任何文件的頂部:
using Microsoft.ApplicationServer.Caching;
如果在安裝了添加必要引用的 Caching NuGet 包後,Visual Studio 仍不能識別 using 語句中的類型,請確保項目的目標配置文件是 .NET Framework 2.0 或更高版本,並確保選擇沒有指定客戶端配置文件的配置文件之一。有關配置緩存客戶端的說明,請參見配置緩存客戶端。
創建 DataCache 對象有兩種方法。第一種方法是僅創建 DataCache,並傳入所需緩存的名稱。
DataCache cache = new DataCache("default");
在實例化 DataCache 後,您可以使用它來與緩存交互,如以下各節中所述。
若要使用第二種方法,請在您的應用程序中使用默認的構造函數創建新的 DataCacheFactory 對象。這會導致緩存客戶端使用配置文件中的設置。調用新的 DataCacheFactory 實例的 GetDefaultCache 方法,該方法返回 DataCache 對象,或調用 GetCache 方法並傳入您的緩存的名稱。這些方法返回以後可用於以編程方式訪問緩存的 DataCache 對象。
// Cache client configured by settings in application configuration file.
DataCacheFactory cacheFactory = new DataCacheFactory();
DataCache cache = cacheFactory.GetDefaultCache();
// Or DataCache cache = cacheFactory.GetCache("MyCache");
// cache can now be used to add and retrieve items.
如何:在緩存中添加和檢索對象
若要向緩存中添加項,可以使用 Add 或 Put 方法。Add 方法將指定的對象添加到緩存中,並按鍵參數的值進行鍵控。
// Add the string "value" to the cache, keyed by "item"
cache.Add("item", "value");
如果緩存中已存在具有相同鍵的對象,將引發 DataCacheException 並顯示以下消息:
ErrorCode:SubStatus:An attempt is being made to create an object with a Key that already exists in the cache.Caching will only accept unique Key values for objects.
若要檢索具有特定鍵的對象,可以使用 Get 方法。如果對象存在,則返回它,如果對象不存在,則返回 null。
// Add the string "value" to the cache, keyed by "key"
object result = cache.Get("Item");
if (result == null)
{
// "Item" not in cache. Obtain it from specified data source
// and add it.
string value = GetItemValue(...);
cache.Add("item", value);
}
else
{
// "Item" is in cache, cast result to correct type.
}
如果具有指定鍵的對象不存在,則 Put 方法將該對象添加到緩存中,如果該對象存在,則替換它。
// Add the string "value" to the cache, keyed by "item". If it exists,
// replace it.
cache.Put("item", "value");
如何:在緩存中指定對象的有效期
默認情況下,緩存中的項在放入緩存中 10 分鍾後到期。這可在承載緩存群集的角色的角色屬性中的「生存時間(分鍾)」設置中進行配置。
有三種類型的「過期類型」:「無」、「絕對」和「可調窗口」。這些類型配置如何使用「生存時間(分鍾)」來確定有效期。默認的「過期類型」為「絕對」,這意味著在將項放入緩存中時,記錄該項有效期的倒計時器即會啟動。在項經過指定的時間後,該項過期。如果指定了「可調窗口」,則在每次訪問緩存中的項時,會重置該項的有效期倒計時,並且僅在自上次訪問該項後經過指定的一段時間後,該項才會過期。如果指定了「無」,則「生存時間(分鍾)」必須設置為「0」,並且項不會過期,只要它們在緩存中就會保持有效。
如果需要比在角色屬性中配置的時間更長或更短的超時時間間隔,則可以在緩存中添加或更新項時,使用採用 TimeSpan 參數的 Add和 Put 的重載來指定特定持續時間。在下面的示例中,將字元串 value 添加到緩存中,按 item 進行鍵控,且超時為 30 分鍾。
// Add the string "value" to the cache, keyed by "item"
cache.Add("item", "value", TimeSpan.FromMinutes(30));
若要查看緩存中的項的剩餘超時時間間隔,可以使用 GetCacheItem 方法來檢索 DataCacheItem 對象,該對象包含有關緩存中項的信息,其中包括剩餘超時時間間隔。
// Get a DataCacheItem object that contains information about
// "item" in the cache. If there is no object keyed by "item" null
// is returned.
DataCacheItem item = cache.GetCacheItem("item");
TimeSpan timeRemaining = item.Timeout;
5. 優酷客戶端怎麼緩存
1、優酷視頻上緩存,首先要在客戶端上播放需要緩存的視頻。
6. 打開熱血戰隊顯示網路遇到故障啟用客戶端緩存地址是什麼意思
網路出現錯誤,使用備用地址
7. Redis 6 將採用全新協議 RESP3,以提供客戶端緩存功能
Redis 創始人兼核心開發者 antirez 在博客介紹了將在 Redis 6 提供的新功能 —— Client side caching(客戶端緩存) 。
antirez 表示 全新的 Redis 協議 RESP3 將是 Redis 6 中最重要的特性,並解釋了他為何如此急切地改進 Redis 協議,原因主要有兩個,一是因為希望能為客戶端提供更多的語義化響應(semantical replies),以開發使用舊協議難以實現的功能;另一個原因也是 antirez 認為最重要的一個,實現 Client side caching(客戶端緩存)功能 。 這個功能十分常見,但 Redis 尚未提供。
當使用者需要進行快速存儲或快速取操作時,就需要在客戶端內存中存儲一小部分信息,這是為了降低程序獲取數據時的延遲。此功能在大規模的應用程序上十分重要,因為數據離應用程序越近,程序就能更快獲取到數據。
antirez 受 Ben Malec 演講的啟發,他想到可以將大部分需要頻繁存和取的數據直接放在伺服器的內存中,以便讓 Redis 為客戶端完成部分工作,並使客戶端緩存更簡單、更有效。這個就是 Client side caching(客戶端緩存)的概念。
不過這個思路有一個需要解決的問題是,如何控制數據彎雀皮的有效時間?在程序允許的情況下,雖然可以直接設置數據的有效時間,讓數據在一段時間後失效。但 antirez 表示,大多數的應用程序無法接受提供過時的數據的風險,因此必須找到更理想的方案來控制數據的失效時間。
所以 antirez 決定開發新的協議 RESP3,在協議中加入新特性來支持客戶端緩存功能,保證存儲在客戶端內存的數據,在收到來自伺服器的失效通知時才失效。
另外,當客戶端和伺服器的連接中斷時,客戶端無法接收到數據失效通知,這可能會導致服務出現問題。針對這種情況,一般的做法是重新建立客戶端和伺服器之間的連接,並更新客戶端當前的緩存。antirez 表示可以一直保持連接是最好的情況,但為了降低風險,Redis 伺服器在與客戶端斷開連接時,會將失效通知發送給其他客戶端埋差。
這項名為"Client side caching"的功能尚未正式確定名字,最後可能會被成為"Tracking"。Redis 作者還表示在 Redis 6 候選版發布之前,這些功能都會進行調整,希望社區能積極反饋意見。
由於 Client side caching 功能需要使用 RESP3 協議來支持實現,antirez 表示會想辦法通過 RESP2 協議也能啟用此功能。
閱歲配讀原文:「鏈接」
8. 愛奇藝電腦客戶端怎麼緩存視頻
下載安裝愛奇藝視頻客戶端,點--搜索,彈出窗口
然後,輸入要看的視頻節目名字,搜索
然後會出現搜索到的視頻節目,點開想要看的視頻,然後點擊緩存,如果看正在緩存的視頻,點--離線蠢殲緩存
等緩存100%完畢就可以離線觀看了,優酷、PPS等客戶端的使用臘檔中方法相似,就不再重復輪山。
9. 客戶端緩存
這樣可以清除緩存:
System.Web.HttpContext.Current.Cache.Remove(string CacheName)
如果你的圖片更新頻繁,你就沒必要把那個圖片加入到緩存,如果一定要加,而又不想每次刷新都清除緩存,那你只有給你改變過的圖片加上標識...
緩存是為了把一些變更少的內容保存在客戶端,如果你的圖片老在更新的話,那我覺得那個圖片不應該在緩存的范圍內,當然如果你有辦法強制清除用戶的緩存的話,這個也不難實。關鍵的是,你的圖片是同名,你怎麼來判斷那圖片已經改變?
10. 在ISA2006中,SNAT客戶端怎麼使用網頁緩存
不管是用SNAT和Proxy,還是防火牆模式,網皮蘆頁緩存針對Http和FTP協議的。只要在ISA伺服器燃納帶上開啟了緩存就是已經生茄塵效了。