HTTP缓存机制梳理
一般只对GET类型请求做缓存,对POST不做缓存
缓存协商
指浏览器和Web服务器之间对于是否使用浏览器端缓存的协商。对于较小的文件内容,由于缓存协商仍需要发送请求,所以吞吐率提高不大;但没有正文传输,节省了服务器带宽
1.Last-Modified/If-Modified-Since/304 绝对时间
Web服务器在响应头中添加Last-Modified,表示内容的上次更新时间。浏览器再次请求时,请求头中添加If-Modified-Since。Web服务器检查内容在这个时间后是否有更新,如果有更新(不管内容是否变化),返回全部内容。否则,返回不带正文的304
对于静态内容,Web服务器获得文件最后修改时间,并和浏览器询问的时间比较
2.Etag/If-None-Match
如果一个内容的Etag没有变化,那么文件内容也没有变化
Http1.1没有规定Etag的格式和计算方法,Web服务器可自行实现
对于下面情况Etag更好:文件频繁更新但内容不变;多台Web服务负载均衡,每个服务上文件的最后更新时间很难相同
彻底消灭请求
1.Expires 绝对时间
浏览器在过期之前无需每次请求服务器
Web服务器默认不开启,需手动开启
对常见的静态文件格式,即使服务器没返回Expires,浏览器也可能自行决定使用本地缓存
2. Cache-Control: max-age=3600
指定缓存过期的相对时间,单位秒。防止本地时间和服务器时间不一致。
浏览器一般将HTTP1.1作为首选,当同时有Expires和Cache-Control时,优先使用Cache-Control
如何请求页面
1. Ctrl+F5 强制刷新
直接向Web服务请求最新内容,不使用缓存协商
2. F5 一般刷新
允许浏览器做必要的缓存协商,但是不允许使用本地缓存
3.地址栏输入或点击超链接
这种用的最多,允许浏览器以最少的请求获取数据
HTTP缓存机制梳理的更多相关文章
- linux下的缓存机制及清理buffer/cache/swap的方法梳理
(1)缓存机制 为了提高文件系统性能,内核利用一部分物理内存分配出缓冲区,用于缓存系统操作和数据文件,当内核收到读写的请求时,内核先去缓存区找是否有请求的数据,有就直接返回,如果没有则通过驱动程序直接 ...
- linux下的缓存机制及清理buffer/cache/swap的方法梳理 (转)
一.缓存机制介绍 在Linux系统中,为了提高文件系统性能,内核利用一部分物理内存分配出缓冲区,用于缓存系统操作和数据文件,当内核收到读写的请求时,内核先去缓存区找是否有请求的数据,有就直接返回,如果 ...
- 再次探究Android ListView缓存机制
概述 虽然现在5.0后Google推出了RecycleView,但在5.0 Lollipop普及前Listview仍会被广泛使用,所以打算再次探究一下Listview的源码,了解一下Listview ...
- 聊聊MyBatis缓存机制【美团-推荐】
聊聊MyBatis缓存机制 2018年01月19日 作者: 凯伦 文章链接 18778字 38分钟阅读 前言 MyBatis是常见的Java数据库访问层框架.在日常工作中,开发人员多数情况下是使用My ...
- 聊聊MyBatis缓存机制
https://tech.meituan.com/mybatis_cache.html 前言 MyBatis是常见的Java数据库访问层框架.在日常工作中,开发人员多数情况下是使用MyBatis的默认 ...
- 【转】MyBatis缓存机制
转载:https://blog.csdn.net/bjweimengshu/article/details/79988252. 本文转载自公众号 美团技术点评 前言 MyBatis是常见的Java数据 ...
- [转载]Linux缓存机制
[转载]Linux缓存机制 来源:https://blog.csdn.net/weixin_38278334/article/details/96478405 linux下的缓存机制及清理buffer ...
- 【腾讯Bugly干货分享】彻底弄懂 Http 缓存机制 - 基于缓存策略三要素分解法
本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/qOMO0LIdA47j3RjhbCWUEQ 作者:李 ...
- MyCat源码分析系列之——BufferPool与缓存机制
更多MyCat源码分析,请戳MyCat源码分析系列 BufferPool MyCat的缓冲区采用的是java.nio.ByteBuffer,由BufferPool类统一管理,相关的设置在SystemC ...
随机推荐
- 功能:使用QQ号登陆,并加上微信和短信提醒,是否增量备份可选,阿里大鱼短信发送开发与测试,聚合数据(用JSON发短信,比较清楚)
微博就可以,所以其它软件也可以http://desktop.weibo.com/ http://blog.csdn.net/jueblog/article/details/14497181http:/ ...
- xcode安装
Xcode5.1默认不支持iOS5版本的模拟器开发调试,在OS X Mavericks(10.9.x)下默认只能支持iOS6.1及以上版本的模拟器,在OS X Mountain Lion(10.8.x ...
- ortp使用详解2
五:数据的接收和发送 1. 发送过程: 应用发送数据时调用接口 rtp_session_send_with_ts 完成.参数为会话句柄,数据缓冲区地址,数据长度以及应用当前的时间戳.在该接口中,会先调 ...
- 回调函数的意义以及python实现
因工作需要,最近在学习使用python来解析各种文件,包括xmind,xml,excel,csv等等. 在学习python解析XML的时候看到这样一段话: 3.ElementTree(元素树) Ele ...
- 就是一段程序,可以求出N个不等长列表中取N个元素形成的所有组合
def get_result_in_vector(vector, N, tmp, tmp_result): """ :param vector:所有组合的拼接 :para ...
- PHP中数组转换为XML格式
最近公司要做一个API接口,输出格式要有JSON与XML格式, 在PHP中,输入JSON直接json_encode就可以,但输出XML没有提供函数,于是决定自己写一个. <?php /** * ...
- 为什么p标签不能嵌套div??
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...
- JDBC编程之事务处理
JDBC中的事务处理指的是事务的一致性等问题,例如插入一条数据(id,name,password)到表中,另一条数据(address,id)到另一张表中,并且两条数据是相关联的,那么假设第一条数据插入 ...
- Highcharts 带有数据标签曲线图表
<html> <head> <meta charset="UTF-8" /> <title>Highcharts</title ...
- lua 加密
项目要求对lua脚本进行加密,查了一下相关的资料 ,得知lua本身可以使用luac将脚本编译为字节码(bytecode)从而实现加密,试了一下,确实可行.下面是使用原生的lua解释器编译字节码:1.新 ...