如何防止仅在ASP.Net 5中的某些文件的浏览器缓存?

时间:2016-01-15 12:53:50

标签: asp.net caching iis asp.net-core

在之前的版本中,我会在here中执行此操作。但是在新版本的ASP中没有web.config文件,我相信它应该在launchSettings.json文件中完成。

基本上我想做的就是停止缓存app.js文件和模板文件夹中的所有.html文件。我该怎么做?

2 个答案:

答案 0 :(得分:6)

请注意,您仍然可以免费添加<meta&gt;您不希望缓存的每个页面的HTML页面中的标记:

<meta http-equiv="cache-control" content="no-cache" />

另请注意,如果您要部署到IIS,那么您仍然可以使用wwwroot(或您在project.json中指定的内容)放置web.config个文件(已解析)通过IIS)。

如果您想使用配置进行操作,请在Configure()课程中添加Startup方法:

public void Configure(IApplicationBuilder application)
{
    application.Use(async (context, next) =>
    {
        context.Response.Headers.Append("Cache-Control", "no-cache");
        await next();
    });

    // ...
}

请注意,如果您只想将HTTP标头应用于某些网页,则只需检查PathString HttpRequest Request属性HttpContext)的application.UseStaticFiles(new StaticFileOptions { OnPrepareResponse = context => { context.Response.Headers.Append("Cache-Control", "no-cache"); } }; 属性,或者您需要为每个静态文件使用它(如果您只想应用其中一些,则与上面相同):

#include <iostream>

int main() {
    int i = 1024, j = 1024, k = 1024, n = 3;
    long long l = 5;
    std::cout << i * j * k * n * l << std::endl;  // #1
    std::cout << ( i * j * k * n ) * l << std::endl; // #2
    std::cout << l * i * j * k * n << std::endl;  // #3
    return 0;
}

Making sure a web page is not cached, across all browsers讨论了您应发送哪些与您需要支持的浏览器兼容的标头。

答案 1 :(得分:0)

如果您是.Net Core中的PWA开发人员,或者您是React或angular用户,则可以使用以下代码来缓存除service worker或您的主要app.js之外的所有静态文件。竖起大拇指是否对您有帮助:

 public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            //...
            //One year 31536000
            string cachePeriod = env.IsDevelopment() ? "600" : "31536000";
            app.UseStaticFiles(new StaticFileOptions{ OnPrepareResponse = ctx => {

                if (ctx.File.Name == "sw.js")
                {
                    ctx.Context.Response.Headers.Append("Cache-Control", $"public, no-cache");
                }
                else
                {
                    ctx.Context.Response.Headers.Append("Cache-Control", $"public, max-age={cachePeriod}");
                }
            } });
    //...    
}