我的网站有一个网页,其中加载了大量图像,所以我决定将它们缓存在服务器和客户端上。在本地,一切正常,它们被正确缓存。但是,在生产中,缓存似乎不起作用。主机是共享主机,如果这有任何区别。我联系了托管公司的支持,他们说问题出在网络应用程序中。
网址:Actual site
[AllowAnonymous]
[OutputCache(Duration = 60*60*24*2, Location = OutputCacheLocation.ServerAndClient, VaryByParam ="id")]
public virtual FileContentResult GetPicture(int id)
{
byte[] byteArray = db.Pictures.Find(id).ByteContent;
if (byteArray != null)
return new FileContentResult(byteArray, "image/jpeg");
return null;
}
我对您的实施有一些顾虑:
在你的开发中你返回一个动态字节数组窗体控制器动作,当你在prod中返回一个静态文件时,对于静态文件,最简单的设置缓存的方法是从web.config:
<configuration>
<system.webServer>
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="02:00:00" />
</staticContent>
</system.webServer>
</configuration>