输出缓存前世ASP.NET 1.0引入了输出缓存的概念,它使开发人员能够将页面、控件、控制器和HTTP响应的输出缓存到内存中。在随后的网络请求中,ASP.NET可以使用缓存中的内容来更快地做出响应。ASP。NET的输出缓存系统足够灵活,我们可以根据不同的查询字符串或表单发布参数缓存不同版本的内容。例如test.aspx?Category=Vegerable和test.aspx?category.aspx?类别=肉类.它还允许我们根据浏览器类型或用户语言偏好缓存不同版本的内容。例如,您可以为应用程序的移动版本缓存一份数据,为桌面版本缓存另一份数据。我们还可以通过配置ASP.NET来为缓存的项目设置特定的缓存时间(例如1分钟)。我们还可以配置ASP.NET的缓存项,根据外部事件(如数据库数据更新)动态更新缓存。但是,ASP.NET v1到ASP.NET v 3.5只允许内存缓存。4 ASP.NET输出缓存扩展ASP.NET 4扩展输出缓存,因此我们可以配置一个或多个输出缓存提供程序。输出缓存提供程序可以使用任何存储机制来保存输出缓存内容。这使我们能够将缓存的内容存储在本地或远程磁盘、数据库、云或分布式缓存引擎(如memcached或velocity)中。我们可以通过集成系统来定制自己的输出缓存提供程序。ASP.NET的web . cache . output cacheprovider类。然后,我们通过四种公共方法添加/删除/检索/更新缓存内容(每个缓存项必须由唯一的键来标识)。然后我们在web.config文件中注册这个自定制的输出缓存提供程序,如下所示:。
上面,我添加了一个名为SampleCache的输出缓存提供程序,它是由OutputCacheSample.dll程序集中的ScottOutputCache类实现的。同时,我还将ASP.NET的默认输出缓存提供者设置为SampleCache,也就是通过上面的defaultProvider。现在,每当我向aspx页面添加以下指令时,页面内容将被ScottOutputCache缓存:% @ Output Cache Duration=' 60 ' Varybyparam=' None ' %同样,如果我向操作添加[OutputCache]属性,Pages将被ScottOutputCache缓存:复制的代码如下:[Output Cache(Duration=60)]公共操作结果浏览(字符串类别){ return view();}自定义要使用的输出缓存提供程序。我只提供了默认的样本缓存输出缓存提供程序。事实上,开发人员可以根据每个请求动态选择输出缓存提供程序。例如,我们可以使用ASP。NET的主页和Top 10页面的内置内存提供程序(它超级快,因为内容存储在内存中),并将不常使用的请求页面缓存到磁盘。我们可以重载Global.asax的应用程序的GetOutputCacheProviderName()。要实现上述要求:复制代码如下: public class global 3360 system . web . httpapplication { public override string getoutputcacheprovider name(httpcontextcontext) { if(context。request . path . endswith(' home . aspx '){ return ' AspNetInternalProvider ';} else {返回基数。GetOutputCacheProviderName(上下文);}}}这样,我们使用ASP。NET的内存缓存提供程序,而其他请求则使用在web.config中配置的缓存提供程序