相关疑难解决方法(0)

如何在ASP.NET核心rc2中禁用浏览器缓存?

我尝试过这个中间件,但浏览器仍在保存文件.

我希望用户将始终获得js和css文件的最新版本.

public void Configure(IApplicationBuilder app)
{
    app.UseSession();
    app.UseDefaultFiles();
    app.UseStaticFiles(new StaticFileOptions
    {
        OnPrepareResponse = context =>
            context.Context.Response.Headers.Add("Cache-Control", "no-cache")
    });
}
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-core-mvc

23
推荐指数
3
解决办法
2万
查看次数

将ASP.NET MVC 5捆绑"版本"迁移到MVC 6

捆绑功能从MVC 6中排除,建议的方法是使用gulp任务进行捆绑.

使用捆绑,我们习惯在包含的css/javascript文件url(s)的末尾获取一个随机字符串.这个字符串非常重要,因为一旦你改变了css/javascript中的任何内容,就会生成一个新的字符串,这会强制浏览器加载文件的新版本.

所以,如果你有3个css文件,它们将捆绑成一个,它们看起来像这样:

<link href="/Style/css?v=sGJNctjkEuiEEdR68fh0dDt7bwrHIbu_EfQtgon7oYc1" rel="stylesheet">
Run Code Online (Sandbox Code Playgroud)

我们如何在MVC 6中实现相同的功能?我不知道gulp是否能在这里提供帮助,但我已经在使用gulp进行缩小和捆绑.

bundling-and-minification gulp asp.net-core-mvc asp.net-bundling

6
推荐指数
1
解决办法
942
查看次数

用于获取清除缓存的“版本字符串”的服务/扩展

背景

我有一个3视图利用html5离线应用程序功能的应用程序。因此,我在剃刀视图中生成了一个应用清单。该视图的简化版本可能如下所示:

CACHE MANIFEST

CACHE:
/site.min.css
/site.min.js
Run Code Online (Sandbox Code Playgroud)

为了使脱机应用程序正常运行,缓存的文件必须与应用程序中脱机页面请求的文件完全匹配。但是,我想对此清单中引用的js / css资源应用“缓存清除”版本字符串。对于HTML标记,它受的支持,ScriptTagHelper但是我没有找到任何支持纯URL的帮助程序/扩展方法(如上述清单中所要求)。

关于此帖子,我已经通过将a FileVersionProvider注入清单视图并使用以下AddFileVersionToPath()方法来解决了此问题:

CACHE MANIFEST

CACHE:
/site.min.css
/site.min.js
Run Code Online (Sandbox Code Playgroud)

但是,FileVersionProvider该类位于Microsoft.AspNetCore.Mvc.TagHelpers.Internal命名空间中,从维护的角度来看,该命名空间不足以使我充满信心。

最后,我为此实现的DI设置的实现并不完全理想(请参见下文)。我不喜欢这样的事实,我需要打电话给GetService()我并且一定要指定一个特定的MemoryCache

services.AddSingleton<FileVersionProvider>(s => 
    new FileVersionProvider(
        s.GetService<IHostingEnvironment>()?.WebRootFileProvider, 
        s.GetService<IMemoryCache>(), 
        new PathString("") ));
Run Code Online (Sandbox Code Playgroud)

是否有人以前曾要求使用版本字符串创建到js / css资源的链接?如果是这样,是否有更优雅的解决方案?

c# offline-caching asp.net-core-mvc asp.net-core asp.net-core-2.0

5
推荐指数
1
解决办法
376
查看次数