06 HTTP协议缓存控制
一:HTTP协议缓存控制
第1次请求时 200 ok
第2次请求时 304 Not Modified 未修改状态
解释: 在网络上,有一些缓存服务器,另, 浏览器自身也有缓存功能.
当我们第一次某图片时,正常下载图片,返回值200
基于一个前提--图片不会经常改动, 服务器在返回200的同时,还返回该图片的”签名”-- Etag ,(签名可以理解图片的”指纹”).
当浏览再次访问该图片时,去服务器校验”指纹”,
如果图片没有变化,直接使用缓存中的图片,这样减轻了服务器负担.
二:抓包观察分析
三:HTTP协议与缓存控制
如果网站比较大,有N台缓存服务器,那么这N台缓存服务器,如何处理主服务器上文件,
1:要不要缓存
2:缓存多久?
思考----这说明 缓存服务器与主服务器之间,应该有一些协议,来说明这2个问题?
追问----用什么协议来说明这2个问题?
答 -----还是http协议,用头信息 cache-control来控制
具体用法:
在主服务器, 打开apache的 expires扩展,利用该扩展来控制图片,css,html等文件
控制是否缓存,及缓存生命周期.
在.htaccess中,具体语法如下:
ExpiresDefault "<base> [plus] {<num> <type>}*"
ExpiresByType type/encoding "<base> [plus] {<num>
<type>}*"
ExpiresDefault 是设置默认的缓存参数
ExpiresByType 是按照文件类型来设计独特的缓存参数
我们用第2种来做测试,给jpg图片设置1个月的生存周期.
后面4个参数怎么理解?
Base : 基于哪个时间点来计算缓存有效期
Access/now : 基于请求/响应的那一瞬间,比如从此瞬间到1个月之后.
Modification:
基于被请求文件的最后修改日期来计算. 比如 最后修改日期的后1周内仍然有效.
Num:
缓存时间的大小 (30)
Type:
缓存时间的单位 (天)
实例:
如果这是在集群环境里, 缓存服务器得到此图片,将会认为一个月内有效.
减轻了主服务器负担.
我们能否设置服务器,不让用缓存呢?
比如有些个人信息同,不允许缓存服务器缓存,必须到主服务器去请求.
Control-cache: no-store,must-revalidate ; // 这意味着不允许缓存,必须去主服务器验证.
可以利用apache的header模块
06 HTTP协议缓存控制的更多相关文章
- CDN网络(一)之典型的CND架构与HTTP协议的缓存控制
前言 本人以前在CDN厂商蓝汛就职过一年时间,利用脑子里还残留的一些CDN知识,结合现有的书籍材料,写点东西. what's the CDN CDN(content delivery Network) ...
- 浏览器 HTTP 协议缓存机制详解
最近在准备优化日志请求时遇到了一些令人疑惑的问题,比如为什么响应头里出现了两个 cache control.为什么明明设置了 no cache 却还是发请求,为什么多次访问时有时请求里带了 etag, ...
- HTTP 缓存控制总结
引言 通过网络获取内容既缓慢,成本又高:大的响应需要在客户端和服务器之间进行多次往返通信,这拖延了浏览器可以使用和处理内容的时间,同时也增加了访问者的数据成本.因此,缓存和重用以前获取的资源的能力成为 ...
- Web缓存(一) - HTTP协议缓存
为什么要使用 Web 缓存 Web缓存一般分为浏览器缓存.代理服务器缓存以及网关缓存,本文主要讲的是 浏览器缓存,其它两种缓存大家自行去了解下. Web 缓存游走于服务器和客户端之间.这个服务器可能是 ...
- nginx平台初识(二) 浏览器 HTTP 协议缓存机制详解
1.缓存的分类 缓存分为服务端侧(server side,比如 Nginx.Apache)和客户端侧(client side,比如 web browser). 服务端缓存又分为 代理服务器缓存 和 反 ...
- 005-优化web请求一-gzip压缩、http缓存控制和缓存校验[Pragma、Expires、Cache-Control、max-age、Last-Modified、用户刷新访问、避免过度304]
优化Web应用的典型技术:缓存控制头信息.Gzip.应用缓存.ETag.反应型技术[异步方法调用和WebSocket] 一.模板缓存 spring.thymeleaf.cache=true sprin ...
- HTTP协议-缓存
HTTP 协议中,缓存更多关心的文档资源的再利用.其目的是减少数据传输,加快相应速度等等.而对于缓存采用的是什么方案,也就是存在内存中还是硬盘中之类的问题,就属于另外的内容了. 假设,我身在广东,但是 ...
- 什么是Web缓存控制(基于HTTP头域)
这是一篇转载的知识性的文档,主要目的是为了让Web缓存相关概念更容易被开发者理解并应用于实际的应用环境中.为了简要起见,某些实现方面的细节被简化或省略了.如果你更关心细节实现则完全不必耐心看完本文,后 ...
- HTTP的缓存控制
1.缓存的分类: (1)缓存分为服务端侧(server side,比如 Nginx.Apache)和客户端侧(client side,比如 web browser). (2)服务端缓存又分为 代理服务 ...
随机推荐
- scale out instead of scale up
Scale Out(也就是Scale horizontally)横向扩展,向外扩展Scale Up(也就是Scale vertically)纵向扩展,向上扩展无论是Scale Out,Scale Up ...
- Sum BZOJ 3944
Sum [问题描述] 给定一个正整数 N ( N <= 231 - 1 ) 求: [输入格式] 一共T+1行 第1行为数据组数T(T<=10) 第2~T+1行每行一个非负整数N,代表一组询 ...
- C、C++变量auto,static,register,extern类型
auto: 推导类型变量:编译器选项指示编译器如何使用 auto 关键字来声明变量. 如果指定默认选项 /Zc:auto,编译器从其初始化表达式中推导声明的变量的类型. 如果指定 /Zc:auto-, ...
- spring+jpa+HiKariCP+P6spy SSH HiKariCP P6spy
=============p6spy准备https://www.cnblogs.com/qgc88===================== 1.简单介绍p6spy,p6spy是一个开源项目,通常使用 ...
- Java 基础【05】你的多继承纳?
Java省略了许多很少用到,缺乏了解,混淆功能的C + +,在我们的经验中带来更多的悲伤大于收益 . -----James Gosling James Gosling 这个人大家应该很熟悉,就是最初设 ...
- HDU 2874 Connections between cities(LCA)
题目链接 Connections between cities LCA的模板题啦. #include <bits/stdc++.h> using namespace std; #defin ...
- SQL-基础学习1--SELECT,LIMIT,DISTINCT,注释
所使用的数据库资料在:数据库资料 1.1 基础概念 1.数据库(database) 保存有组织的数据的容器(通常是一个文件或一组文件) 注意:常用的mysql,等是数据库管理系统DBMS:由这些软件创 ...
- 【hibernate】唯一约束 注解
唯一约束注解 单列约束和联合约束 分别如下 @Table( uniqueConstraints = { @UniqueConstraint(columnNames = "uid") ...
- cocos2d-x step by step(1) First Blood
下了cocos2d-x 源码,开搞! 首先,笔者本身 1) 5年没有摸过c++了 2) 没用过cocos2d-x 3) 有强烈的求知欲望(这条每个简历个人介绍不都这么写么, ...
- Swift:闭包(Closures)
一. 基本概念 闭包(Closures)是自包括的功能代码块,能够在代码中使用或者用来作为參数传值. 在Swift中的闭包与C.OC中的blocks和其他编程语言(如C#)中的lambda, java ...