我已将 ImageResizer.MVC nuget 包添加到我的 MVC4 解决方案中,并且效果非常好。
当我们开始优化发布时,我注意到我们所有的图像都有一个像这样的缓存控制头:
Accept-Ranges:bytes
Cache-Control:no-cache,private,max-age=86400
Date:Wed, 14 Aug 2013 12:23:42 GMT
ETag:"e8611769095ce1:0"
Last-Modified:Fri, 09 Aug 2013 13:00:23 GMT
Cache-Control 标头有我的设置,但它们前面是 no-cache。
结果,所有图像都向服务器发出请求,返回 304。
如果我在 Visual Studio 开发服务器中运行该项目,则缓存可以正常工作。
Image Resizer 调试页面显示为链接here提到ImageResizer.Plugins.Basic.NoCache
插件。
我认为该插件意味着 ImageResizer 没有做任何“聪明”的缓存,而不是它会在标题中添加 no-cache。
是否ImageResizer.Plugins.Basic.NoCache
意味着强制执行 'no-cache' 的 Cache-Control 标头?
编辑:这是 web.config 中的缓存设置
<caching enabled="true" enableKernelCache="true">
<profiles>
<add extension=".gif" location="Any" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" />
<add extension=".png" location="Any" policy="CacheForTimePeriod" kernelCachePolicy="CacheUntilChange" duration="12:00:30" />
<add extension=".jpg" location="Any" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" />
</profiles>
</caching>
和
<staticContent>
<clientCache cacheControlCustom="private" cacheControlMode="UseMaxAge" cacheControlMaxAge="1.00:00:00" />
</staticContent>