[转载]网站中的图片缓存

[转载]网站中的图片缓存 – MIDI 欢迎你:-) – 博客园.

动态页中存在大量图片而影响速度,是在项目开发中所不可以避免的问题,考虑缓存图片却保持页面的执行是个很不错的选择。
实现一个IhttpHandler对特定的文件格式进行处理,对于图片可以是.jpg也可以是其他的格式,当客户端请求有.jpg后缀的文件时IIS自动将文件交给asp_isapi执行然后实现IhttpHandler 接口中的ProcessRequest方法对页面进行缓存,同时还能对图片进行其他的操作,如添加水印,裁剪图片等操作。
具体操作流程如下:在IIS中配置网站添加一个.jpg映射交给asp_isapi处理然后在Web.Config中进行相关配置:
<httpHandlers>
<!–只处理.jpg文件,可以分目录缓存图片aaa/*.jpg–>
<addpath=*.jpgverb=*type=ImageCache.CachingHandler,ImageCache/>
</httpHandlers>
然后在创建一个类CachingHandler : IhttpHandler继承IhttpHandler接口
实现ProcessRequest方法
public void ProcessRequest(HttpContext context)
{
string imagePath = context.Request.PhysicalPath;//获取服务器路径
Bitmap image = null;
image = new Bitmap(imagePath);
context.Response.Cache.SetCacheability(HttpCacheability.Private);//在客户端缓存
context.Response.Cache.SetMaxAge(new TimeSpan(7, 0, 0, 0));//缓存时间为5秒
image.Save(context.Response.OutputStream, ImageFormat.Jpeg);
}
在页面中添加一个图片并执行这个事件
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(DateTime.Now.ToString());
}
可以看到页面没有被缓存但其中的图片确被缓存了下来。
图片缓存和水印实例 下载地址:http://d.download.csdn.net/down/454222/sunchaohuang
赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏