zoukankan      html  css  js  c++  java
  • HTTP的请求头标签 If-Modified-Since

    HTTP的If-Modified-Since的头标签的作用。

    大家都知道客户端浏览器是有缓存的,里面存放之前访问过的一些网页文件。
    例如IE,会把缓存文件存到“C:Documents and Settingszh2000gLocal SettingsTemporary Internet Files”
    这样类似的目录里。
    其实缓存里存储的不只是网页文件,还有服务器发过来的该文件的最后服务器修改时间。


    If-Modified-Since是标准的HTTP请求头标签,在发送HTTP请求时,把浏览器端缓存页面的最后修改时间一起发到服务器去,服务器会把这个时间与服务器上实际文件的最后修改时间进行比较。

    如果时间一致,那么返回HTTP状态码304(不返回文件内容),客户端接到之后,就直接把本地缓存文件显示到浏览器中。

    如果时间不一致,就返回HTTP状态码200和新的文件内容,客户端接到之后,会丢弃旧文件,把新文件缓存起来,并显示到浏览器中。

     下面用一个简单的小例子说明一下。

    由于演示例子需要截取HTTP Request和Response的信息,我在这里使用的工具是Fiddler。
    感兴趣的朋友可以到【http://www.fiddler2.com/Fiddler2/version.asp】去下载。

    1.首先在服务器创建一个简单的HTML文件,用浏览器访问一下,成功表示HTML页面。Fiddler就会产生下面的捕获信息。
      需要留意的是
      (1)因为是第一次访问该页面,客户端发请求时,请求头中没有If-Modified-Since标签。
      (2)服务器返回的HTTP状态码是200,并发送页面的全部内容。
      (3)服务器返回的HTTP头标签中有Last-Modified,告诉客户端页面的最后修改时间。  
      
    2.在浏览器中刷新一下页面,Fiddler就会产生下面的捕获信息。
      需要注意的是
      (1)客户端发HTTP请求时,使用If-Modified-Since标签,把上次服务器告诉它的文件最后修改时间返回到服务器端了。
      (2)因为文件没有改动过,所以服务器返回的HTTP状态码是304,没有发送页面的内容。
     

    3.用文本编辑器稍微改动一下页面文件,保存。再用浏览器访问一下,Fiddler就会产生下面的捕获信息。
    需要留意的是
      (1)客户端发HTTP请求时,使用If-Modified-Since标签,把上次服务器告诉它的文件最后修改时间返回到服务器端了。
      (2)因为文件被改动过,两边时间不一致,所以服务器返回的HTTP状态码是200,并发送新页面的全部内容。
      (3)服务器返回的HTTP头标签中有Last-Modified,告诉客户端页面的新的最后修改时间。

     

    HTTP的If-Modified-Since头标签与客户端缓存相互配合,大大节约了网络流量。

  • 相关阅读:
    【论文阅读笔记】《StarGAN》
    【数据分析入门】泰坦尼克号生存率预测(一)
    【DLPytorch】Optimizer(一)
    【论文阅读笔记】《Pix2Pix》
    【论文阅读笔记】《DCGAN》
    【论文阅读笔记】《Conditional Generative Adversarial Nets》
    【论文阅读笔记】Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks
    【Datawhale】Python从入门到放弃
    【数字图像处理】 直方图的均衡与规定化
    GAN学习入门篇(一)
  • 原文地址:https://www.cnblogs.com/sulanyuan/p/11426089.html
Copyright © 2011-2022 走看看