【问题标题】:Caching Strategy for ASP.NET MVC / GeneratedImageASP.NET MVC / GeneratedImage 的缓存策略
【发布时间】:2011-04-09 00:49:21
【问题描述】:

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

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

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

提前谢谢

【问题讨论】:

  • 所以你不把拇指放在硬盘上而是每次都在运行中生成它们?然后尝试通过缓存“保存”?
  • 目前我正在快速制作拇指。但它们是临时产品。所以我认为有一些缓存是一个好主意,它可以比我创建它更快地传递拇指。在我看来,将它“保存”到磁盘也是一种缓存。 GeneratedImage 这样做 - 它将图像存储到磁盘,但仅限于 5 分钟,我认为这太短了。这就是为什么我一直在寻找更好的组件来建立智能缓存机制。由于可能使用的空间量,无法将所有拇指存储到磁盘。

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


【解决方案1】:

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

【讨论】:

  • 由于这只是一个学习和更好理解 ASP.NET MVC 的项目,我不想为此花钱;)
  • 既然是唯一能做的组件,我想到的,就奖励50分给你。
【解决方案2】:

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

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

ImageHandler 有一个 ImageHandlerInternal 类型的私有字段实现。这个完成了整个工作。它使用 IImageStore 的实现来完成整个服务器端的缓存。 IImageStore 是 Microsoft.Web 的内部接口。没有办法实现自己的图像存储。处理程序是一个内部类。无法自行扩展。

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

编辑:

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

【讨论】:

  • 问题不在于缩略图的物理创建。这只是缓存。有没有像 GeneratedImage 这样的其他 ImageHandler,或者最好缓存整个站点?有什么解决方案吗?这主要是我要找的。​​span>
【解决方案3】:

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

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

【讨论】:

  • 这个想法听起来很有趣......所以你能发布代码,如何将图像上传到 Amazon S3?目前我不知道怎么做。
  • @BiKFu 寻找如此具体的东西会比让发布答案的人浏览他们的文件并修改它以使其安全共享要快得多...顺便说一句,+1对这个答案
【解决方案4】:

我认为,您可以将图像的 url(本地或云)保存到您的数据存储中,并在打开应用程序时,在 UI 布局中显示许多 标签src 设置为保存的源。这样页面加载会更快,因为图像加载只会在文档加载/准备好之后发生,因为浏览器可以同时向这些不同的 url 发出异步请求。

【讨论】:

    猜你喜欢
    • 2010-12-12
    • 1970-01-01
    • 2011-11-12
    • 2010-10-26
    • 1970-01-01
    • 2023-04-08
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多