一般只对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 ...
随机推荐
-
javascript检测ActiveX插件是否安装/启用
本文主要提供在IE浏览器下检测ActiveX插件安装/启用的状态. 在一些应用开发中,需要用到一些第三方提供的ActiveX插件,如Flash插件. 为了在未安装插件的浏览器显示友好的提示,需要用到主 ...
-
duilib进阶教程 -- 改进窗口拖动 (12)
现在大家应该都知道caption="0,0,0,32",是指示标题栏区了吧,如果想要整个窗口都能拖动呢? 那直接把高度改成和窗口一样不就得了~O(∩_∩)O~ 嗯,这样是可以,比如 ...
-
数据可视化工具zeppelin安装
介绍 zeppelin主要有以下功能 数据提取 数据发现 数据分析 数据可视化 目前版本(0.5-0.6)之前支持的数据搜索引擎有如下 安装 环境 centOS 6.6 编译准备工作 sudo yum ...
-
apache rewrite设置 禁止某个文件夹执行php文件
RewriteRule (data|templates)/(.*).(php)$ – [F]
-
51nod贪心算法入门-----独木舟问题
独木舟问题 n个人,已知每个人体重,独木舟承重固定,每只独木舟最多坐两个人,可以坐一个人或者两个人.显然要求总重量不超过独木舟承重,假设每个人体重也不超过独木舟承重,问最少需要几只独木舟? 分析:按照 ...
-
HashSet 与HashMap底层实现
1. HashSet底层通过包装HashMap来实现,HashSet在添加一个值的时候,实际上是将此值作为HashMap中的key来进行保存. 2. HashMap的底层实现是通过初始化化一个Entr ...
-
Jedis与Redisson选型对比
1 概述 1.1. 主要内容 本文的主要内容为对比Redis的两个框架:Jedis与Redisson,分析各自的优势与缺点,为无线云管理项目中Redis编程模型的选择提供参考. 2. ...
-
day96
在服务器上部署上线项目 Linux数据库处理 首先我们需要在mysql中创建bbs库,并导入数据库SQL脚本(就是原本运行在我们项目中的数据库) 前提:需要进入mysql中 mysql> cre ...
-
关于SpringMVC
SpringMVC 原理:1.用户发送请求给服务器.url:user.do2.服务器收到请求.发现DispatchServlet可以处理.于是调用DispatchServlet.3.DispatchS ...
-
【cocos2d-x 手游研发小技巧(4)与Android混编实现换“头像图片”】
cocos2dx在android平台上的游戏开发中往往会遇到一些混编需求,如: 比方有的社区类游戏需要用到更换玩家的“头像”操作,其实就是调用android servers服务里面的本地图片,以及选取 ...