IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    HTTP 304(Not Modified)和200(From Cache)的区别

    Release发表于 2015-05-20 02:30:20
    love 0

    大家都知道200是正常,304是没有变化、没有修改。
    但200是不是真的就“正常”,304背后又都做了什么?他是怎么判断没修改的?

    200(From cache)是直接点击链接访问,输入网址按回车访问触发(这两种情况都不会有Etag);
    304(Not Modified)是刷新页面时触发,或是设置了长缓存、或当Etag没有移除时触发。

    先说说304
    当你第一次请求一个资源的时候,server会同时生成并返回一个字符串在响应头里,叫Etag。
    浏览器接到资源后,缓存资源的同时也会把这个Etag保存下来,成为If-None_Match 。Etag可以看作是一个资源的唯一标识,当你第二次请求这个资源的时候,
    请求头里会带着这个Etag,server会拿server该资源现在的Etag跟请求头中的If-None_Match做对比,然后看看If-Modified-Since过没过期,如果一样,直接告诉他:你就用本地的吧,我没变,就不给你返回了。所以返回了304,
    304就是这样。

    再说说200 From Cache
    这个虽然是200,但他根本就没有跟server做交互,直接拉的本地缓存。
    上边已经说了From Cache的触发条件,但如果想一直持续From Cache不想304怎么办?
    可以在Server端配置移除Etag,具体请听下回分解 :-)



沪ICP备19023445号-2号
友情链接