ASP.NET MVC / GeneratedImage的缓存策略

时间:2010-09-07 05:35:54

标签: asp.net-mvc asp.net-mvc-2 caching

我目前正在使用asp.net MVC开发图像查看器。图像查看器本身就像一个魅力,但我对缓存不满意。

要解释:我正在使用GeneratedImage(http://aspnet.codeplex.com/releases/view/16449)来生成拇指,但服务器端缓存仅限于5分钟,据我所知,无法更改。< / p>

所以我的问题是,如果有另一种解决方案来缓存生成的拇指或整个网站(包含生成的图像)​​ - 如果可能的话。

提前谢谢

4 个答案:

答案 0 :(得分:1)

查看Nathanael Jones的Image Resizing Module。它在一个简单的模块中进行缩略和可配置缓存。它不是免费的,但它非常易于使用和设置,而且效果非常好。

答案 1 :(得分:1)

我正在构建一些类似的应用程序,我不认为“缓存”生成的图像(特别是如果它们不会很快重新创建)是个好主意。我们采用的解决方案是将图像直接上传到Amazon S3,并将其用作永久缓存。

这样,您需要存储的只是一个新的URL,您可以免费获得Cloudfront系统,从而使您的图像加载速度更快。在最糟糕的情况下,如果你必须重新生成一个图像,你总是可以删除并重新创建S3上的对象,因为它不是一个非常昂贵的过程。

答案 2 :(得分:0)

是的,你的权利。缓存实现缺乏。

您可以启用客户端和服务器缓存。但是您只能设置客户端缓存超时。服务器缓存超时隐藏在私有字段,类和构造函数中。

ImageHandler有一个私有字段ImageHandlerInternal类型的实现。这个完成了整个工作。它使用IImageStore的实现,整个服务器端缓存是什么。 IImageStore是Microsoft.Web的内部接口。无法实现自己的imagestore。处理程序是一个内部类。无法通过自己的方式扩展它。

遗憾的是,这对用户来说是完全隐藏的。 寻找另一个样本,进行图像转换!那里有很多样本。 http://www.google.com/search?q=image+thumbnail+c%23

编辑:

有一些关于ashx处理程序的输出缓存的问题 以下使用客户端缓存How to use output caching on .ashx handler
Serverside缓存Caching http handler .ashx output

答案 3 :(得分:0)

我认为,您可以将图片的网址(本地或云端)保存到数据存储中,打开应用程序时,在UI布局中,显示许多 标记 src 设置为已保存的来源。因此,只有在文档加载/准备好之后才会加载页面,因为浏览器可以同时向这些不同的URL发出异步请求。