zoukankan      html  css  js  c++  java
  • 【http】使用浏览器Cache和http状态码304实现的客户端缓存

    Cache就是浏览器的缓存技术,大家肯定不陌生,浏览器在每次加载一个文件的时候,都要去自己的缓存文件夹里面去查找是否存在可用缓存,如果存在,则不 再去服务器下载而直接使用本地内容,这是一个很好的节省服务器性能和流量的方式,在网站不做任何设置的情况下,浏览器会根据用户的设置来确定是否使用缓 存,可见浏览器的“Internet选项”的“浏览历史纪录”的“设置”部分。

      304是一个用处和Cache相同的东西,这个状态码的含义是“服务器端没有更新”,也就是说客户端的文件版本是最新的,他的用法是这样的:

      1.当用户首次请求该文件的时候,通过HTTP HEAD的Last-Modified字段将该文件的最后修改日期发送到客户端,让客户端知道该文件的版本,例如:

      Last-Modified: Tue, 08 Apr 2008 14:48:05 GMT

      2.在浏览器再次请求该文件的时候,会自动将该时间作为请求的HTTP HEAD的If-Modified-Since字段内容(有时候根据浏览器的不同,可能会用逗号隔开附加上文件的字节数大小),例如:

      If-Modified-Since: Tue, 08 Apr 2008 14:48:05 GMT

      3.服务端根据If-Modified-Since字段的内容(如果存在该字段)来判断客户端的文件是否已经过期,如果已经过期,则重新返回新的文件,如果没有,则只需要返回304状态码,就可结束输出,这样代表浏览器端的文件版本是最新的,不需要返回文件内容。

      要知道,服务器返回一个304的时间要比返回整个文件的时间要小得多,性能损耗和网络占用也小得多。

       Cache和304技术有一定的重复,我选择Cache和304技术一起使用是因为单用Cache好像浏览器有时候还是去取最新内容(尤其是用户点击刷 新按钮的时候),而单独使用304则在浏览器向服务器询问的过程还是会占用一定的性能和时间。这两种技术结合起来使用是刚刚好的。

  • 相关阅读:
    MVP模式与MVVM模式
    webpack的配置处理
    leetcode 287 Find the Duplicate Number
    leetcode 152 Maximum Product Subarray
    leetcode 76 Minimum Window Substring
    感知器算法初探
    leetcode 179 Largest Number
    leetcode 33 Search in Rotated Sorted Array
    leetcode 334 Increasing Triplet Subsequence
    朴素贝叶斯分类器初探
  • 原文地址:https://www.cnblogs.com/sniper007/p/2694023.html
Copyright © 2011-2022 走看看