Контроль кеша не работает в приложении asp.net core 2.0 - PullRequest
0 голосов
/ 04 марта 2019

Я размещал веб-сайт через IIS 10 и добавил ниже файл конфигурации раздела для кэша статического содержимого.

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

и ниже - раздел файла startup.cs

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    var options = new RewriteOptions()
   .AddRedirect("rent/(.*)", "/$1")
   .AddRedirect("explore/(.*)", "/$1"); 
    app.UseRewriter(options);
    app.UseMyMiddleware();

    loggerFactory.AddConsole(Configuration.GetSection("Logging"));
    loggerFactory.AddDebug();

    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
        app.UseBrowserLink();
    }
    else
    {
        app.UseExceptionHandler("/Home/Error");
    }
    app.UseStaticFiles();
    app.UseStaticFiles(new StaticFileOptions
    {
        OnPrepareResponse = ctx =>
        {
            const int durationInSeconds = 60 * 60 * 7;
            ctx.Context.Response.Headers[HeaderNames.CacheControl] =
                "public,max-age=" + durationInSeconds;
        }
    });
}

Однако этоне добавляйте контроль заголовка в заголовок ответа для любого статического ресурса, такого как изображения, файлы js, css.

Кто-нибудь может мне помочь?Если требуется какая-то конкретная информация, пожалуйста, дайте мне знать, я обновлю вопрос.

1 Ответ

0 голосов
/ 05 марта 2019

Я дважды вызывал функцию UseStaticFiles.Комментирование по умолчанию одно исправило проблему.

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    var options = new RewriteOptions()
   .AddRedirect("rent/(.*)", "/$1")
   .AddRedirect("explore/(.*)", "/$1"); 
    app.UseRewriter(options);
    app.UseMyMiddleware();

    loggerFactory.AddConsole(Configuration.GetSection("Logging"));
    loggerFactory.AddDebug();

    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
        app.UseBrowserLink();
    }
    else
    {
        app.UseExceptionHandler("/Home/Error");
    }
    //app.UseStaticFiles(); // commenting this fixed the issue.
    app.UseStaticFiles(new StaticFileOptions
    {
        OnPrepareResponse = ctx =>
        {
            const int durationInSeconds = 60 * 60 * 7;
            ctx.Context.Response.Headers[HeaderNames.CacheControl] =
                "public,max-age=" + durationInSeconds;
        }
    });
}
...