ASP.NET自定义输出缓存提供程序

来源:未知 责任编辑:责任编辑 发表时间:2015-09-16 20:04 点击:

 我们知道,自从ASP.NET 发布以来,页输出缓存使开发人员能够把由网页、控件及HTTP响应等生成的输出内容存储到内存中。这样一来,在后面的Web请求时,系统能够从内存检索这些生成的输出内容而不是从头开始重新生成输出,从而使ASP.NET可以更迅速地提供内容,在性能上得到了很大的提高。但是,这种方法确有一个限制:即生成的内容一定要存储在内存中。这样一来,服务器将承受巨大流量带来的压力,输出缓存消耗的内存与来自Web应用程序的其他部分的内存需求之间导致严重冲突。
      针对上述情况,ASP.NET 4针对输出缓存增加了一个扩展点,它能够使你可以配置一个或多个自定义输出缓存提供程序。输出缓存提供程序可以使用任何的存储机制来存储HTML内容。这使得开发者有可能针对不同的持久性机制来创建自定义的输出缓存提供程序,其中可以包括本地或远程磁盘、数据库、云存储和分布式缓存引擎(如velocity、memcached)等等。
      要实现自定义输出缓存提供程序,你可以通过从System.Web.Caching.OutputCacheProvider类中派生一个类来创建自定义输出缓存提供程序。例如,下面的MyOutputCacheProvider类就是派生自OutputCacheProvider类,并创建了一个自定义输出缓存提供程序,如代码清单19-5所示:
      代码清单19-5:MyOutputCacheProvider.cs
using System;

using System.Collections.Generic;

using System.IO;

using System.Linq;

using System.Runtime.Serialization.Formatters.Binary;

using System.Timers;

using System.Web.Caching;

using System.Collections.Concurrent;

namespace _19_1

{

    public class MyOutputCacheProvider : OutputCacheProvider

    {

        private Timer timer;

        private string cachePath = "C:\\Cache\\";

        private ConcurrentDictionary<string, DateTime>

cacheExpireList;

        private const string KEY_PREFIX = "__outputCache_";

        public MyOutputCacheProvider()

        {

            cacheExpireList =

new ConcurrentDictionary<string, DateTime>();

            timer = new Timer(3000);

            timer.Elapsed += (o, e) =>

            {

                var discardedList = from cacheItem in cacheExpireList

                             where cacheItem.Value < DateTime.Now

                             select cacheItem;

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • 浅析.NET下XML数据访问新机制
  • asp.net 面试+笔试题目第1/2页
  • C# 邮件地址是否合法的验证
  • asp.net 设置GridView的选中行的实现代码
  • C#高级编程:数据库连接[1]
  • ASP.NET&#160;GridView列表代码示例
  • 经典C++程序1
  • 微软ASP.NET站点部署指南(2):部署SQL Server Compact数据库
  • 微软ASP.NET站点部署指南(3):使用Web.Config文件的Transforma
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1