了解缓存?

时间:2016-09-10 03:53:31

标签: javascript jquery html twitter-bootstrap caching

昨天,我们家里没有电,因此没有互联网。所以我认为我不能让我的网络应用程序在本地工作,因为在" index.html"我有:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script>
        window.jQuery || document.write('<script src="../../assets/js/vendor/jquery.min.js"><\/script>')
</script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/masonry/3.1.5/masonry.pkgd.min.js"></script>
<script src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/123941/imagesLoaded.js"></script>
<script src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/123941/masonry.js"></script>

然而,事实并非如此,它会顺利进行。所以我猜想浏览器记得上次下载这些js文件时。

当我重新加载我的wep-app时,它将无法加载js文件,因为没有Internet连接。这种行为会一次又一次地发生。

在这两种情况下都无法下载:

<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=PT+Sans+Caption:400,700">

但这不是一个严重的错误。请注意,在我的项目文件中是本地的,这就是为什么它无关紧要。

我想了解为什么,有什么想法?

我在MacBook Pro El Capitan中使用版本52.0.2743.116(64位)。

我的:浏览器使用了js文件的缓存版本,但即使在Normal Reload上,也会尝试重新下载它们。

1 个答案:

答案 0 :(得分:3)

某些外部文件在HTTP标头中没有设置远期到期日期。

你会注意到,当我加载带有谷歌字体的页面时,这里是响应标题:

Google字体API

Access-Control-Allow-Origin: *
Cache-Control: private, max-age=86400
Content-Encoding: gzip
Content-Type: text/css; charset=utf-8
Date: Sat, 10 Sep 2016 04:55:29 GMT
Expires: Sat, 10 Sep 2016 04:55:29 GMT
Link: <http://fonts.gstatic.com>; rel=preconnect; crossorigin
Server: ESF
Timing-Allow-Origin: *
Transfer-Encoding: chunked
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block

你会在这里注意到Google提供了这种字体并且即时过期。 (我访问了Sat, 10 Sep 2016 04:55:29 GMT上的文件并且它在同一时间到期)这可能就是为什么它从未加载到第一位。

除此之外 - 我真的不确定为什么在页面重新加载后JS文件变得不可用。其余的文件都有远期到期的标题,我使用Firefox版本48.0.1自行测试,没有任何问题。我首先使用您的脚本加载页面,然后选择“脱机工作”。无论我按下刷新次数或F5多少次,浏览器都会继续提供这些文件的缓存版本。也许它是你的浏览器设置,但我不能太确定。也许其他人有更多关于此的信息。

相关问题