一、与缓存有关的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)FQ(这一点我就不说明了)

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

3)通过代理连接因特网

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

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

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

HTTP缓存&代理的更多相关文章

  1. 对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache

    虽然jquery的较新的api已经很好用了, 但是在实际工作还是有做二次封装的必要,好处有:1,二次封装后的API更加简洁,更符合个人的使用习惯:2,可以对ajax操作做一些统一处理,比如追加随机数或 ...

  2. Memcached集群/分布式/高可用 及 Magent缓存代理搭建过程 详解

    当网站访问量达到一定时,如何做Memcached集群,又如何高可用,是接下来要讨论的问题. 有这么一段文字来描述“Memcached集群” Memcached如何处理容错的? 不处理!:) 在memc ...

  3. CentOS6.3编译安装Memcached集群分布式缓存代理Magent-0.6出错汇总

    参考文章:Memcached集群/分布式/高可用 及 Magent缓存代理搭建过程 详解,搭建Magent,在编译的过程中会出现很多错误: #编译安装安装magent到 /usr/local/mage ...

  4. taobao-pamirs-proxycache开源缓存代理框架实现原理剖析

    写在前面 taobao-pamirs-proxycache 是一款开源缓存代理框架, 它将 缓存代码 与 业务代码 解耦.让开发专注coding业务, 缓存通过xml配置即可实现.本文先从此工具如何使 ...

  5. JS设计模式---缓存代理

    缓存代理可以为一些开销大的运算结果提供暂时的存储,在下次运算的时候,传进来的参数跟上次是一致, 则可以直接返回前面存储的结果. 运行上面的代码我们发现,当第二次再调用proxyMult(1,2,3)的 ...

  6. squid3.5缓存代理实践记录

    准备: 两台服务器,一台web,一台squid缓存代理 squid机域名:www.dannylinux.top web机IP:12.1.1.1 1.版本: [root@danny squid]# sq ...

  7. Nginx多进程高并发、低时延、高可靠机制在缓存代理中的应用

    1. 开发背景 现有开源缓存代理中间件有twemproxy.codis等,其中twemproxy为单进程单线程模型,只支持memcache单机版和redis单机版,都不支持集群版功能. 由于twemp ...

  8. Nginx多进程高并发、低时延、高可靠机制缓存代理中的应用

    1. 开发背景 现有开源缓存代理中间件有twemproxy.codis等,其中twemproxy为单进程单线程模型,只支持memcache单机版和redis单机版,都不支持集群版功能. 由于twemp ...

  9. Memcached集群:Magent缓存代理使用

    小结: 先启动memcached 然后启动magent memcached -d -p 11211 -u memcached -m 64 -c 5120 memcached -d -p 11212 - ...

  10. varnish4.0缓存代理配置

    防伪码:你必须非常努力,才能看起来毫不费力. 一.varnish原理: 1)Varnish简介: varnish缓存是web应用加速器,同时也作为http反向缓存代理.你可以安装varnish在任何h ...

随机推荐

  1. .NET 强引用与弱引用

    强引用      如果应用程序的代码可以访问一个正由该程序使用的对象,垃圾回收器就不能收集该对象, 那么,就认为应用程序对该对象具有强引用.      要建立强引用并重新使用该对象,请将 WeakRe ...

  2. bootscript/javascript组件

    javascript组件   (1)每一个插件(带有js功能的组件),想使用bootstrap插件,一个是要去写他的html,第二个是使用CSS去修饰它,再引入相应的js文件. bootstrap框架 ...

  3. Spring + Jedis集成Redis(单例redis数据库)

    这几天没事,就把之前学习的redis代码整理一遍,废话不多说,上步骤. 1.pom.xml引入资源: <dependency> <groupId>org.springframe ...

  4. phpcms调用一个指定的栏目的url和栏目名称

    {$CATEGORY[$catid]['url']} 指定栏目URL代码 {$CATEGORY[$catid]['catname']} 指定栏目名称代码 {$CATEGORYS[41]['url']} ...

  5. 【Java EE 学习 49 下】【Spring学习第一天】【MVC】【注解回顾】

    一.MVC 1.使用Spring有一个非常大的好处,那就是能够实现完全面向接口编程,传统的使用Dao.Service并不能实现完全的面向接口编程. 2.示例:https://github.com/kd ...

  6. 拉风的服务器监控工具,随时掌握服务器动态,AgileEAS.NET SOA 平台服务器监控工具集介绍

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

  7. CodeForces 444C 分块

    题目链接:http://codeforces.com/problemset/problem/444/C 题意:给定一个长度为n的序列a[].起初a[i]=i,然后还有一个色度的序列b[],起初b[i] ...

  8. Shell 编程基础之 [ 与 [[ 的异同

    一.简介 [ 与 test 等价,是 bash 的内部命令,GNU/linux 系统的 coreutils 软件包通常带 /usr/bin/test 和 /usr/bin/[ 命令.如果我们不用绝对路 ...

  9. zorka源码解读之Instrument实现原理

    主要用到三方面技术: beanshell来实现可扩展:告诉zorkaAgent插桩的具体需求,包括插桩的方法和值.插桩的时机.插桩追踪记录方式等. Instrument来通过代理的方式访问JVM,实现 ...

  10. 非常详细的/etc/passwd解释

    root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nol ...