启用客户端缓存
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服务器燃纳带上开启了缓存就是已经生茄尘效了。