页面刷新时,缓存设置不会命中服务器

时间:2013-06-02 12:39:12

标签: caching web

我的页面上有一些JS,CSS,图像文件,我正在使用缓存,所以当我再次访问我的页面时 浏览器没有打到我的服务器。

但是当我刷新页面时,浏览器会点击服务器,我的服务器会返回304 NOT MODIFIED

我知道这是通常的现象,但我想知道是否有任何方法可以阻止浏览器访问我的服务器,而只是在用户刷新页面时从缓存中加载它们。

例如,当我刷新google页面时,他们的一些资源是从缓存而不是304 NOT MODIFIED加载的。

任何人都可以帮助网站新手:)?

1 个答案:

答案 0 :(得分:0)

这是正常的行为,通常我只是忍受它。只要您正确设置了到期或最大期限设置,那么304消息将仅在刷新时发生,如您所说。只要您的用户没有定期刷新,那么304通常不会在人们浏览网站时发生。

但是,在某些情况下,即使用户刷新页面,您也可以阻止304消息。

  1. 通过Javascript设置元素的背景图像。
  2. 使用iframe提取具有max-age的内容(请注意,他们仍然可以通过右键单击iframe并单击刷新来刷新iframe。)
  3. 如果您想尝试一下,这是一个背景图片示例...

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <div id="example-image" style="height: 250px;"></div>
    <script type="text/javascript">
        $("#example-image").css("background", "white url(/images/myImage.jpg) no-repeat");
    </script>
    

    更新

    我在想AJAX GET会起作用,但看起来我错了,所以我从列表中删除了它。无论如何,我上面列出的解决方案确实有效,但是它们很笨拙和不愉快,这就是为什么我通常不会为此烦恼。


    更新#2

    Steve Souders对这个问题有一些有趣的实验...... http://www.stevesouders.com/blog/2013/02/26/reloading-post-onload-resources/