缓存不在生产中[关闭]

问题描述 投票:1回答:1

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

网址: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中的响应标头

dev Response headers in dev中的响应头

c# asp.net-mvc caching action
1个回答
0
投票

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

  1. 试一试并删除Location参数,默认为any
  2. 我看到你的动作是虚拟的,确保你没有覆盖继承控制器的动作(我想你有一个CMS)
  3. 最重要的是:确保验证相同的端点/网址

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

<configuration>
  <system.webServer>
    <staticContent>
      <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="02:00:00" />
    </staticContent>
  </system.webServer>
</configuration>
© www.soinside.com 2019 - 2024. All rights reserved.