代码之家  ›  专栏  ›  技术社区  ›  Roman

强制浏览器重新读取缓存的图像

  •  10
  • Roman  · 技术社区  · 16 年前

    按钮{ 背景:url(../images/button.png); }

    问题: 出于性能原因,所有静态内容都有过期头,并由浏览器缓存。图像更改时,用户必须刷新缓存(IE中的CTRL+F5)。我希望图像被缓存,但必要时必须自动重新加载。

    问题: 下一个方法有效吗?

    .button {
        background: url(../Images/button.png?v=1234);
    }
    

    其中v=1234是我网站的版本。我不知道在css中写这些东西是否100%有效,如果版本相同,我希望浏览器仍然缓存图像。所有现代浏览器是否都正确地使用url参数部分缓存数据?

    谢谢。

    2 回复  |  直到 16 年前
        1
  •  8
  •   Dominic Rodger    16 年前

    对我来说,这看起来是一个很好的方法,它在现代浏览器的css中可以很好地工作-浏览器将查看图像的地址(包括 ?v=1234 ),请确保它未缓存,然后发送新请求。

        2
  •  0
  •   Rich Seller    16 年前

    这在规则3中讨论 High Performance Web Sites :“添加过期或缓存控制头”。建议的方法之一是对文件进行版本化,而不是对站点进行版本化。

    accompanying blog :

    请记住,如果您使用的是将来到期的头,则每当组件发生更改时,都必须更改组件的文件名。在雅虎!我们经常将此步骤作为构建过程的一部分:版本号嵌入到组件的文件名中,例如yahoo_2.0.6.js。