【问题标题】:How to cache images in memory on the web server for an ASP.NET MVC web app?如何在 ASP.NET MVC Web 应用程序的 Web 服务器的内存中缓存图像?
【发布时间】:2010-09-16 17:14:05
【问题描述】:

我正在使用 ASP.NET MVC 开发一个包含许多图像的 Web 应用程序。我希望能够将图像缓存在内存中以提高性能,但我想听听最好的方法是什么。

1) 可以从 URL 访问图像,例如 http://www.site.com/album/1.jpg。图像是如何存储在内存中的?它们会以内存流的形式存在吗?

2) 如何从内存中访问图像并发送到网页?现在网页将使用图像 URL 将图像直接嵌入标签中。

谢谢!

【问题讨论】:

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


    【解决方案1】:

    Web 服务器和下游缓存不会为静态资源处理这个问题吗?不确定会有很多性能提升,但对应用程序或设置一无所知我可能是错的。

    为了实现,我设置了一个页面,该页面采用图像文件名并从磁盘或内存缓存中的 asp.net 提供它。

    【讨论】:

      【解决方案2】:

      如果图像只是磁盘上的静态文件,那么 Beepcake 是正确的,IIS 已经缓存了经常使用的图像并从内存中提供它们。使用单独的缓存服务器不应该比 IIS 从内存中提供图像更快——它更多地与可伸缩性有关。一旦你有一个大型服务器场,这意味着你有一组服务器只处理你的代码,一组服务器只处理静态图像。此外,如果您的内容太多,一台服务器无法缓存所有内容,那么您可以路由请求,以便十台服务器中的每台都缓存不同 10% 的内容。这应该比让每台服务器缓存相同的最常用的 10% 内容要好得多。

      【讨论】:

        【解决方案3】:

        感谢您的回复。我想我想错了方向。我刚刚发现 Flickr 正在使用 Squid 来缓存图像。

        【讨论】:

          【解决方案4】:

          如果您想要真正出色的性能,我建议您使用 Amazon CloudFront。边缘缓存将为您提供比内存缓存更好的性能,并且 CloudFront 运行 nginx,这在静态文件(除其他外)上明显优于 IIS。

          设置边缘缓存非常简单 - 您登录,并获得一个域来使用而不是您自己的图像 URL。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-04-16
            • 2013-09-27
            • 1970-01-01
            • 2015-08-27
            • 1970-01-01
            • 2023-04-08
            • 2011-04-02
            • 2021-12-28
            相关资源
            最近更新 更多