http缓存机制和原理详解

【背景】

http1.1

http1.1 是1997年开始使用的。

http是一种协议,用于传输浏览器发送的数据并接收由http server响应的数据。 浏览器就是解释html语言等内容的。

http协议构成:

request 有client(浏览器)发送

起始行 first line:

<method> <url> <version>

    as: 
    GET /ex?i=mm_28347190_2425761_9313994 HTTP/1.1

首部 Header:

filed:value

as:

    Host:www.baidu.com
    Accept-Encoding:gzip, defalt
    Referer: www.taobao.com/xxx 
    User-Aagent: IE8...
    Cookie:xxxx
    .......

主体 Body:

数据向POST方法的json数据等

responsed(由http server发送):

起始行 first line:

<version> <code> <reason phrase>

    as: 
    HTTP/1.1 200 OK

首部 Header:

filed:value

as:

    Expires: Sat, 29 Oct 2016 13:59:01 GMT
    Data:  Sat, 29 Oct 2016 13:44:01 GMT
    Server: nginx
    Content-Type: text/html; charset=utf-8 
    Cache-Control:  max-age=900
    Content-Encoding: gzip
    Age: 541
    X-Via: 1.1 xzai69:8 (Cdn Cache Server V2.0), 1.1 sdta234:0 (Cdn Cache Server V2
    Connection: keep-alive

主体 Body:

响应的数据内容html文本或者图片或者css js

注意:

1 client和server端是相对的概念的。不是说client一定是浏览器 如elinks curl splider ...程序

2 C/S 和 B/S架构的区别。主要是理解B/S架构B是指Broswer浏览器,是指将独立应用程序的实现放在浏览器中。比如浏览器中的office不用独立的office软件就可以打开word excel文档。

3 其中一个提高网页浏览速度的技术是缓存技术。比如一些网页游戏,在开始前都会加载一会就是将一些元素载入到浏览器中缓存起来。加快速度。

【缓存技术】

注意:

1 cache 中的private cache和public cache是相对的。对应存入自己电脑中的cache是只对user1可以使用的,user2 是不能使用的。所以这个缓存就是private私有缓存。  正向代理的缓存对于user1 和user2 都是可以使用的,就能同时加快user1 和user2 的速度,这个就是public cache。

2 缓存最终不是最权威的资源,会所有失效的必要性。所有要重点探索和设定的缓存时间。

【http 1.0缓存机制】

C ---> S

第一次  client向serve发起一个request,server 向client respond回应内容的头部中加入一个Expire(1.0版本中唯一一个控制缓存的头部和策略)过期时间。

第二次 client想server发起请求的时候,第一种情况:如果内容在过期时间之内,就会使用本地的缓存。第二种情况:如果超过了过期时间,重新发起请求,并从Server端获取数据(不管数据是否有更新)

缺点: 在第二的第二种情况在,client想server端发起的请求时,如果server中的数据没有更新也被完整的响应一份数据到client端。这样就浪费了带宽资源。和服务器的响应资源。

所以引入了http1.1 版本,有一个询问的机制条件式判断,请求的时候可以发送一个头部为If-Modify-Since到Server端。自动那个时候,内容是否有更新呢? 如果没更新就返回304的响应码,Not-Modify。

【http 1.1缓存机制】

丰富的头部信息控制缓存策略

时间: 2024-10-25 00:39:37

http缓存机制和原理详解的相关文章

PHP缓存机制Output Control详解

这篇文章主要介绍了PHP缓存机制Output Control,需要的朋友可以参考下 在php5.2版本的配置中,默认output_buffering为关闭状态,因此运行下面三行代码将会出现一个警告: Warning: Cannot modify header information - headers already sent echo 'hello1'; header('content-type:text/html;charset=utf-8'); echo 'hello2'; 开启OB缓存的

Redis Sentinel实现的机制与原理详解

序言 Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案.实际上这意味着你可以使用Sentinel模式创建一个可以不用人为干预而应对各种故障的Redis部署. 它的主要功能有以下几点 监控:Sentinel不断的检查master和slave是否正常的运行. 通知:如果发现某个redis节点运行出现问题,可以通过API通知系统管理员和其他的应用程序. 自动故障转移:能够进行自动切换.当一个master节点不可用时,能够选举出master的多个slave中的一个来作为新的ma

android消息机制原理详解

android消息机制原理详解 因为之前使用的是CSDN默认的文本编辑器,而且也因为懒得学用MarkDown来写博客,所以排版上有一些问题.就上一篇写的设计模式之抽象工厂模式提出了这个问题(一个android群的群友提出来的,没有在评论里评论),所以以后的文章都用MarkDown来写了. 好了,言归正传,这篇文章我来介绍一下android消息机制的原理 Android消息机制概述 说到Android的消息机制,Android初级工程师(不包括那些初学者)肯定会想到Handler.是的,Andro

SpringBoot启动机制(starter机制)核心原理详解

作者:MyBug 一.前言 使用过springboot的同学应该已经知道,springboot通过默认配置了很多框架的使用方式帮我们大大简化了项目初始搭建以及开发过程.本文的目的就是一步步分析springboot的启动过程,这次主要是分析springboot特性自动装配.那么首先带领大家回顾一下以往我们的web项目是如何搭建的,通常我们要搭建一个基于Spring的Web应用,我们需要做以下一些工作:pom文件中引入相关jar包,包括spring.springmvc.redis.mybaits.l

[转] VLAN原理详解

VLAN原理详解 标签: VLANAccess-LinkTrunk-Link802.1QISL 2013-07-26 18:05 27901人阅读 评论(15) 收藏 举报  分类: 网络通信/流媒体(30)  目录(?)[+] 1.为什么需要VLAN 1.1 什么是VLAN? VLAN(Virtual LAN),翻译成中文是“虚拟局域网”.LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成的企业网络.VLAN所指的LAN特指使用路由器分割的网络——也就是广播域. 在此让我

【转】VLAN原理详解

1.为什么需要VLAN 1.1 什么是VLAN? VLAN(Virtual LAN),翻译成中文是“虚拟局域网”.LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成的企业网络.VLAN所指的LAN特指使用路由器分割的网络——也就是广播域. 在此让我们先复习一下广播域的概念.广播域,指的是广播帧(目标MAC地址全部为1)所能传递到的范围,亦即能够直接通信的范围.严格地说,并不仅仅是广播帧,多播帧(Multicast Frame)和目标不明的单播帧(Unknown Unicas

VLAN原理详解[转载] 网桥--交换机---路由器

来自:http://blog.csdn.net/phunxm/article/details/9498829 一.什么是桥接   桥接工作在OSI网络参考模型的第二层数据链路层,是一种以MAC地址来作为判断依据来将网络划分成两个不同物理段的技术,其被广泛应用于早期的计算机网络当中. 我们都知道,以太网是一种共享网络传输介质的技术,在这种技术下,如果一台计算机发送数据的时候,在同一物理网络介质上的计算机都需要接收,在接收后分析目的MAC地址,如果是属于目的MAC地址和自己的MAC地址相同便进行封装

Java虚拟机工作原理详解

原文地址:http://blog.csdn.net/bingduanlbd/article/details/8363734 一.类加载器 首先来看一下java程序的执行过程. 从这个框图很容易大体上了解java程序工作原理.首先,你写好java代码,保存到硬盘当中.然后你在命令行中输入 [java] view plaincopy javac YourClassName.java 此时,你的java代码就被编译成字节码(.class).如果你是在Eclipse IDE或者其他开发工具中,你保存代码

Storm概念、原理详解及其应用(一)BaseStorm

本文借鉴官文,添加了一些解释和看法,其中有些理解,写的比较粗糙,有问题的地方希望大家指出.写这篇文章,是想把一些官文和资料中基础.重点拿出来,能总结出便于大家理解的话语.与大多数"wordcount"代码不同的是,并不会有如何运行第一storm代码等内容,只有在运行完代码后,发现需要明白:"知其然,并知其所以然". Storm是什么?为什么要用Storm?为什么不用Spark? 第一个问题,以下概念足以解释: Storm是基于数据流的实时处理系统,提供了大吞吐量的实