Asp.Net缓存图像,但不是javascripts

时间:2017-07-20 11:56:27

标签: asp.net caching static

如何只缓存图像而不缓存Javascript和Css文件?

是否有任何类型的标头来控制缓存哪些mimetypes?

添加一些进一步的解释:我在global.asax.cs上有以下代码片段,所以在我的开发环境中我不会缓存javascript文件(或者它需要我每次都重启服务器简单的改变)。由于图像很少改变,我想知道是否有办法。

    if (ApplicationConfiguration.IsLocal()) {
            //do not cache content locally, to make development faster
            Response.Cache.SetCacheability(HttpCacheability.NoCache);
            Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
            Response.Cache.SetNoStore();
        }

由于

1 个答案:

答案 0 :(得分:0)

最后它变成了一个菜鸟的错误:

我有(错误的)印象,即服务器只有一个响应,而事实上,每个资源都有几个响应。

因此,我只需要创建一个额外的条件来验证响应上的给定资源是否需要缓存:

  if (ApplicationConfiguration.IsLocal() && !ShouldCache()) {
            //do not cache content locally, to make development faster
            Response.Cache.SetCacheability(HttpCacheability.NoCache);
            Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
            Response.Cache.SetNoStore();
        }


 private bool ShouldCache() {
        if (Request.AppRelativeCurrentExecutionFilePath == null) {
            return false;
        }

        return Request.AppRelativeCurrentExecutionFilePath.IndexOf("vendor",StringComparison.CurrentCultureIgnoreCase) !=-1
               || Request.AppRelativeCurrentExecutionFilePath.IndexOf(".png", StringComparison.CurrentCultureIgnoreCase) != -1
               || Request.AppRelativeCurrentExecutionFilePath.IndexOf(".jpg", StringComparison.CurrentCultureIgnoreCase) != -1;
    }

在这种情况下,我为任何图像和我的“供应商”脚本(第三方)保留了缓存