浏览器输入网址打开 和 打开后 ctlr+F5 清除缓存的刷新 为什么打开时间差别很大

2021-03-18 19:44:58 +08:00
 zxCoder

浏览器输入网址打开要等个三四秒

1907 次点击
所在节点    浏览器
10 条回复
cnleon
2021-03-18 20:21:09 +08:00
打开调试看看就知道啊。直接打开:原先下载的文件要么本地缓存了,要么服务器就直接返回 304 了,而 ctrl+F5 是全部重新下载。
justfun
2021-03-18 20:24:49 +08:00
阿这… 你自己的标题都回答自己了。因为原先从缓存加载就行了 现在全重新请求一遍呗
yfwl
2021-03-18 20:32:47 +08:00
因为有缓存和没缓存的区别
zxCoder
2021-03-18 20:52:51 +08:00
@cnleon
@justfun
@yfwl

那不应该是输入网址打开快吗。。。。我是输入网址直接打开慢了三四秒啊
imn1
2021-03-18 20:57:48 +08:00
网页刷新有三种方式(从客户端看):
1. Ctrf-F5 对应的全新打开,除了 DNS 外,全部请求,跟第一次打开是基本接近的
2. F5 对应的方式,根据缓存及其时间,刷新时,网页或文本性质的会重新向服务器发出请求,其他的先从缓存获取(过时的缓存,即使还存在客户端,也要重新请求并传送一次)
3. 地址栏原 url 回车(注一:是指网页已经加载,并非第一次打开时),或者 location.href 实现,对应的方式是,仅发出主要页面的请求,其他内容全部从缓存获取(不计算缓存的时间),只有缓存不存在的内容,才会发出请求。注二:如果缓存空间大,已打开网页不多,即使过了缓存时间,浏览器也不会马上清掉这些过时的缓存的,这视乎浏览器的策略,所以有些过时的缓存,这种方式也不需要重新请求传送

显然第三种是最快的,但目前的浏览器基本没有第三种方式的按钮,要么自己回车,要么通过脚本或扩展实现
ToGo
2021-03-18 21:06:18 +08:00
CTRL+F5 强制刷新缓存
imn1
2021-03-18 21:09:58 +08:00
补充:
上面#5 所说的第三种方式,甚至外部 css 和 js 都不会发出请求
有些网站在 css 后面加上随机数字,css-url?12345 这种,就是避免这种情况,因为刷新网页时,这个随机数字就变了,浏览器会认为这个 css 不存在(缓存是根据完整 url 作为 key 的),而重新请求。这样能保证一些内容变化快,且不同的内容对应不同的 css 项目,而保证 css 是当前内容最合适的,因为有些 css 文件不是固定的、全部发向客户端的,而是服务器用程序动态拼出来的
LGA1150
2021-03-18 21:25:53 +08:00
@zxCoder ctrl+f5 不会刷新系统 DNS 缓存,说不定是解析慢?
systemcall
2021-03-18 21:28:39 +08:00
@imn1 #5
刷新页面会重新提交表单,但是地址栏输入 URL 不会
请求头应该有区别
zxCoder
2021-03-18 21:36:44 +08:00
@LGA1150 我猜是确实这个原因。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/762963

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX