zoukankan      html  css  js  c++  java
  • HTTP缓存&代理

    一、与缓存有关的Header

    1、Request           

    If—Modified—Since:           缓存文件的最后修改时间

    If—None—Match:                               缓存文件的ETag值

    Cache—Control:no—cache                   不使用缓存

    Pragma:no—cache                              不使用缓存

    2、Reaponse

    Cache—Control:public         响应被缓存,并且各用户共享

              private       私有缓存

              no—cache   提醒浏览器要从服务器提取文档验证

              no—store    绝对禁止缓存(用于机密文件)

              max—age   60s后缓存过期(相对时间)

    Date:当前Response发送的时间

    Expires:缓存过期的时间(绝对时间)

    Last—Modified:服务器端文件的最后修改时间

    ETag:服务器端文件的ETag值

    3、为何使用ETag

      ETag由服务器端产生,然后发送给客户端。主要是为了解决Last—Modified无法解决的问题:

      a)某些服务器不能精确得到文件的最后修改时间; 

      b)某些文件的修改非常频繁,在秒以下的时间内修改,Last—Modified只能精确到秒;

      c)一些文件的最后修改时间改变了,但是内容并未改变,我们不希望客户端认为这些文件修改了;

    二、几种刷新方式

      对一个资源,浏览器第一次访问,获取资源内容和cache-control: max-age:600,Last_Modify: Wed, 10 Aug 2016 26 GMT,于是浏览器把资源文件放在缓存中。

    1、输入浏览器url地址栏,回车

    浏览器直接使用本地有效的缓存,不发送任何请求,直接从缓存中读取。(这种情况名为  缓存命中)

    2、F5

    浏览器会去Web服务器验证缓存(发送一个请求,带上Last_Modify: Wed, 10 Aug 2016 26 GMT),服务器若在这个时间后未修改文件,直接返回304,浏览器就会去缓存中获取资源。

    3、Ctrl+F5(强制刷新)

    浏览器先把缓存中的文件删除,然后去服务器端请求完整最新的资源。

    三、代理服务器

    1)对客户端来说,代理服务器扮演着服务器的角色,接收Request,返回Response

    2)对服务器来说,代理服务器扮演着客户端的角色,发送Request,返回Request

    PS:常用的抓包工具Fiddler、HTTP Watch、Charles(青花瓷)、Wireshark(鲨鱼)等都可以看成一个代理服务器。LR的原理也是代理

    四、代理的作用

    1)翻墙(这一点我就不说明了)

    2)匿名访问[通过删除报文中的身份特性(客户端的IP地址、Cookie等),从而对远端服务器隐藏原始用户的IP地址及其他细节]

    3)通过代理连接因特网

    4)通过代理缓存,加快上网速度

    5)儿童过滤器(eg:校园网禁止未成年访问成人网站)

    代理认证:当浏览器访问需要认证的代理时,代理服务器会返回407,告诉浏览器输入用户名密码。

  • 相关阅读:
    av 1. Computer Abstractions and Technolog
    计算机组成与设计硬件/软件接口 (MIPS版)
    7. 我们的十个数字
    6.电报机与继电器qk
    六. Vue CLI详解
    五. Webpack详解
    四. 前端模块化
    一. Vue简介
    三. Vue组件化
    7. Git原理
  • 原文地址:https://www.cnblogs.com/zichuan/p/6194735.html
Copyright © 2011-2022 走看看