在 IIS 服务器上缓存大图像的最佳方法



我有一张2900x2379的图像。我创建了一个 asp.net ashx 处理程序,它将加载此图像并从中裁剪较小的图像,并将该裁剪作为流返回。

在伪代码中,我的处理程序中有这个...

Bitmap LargeBMPToUse = null;
if (Application["MyLargeImage]" == null)
{
LargeBMPToUse  = new Bitmap("File location of image on my server");
Application["MyLargeImage"] = LargeBMPToUse;
}
//now crop image from LargeBMPToUse  and return its stream

我的问题是是否有更有效的方法可以做到这一点和/或我是否绝对不应该这样做。

此外,我不能/不会使用任何客户端缓存技术。

谢谢

这个问题没有快速简便的答案,但我建议你避免把东西放在"应用程序"中,除非你真的需要。

HttpContext.Current.Cache 是更好的选择。 应用程序不是缓存,它是一个全局命名值集合:如果将对象添加到应用程序,它将保留,直到应用程序池回收。

更重要的是(来自文档,这里(:

应用程序状态

是自由线程的,这意味着应用程序状态 许多线程可以同时访问数据。因此,它是 重要事项,以确保在更新应用程序状态数据时,您 通过包含内置同步以线程安全的方式执行此操作 支持。您可以使用锁定和解锁方法来确保数据 通过锁定数据以仅由一个源写入来实现完整性 时间。您还可以通过以下方式降低并发问题的可能性 在 Application_Start 方法中初始化应用程序状态值 在 Global.asax 文件中。

请不要将图像存储在应用程序对象中。 请。

最新更新