asp.net - 我可以使用 ASP.NET 'OutputCache' 控件缓存图像而不影响性能吗?

标签 asp.net outputcache

我有一些动态生成图像的 ASP.NET MVC 操作(尽管它同样可以是一个 ASPX 页面)。

我正在使用 [OutputCache] 来缓存这些图像。我只是想知道我是否需要担心 ASP.NET 在内存中缓存图像并占用太多资源。这些是仅包含几十种产品的购物车的不同尺寸的产品图像。

OutputCache 将使用磁盘还是仅在内存中?它有多聪明?或者我应该自己将图像保存到磁盘并实现我自己的缓存系统(这实际上是当前的实现)?

最佳答案

出于所有意图和目的,我相信输出缓存完全在内存中——这意味着如果应用程序池被回收,图像将需要再次生成。

过去我不得不做类似的事情,实际上我实现了一个主要使用 HTTP 缓存的两层系统,并使用文件系统作为后备。如果某些东西不存在,我会生成图像并将其保存到磁盘并将其放入缓存中。这样,如果它被推出缓存或应用程序池回收,我只需要将它从磁盘加载(看起来你已经做了同样的事情)。

至于“内存过多”,如果明确使用HttpContext.Cache而不是[OutputCache],则可以控制缓存中item的优先级。然后,您可以调整应用程序池上的设置以控制它总体使用的内存量,但我不确定除此之外还有很多工作要做。几张图片 * 12 个产品对我来说似乎不会占用大量内存。

在不了解您的应用程序的任何其他信息的情况下,在我看来,您只需使用 outputcache 就可以逃脱。但是,如果您需要更健壮和可扩展的东西,我会使用我描述的两层系统。不过,如果你已经实现并工作了,“如果它没有坏掉......”

关于asp.net - 我可以使用 ASP.NET 'OutputCache' 控件缓存图像而不影响性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/489447/

相关文章:

c# - 返回 json 结果并将 null 转换为空字符串

asp.net - 将 ADFS 与 ASP.NET Web 应用程序集成的最简单方法

asp.net - 在ASP.NET中强制缓存过期的最佳方法是什么?

javascript - 如何确保永远不会缓存动态生成的 javascript 文件?

c# - Azure Blob 的 sqlCacheDependency

asp.net - 这是从 ASP.NET MVC Controller 返回不同 View 的正确模式吗?

asp.net - 如何从 SQL 查询中过滤具有唯一 ID 的旧条目

asp.net - CollapsiblePanelExtender 在初始页面加载时不会完全打开

asp.net - 列出 OutputCache 条目

asp.net - 在 ASP.NET 网页/WebMatrix 项目中启用输出缓存