账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    浏览器的默认缓存行为
    • 2018-02-20 00:00
    • 11
    67
    0

    1.浏览器(比如Chrome)的默认缓存行为是怎样的?
    也就是说在服务器端没有配置强缓存的时候,它如何缓存HTML、css、js、img等静态资源
    我在测试的时候(Chrome && 服务器端没有强缓存配置),这些静态资源多次访问,有时是304,有时是200(from disk cache)
    这让我很诧异,如果返回304就一直返回304,如果200就一直返回200
    304的情况比200的情况多,200 from disk cache很少出现,但我测的结果是总会出现一次
    如果是本地服务器,200 from disk cache就很容易出现
    麻烦给解释一下

    2.是因为各个浏览器的默认缓存行为不同,并且各个浏览器在自己进行缓存的时候,情况比较诡异(我测的结果感觉比较诡异),所以在web服务器端(如Nginx)都自己配置强缓存,从而摒弃浏览器的默认缓存行为吗?

    3.一般在设置强缓存的时候
    ① 是不是 html 文件不缓存
    ② 而 css|js|image 这些静态资源设置缓存时间并且在代码中添加版本号
    这样在访问网站的时候,一来可以利用到缓存,二来即便网站版本更新,也能让用户及时看到更新后的效果?

    谢谢诸位,不胜感激

    2
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 迊颩、榌舞 普通会员 1楼

      浏览器的默认缓存行为是为了提高网页加载速度和减少网络带宽使用,它会自动存储一些静态资源(如HTML、CSS、JavaScript文件、图片、字体等)在本地缓存中。这种机制遵循HTTP协议中的缓存控制策略。

      1. 强缓存:浏览器在请求一个资源时,首先检查是否存在缓存,并判断缓存是否过期。如果缓存有效,就直接从缓存中读取资源,不再向服务器发起请求。强缓存主要通过两种HTTP头部信息实现:ExpiresCache-Control

      2. 协商缓存:当强缓存失效时,浏览器会向服务器发送条件请求,询问缓存内容是否仍然有效。服务器根据请求头中的信息(如If-Modified-SinceIf-None-Match)判断资源是否已更新,如果没有更新,则返回304状态码及新的响应头信息,浏览器继续使用本地缓存;如果有更新,则返回新的资源内容。

      需要注意的是,开发者可以通过设置HTTP响应头来控制浏览器如何缓存特定资源,比如禁用缓存、设置缓存时间等。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部