.NET应用程序缓存与数据库缓存

时间:2010-01-14 13:59:27

标签: c# asp.net caching

我正在构建一个从磁盘读取文件的图库,动态创建缩略图并将其呈现给用户。这很好用,除了处理需要一点时间。

然后我决定使用ASP .NET Application Cache缓存处理过的图像。处理图像时,我将byte []流添加到缓存中。据我所知,这可以保存到系统内存中。这是完美的,页面加载速度更快。

我的问题是,如果有数千个图像被缓存在应用程序缓存中,是否会以任何方式影响服务器性能?

还有其他更好的方法来执行此图像缓存吗?

3 个答案:

答案 0 :(得分:5)

默认情况下,Application Cache将数据存储在服务器内存中;根据您的网站导航模式,也许您没有获得太多的缓存命中。

您可以预处理所有图像以立即生成缩略图并将其与原始图像一起存储。这样您就不需要处理该缓存层,并且可能不会占用太多磁盘空间。

答案 1 :(得分:1)

这取决于您拥有的图像数量和服务器上的内存。我的偏好是将缩略图写入磁盘而不是将它们放入内存缓存中。您可能会从支持raid的磁盘运行该站点,因此读取速度很快,而IIS则针对磁盘读取进行了优化。

答案 2 :(得分:0)

是的,通过在缓存中放入太多内容,肯定会影响Web服务器的性能。

在ASP.Net中添加Cache的一个原因是,如果服务器内存开始最大化,则添加清除缓存中最旧/最少使用的项目的功能。如果缓存Application对象中的项目,则不会进行清理,并且服务器最终可能会耗尽内存。使用Cache对象可以帮助您避免这种情况。

Cache对象还允许您设置有关到期的各种规则。因此,例如,您可能会对这些图像在缓存中保留的时间设置时间限制。