我目前正在使用asp.net MVC开发图像查看器。图像查看器本身就像一个魅力,但我对缓存不满意。
要解释:我正在使用GeneratedImage(http://aspnet.codeplex.com/releases/view/16449)来生成拇指,但服务器端缓存仅限于5分钟,据我所知,无法更改。< / p>
所以我的问题是,如果有另一种解决方案来缓存生成的拇指或整个网站(包含生成的图像) - 如果可能的话。
提前谢谢
答案 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发出异步请求。