缓存无法在生产中使用

时间:2017-12-24 10:38:04

标签: c# asp.net-mvc caching action

我的网站有一个网页,其中加载了大量图片,所以我决定将它们缓存在服务器和客户端上。在本地,一切正常,它们被正确缓存。但是,在生产中,缓存似乎不起作用。主机是共享主机,如果这有任何区别。我联系了托管公司的支持,他们说问题出在网络应用程序中。

网址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;
}

生产中的请求标题 Request headers in production 生产中的响应标头 Response headers in production

开发中的响应标头 Response headers in dev

1 个答案:

答案 0 :(得分:0)

我对您的实施有一些顾虑:

  1. 尝试删除位置参数,默认为

  2. 我看到您的操作是虚拟,请确保您没有覆盖继承控制器中的操作(我猜您有CMS)

  3. 最重要的:确保您验证相同的端点/网址

  4. 在您的开发中,您返回一个动态字节数组表单控制器操作,在prod中返回一个静态文件,对于静态文件,设置缓存的最简单方法是从web.config:

    <configuration>
      <system.webServer>
        <staticContent>
          <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="02:00:00" />
        </staticContent>
      </system.webServer>
    </configuration>