资源URL中的ETag或哈希例如。 js,css,image

时间:2011-06-26 16:06:09

标签: javascript asp.net html asp.net-mvc browser-cache

我想确保每次更改它们时都会刷新Web应用程序(css,js和images)中的资源,并保留相同的资源名称(这样我就不需要将html中的引用更改为它)。所以我想至少有两个明显的解决方案:

  1. 在响应标题中包含ETAG
  2. 在网址中加入哈希(即/css/{hash}/style.css)
  3. 我更喜欢第二个想法,因为可能一些旧的代理或浏览器会忽略etag - 是吗?但是在css中将哈希放入图像的网址有点困难。所以最后我想我会选择图像的第一个选项,以及css和js的第一个和第二个选项。

    你有什么打算?首先是足够的,如果资源发生变化,每个相当现代的软件都会请求刷新资源。

2 个答案:

答案 0 :(得分:0)

关于第二个问题,您可以使用Apache重写规则来实现这一目标。我假设您可以使用您正在使用的任何编程语言来散列文件的修改/创建日期。

的.htaccess

RewriteEngine on RewriteBase / RewriteRule ^ css / [^ /] + / style.css $ css / style.css [L]

答案 1 :(得分:0)

根据我的经验,etag通常受到浏览器/代理的尊重。但是我一般都发现我还需要设置上次修改。还要确保你正确地形成了etag,因为有些浏览器对此很挑剔。