编程语言
首页 > 编程语言> > 使用ASP .NET MVC推出新版本的JavaScript,CSS和图形内容

使用ASP .NET MVC推出新版本的JavaScript,CSS和图形内容

作者:互联网

我想要通过< script>引用的JavaScript.标签,我的CSS和要在我的网站的给定版本中缓存在用户浏览器中的各种图形文件.但是,当我发布文件更新时,我想确保新内容(Javascript,css,图形等)将在用户计算机上更新.

在研究此问题时,我遇到了许多可能的解决方案:

>调整诸如缓存控制之类的http标头并到期
>向每个资源请求附加唯一的查询字符串
>在所请求资源的路径(或文件名)中包含版本号

我对选项1的担心(除了不知道如何为某些内容类型实现它外)是,如果浏览器和IIS之间存在中间代理,则中间代理可能不遵守http标头,并且内容将被缓存在浏览器和代理.

我对选项2的关注有两个方面.例如,如果我只是使用随机数或时间戳,那么浏览器将每次都请求一个新资源,即使内容没有更改(在两次发行之间也没有更改),绕过本地缓存.解决此问题的方法是使用资源文件的时间戳或文件的哈希.仅当出现新版本时,这种情况才会改变.但是,这引起了我的第二个担忧:我了解到,默认情况下,某些Web代理从不缓存任何带有查询字符串的内容(https://stackoverflow.com/questions/5541340/how-can-i-prevent-javascript-caching- querystring-approach-isnt-working).尽管这可能是可自定义的,但我不想依靠管理员更改默认设置来获得缓存的性能优势.

选项3似乎是最佳选择,但对于ASP .NET MVC(当前使用ASP.NET MVC 3),我不知道如何以实用的方式实现它.用手,我可以进入链接到图形,css或外部javascript文件的每个文件,并更改路径以为每个发行版包含不同的版本号,但这显然很繁琐且容易出错.

我的问题是:

1)是否有其他应避免的缓存策略(对于给定的发行版),我应该考虑并

2)假设我使用选项3(在资源路径中包含版本号),如何在ASP .NET MVC应用程序中以一种切实可行的方式实现这一目标?

谢谢,

巴黎圣母院

解决方法:

这个想法是,每当js,css文件的版本更改时,您都必须更改服务器上的URL,以便浏览器请求新版本.

请参阅此thread中@Kip的答案,其中对此进行了明确说明.虽然答案是在php中,但可以在asp.net mvc本身中实现.

如果您使用的是ASP.NET MVC 4的新捆绑/最小化功能,我认为它会自动处理版本控制(尽管不确定).

标签:cache-control,javascript,asp-net-mvc
来源: https://codeday.me/bug/20191201/2078850.html