If-Modified-Since If-None-Match
博客已经搬家,请访问如下地址:http://www.czhphp.com
If-Modified-Since & If-None-Match
If-Modified-Since,和 Last-Modified 一样都是用于记录页面最后修改时间的 HTTP 头信息,只是 Last-Modified 是由服务器往客户端发送的 HTTP 头,而 If-Modified-Since 则是由客户端往服务器发送的头,可 以看到,再次请求本地存在的 cache 页面时,客户端会通过 If-Modified-Since 头将先前服务器端发过来的 Last-Modified 最后修改时间戳发送回去,这是为了让服务器端进行验证,通过这个时间戳判断客户端的页面是否是最新的,如果不是最新的,则返回新的内容,如果是最新的,则 返回 304 告诉客户端其本地 cache 的页面是最新的,于是客户端就可以直接从本地加载页面了,这样在网络上传输的数据就会大大减少,同时也减轻了服务器的负担。
If-None-Match,它和ETags(HTTP协议规格说明定义ETag为“被请求变量的实体值”,或者是一个可以与Web资源关联的记号)常用来判断当前请求资源是否改变。类似于Last-Modified和HTTP-IF-MODIFIED-SINCE。但是有所不同的是Last-Modified和HTTP-IF-MODIFIED-SINCE只判断资源的最后修改时间,而ETags和If-None-Match可以是资源任何的任何属性,不如资源的MD5等。
ETags和If-None-Match的工作原理是在HTTP Response中添加ETags信息。当客户端再次请求该资源时,将在HTTP Request中加入If-None-Match信息(ETags的值)。如果服务器验证资源的ETags没有改变(该资源没有改变),将返回一个304状态;否则,服务器将返回200状态,并返回该资源和新的ETags。
ETag如何帮助提升性能?
聪明的服务器开发者会把ETags和GET请求的“If-None-Match”头一起使用,这样可利用客户端(例如浏览器)的缓存。因为服务器首先产生ETag,服务器可在稍后使用它来判断页面是否已经被修改。本质上,客户端通过将该记号传回服务器要求服务器验证其(客户端)缓存。
其过程如下:
1.客户端请求一个页面(A)。
2.服务器返回页面A,并在给A加上一个ETag。
3.客户端展现该页面,并将页面连同ETag一起缓存。
4.客户再次请求页面A,并将上次请求时服务器返回的ETag一起传递给服务器。
5.服务器检查该ETag,并判断出该页面自上次客户端请求之后还未被修改,直接返回响应304(未修改——Not Modified)和一个空的响应体。
参考页面:http://www.kuqin.com/web/20080513/8442.html
博客已经搬家,请访问如下地址:http://www.czhphp.com
转载于:https://www.cnblogs.com/czh-liyu/archive/2011/06/22/2087113.html
If-Modified-Since If-None-Match相关推荐
- Android ContentProvider、ContentResolver和ContentObserver的使用
1.ContentProvider.ContentResolver和ContentObserver ContentProvider是Android的四大组件之中的一个,可见它在Android中的作用非 ...
- C/C++怎样编写高质量的程序:头文件和源文件模板------高质量C++/C编程指南-第1章-文件结构
http://www.bianceng.cn/Programming/cplus/200705/614.htm 高质量C++/C编程指南-第1章-文件结构 第1章 文件结构 每个C++/C程序通常分为 ...
- SAP ABAP实用技巧介绍系列之 ABAP XSLT match keyword
Created by Jerry Wang, last modified on Jun 26, 2014 用于测试的xml: <catalog> <cd> <title& ...
- ngram语言模型—基于KneserNey及Modified Kneser Ney平滑
ngram语言模型-基于Kneser Ney及Modified Kneser Ney平滑 预处理 NGram 建模 KneserNey 平滑 Modified Kneser Ney Smoothing ...
- 【3维视觉】一文带你学习网格细分Mesh Subdivision算法(Loop, Butterfly, Modified Butterfly, Catmull-Clark, Doo-Sabin)
0.引言 介绍了Loop, Butterfly, Modified Butterfly, Catmull-Clark, Doo-Sabin等网格细分算法. 网格超分技术,换言之曲面细分,是指将一个模型 ...
- Not injecting HSTS header since it did not match the requestMatcher HSTS设置问题解决
HSTS请求设置 错误描述:在使用文件上传功能时,form表单提交带有header数据的请求时遇到这个问题,报错如下: Not injecting HSTS header since it did n ...
- python中的match和search的区别
对比 match(string[, pos[, endpos]]) | re.match(pattern, string[, flags]): 这个方法将从string的pos下标处起尝试匹配patt ...
- Python中re的match、search、findall、finditer区别正则
20210728 search 得到索引范围 原文地址: http://blog.csdn.net/djskl/article/details/44357389 这四个方法是从某个字符串中寻找特定子串 ...
- Linux那些事儿 之 戏说USB(大结局)还是那个match
从上次在几米的向左走向右走遇到usb总线的那个match函数usb_device_match()开始到现在,遇到了设备,遇到了设备驱动,遇到了接口,也遇到了接口驱动,期间还多次遇到usb_device ...
- Error:CPACK_PACKAGE_VERSION does not match version provided by version.hpp header!
环境:Cmake3.10+OpenCV2.4.13.5+CUDA9.2 Problem CMake Warning at cmake/OpenCVPackaging.cmake:23 (message ...
最新文章
- 读javascript高级程序设计11-事件
- Java中String 和StringBuffer的区别
- 鸿蒙系统和你,鸿蒙系统面世,但与您所想的不一样
- java 蓝桥杯算法训练 秘密行动
- 敏捷开发系列学习总结(16)——给Scrum Master的十个建议
- [P2396] yyy loves Maths VII
- jQuery—$ is not a function
- RAW-socket
- Android的Intent系统调用
- openwrt路由器完美破解成信宿舍校园网
- js获取本地文件(图片、word文档等)并获取其Base64化的编码,可用于本地文件上传至服务器
- ASP.NET 入门基础--搭建网站开发环境
- 商业化游戏服务器引擎自定义框架设计思路
- 【蓝桥杯省赛真题34】Scratch九宫格 少儿编程scratch蓝桥杯省赛真题讲解
- Hint: If you want to see a list of allocated tensors when OOM happens 的解决办法
- OkHttp简单封装
- 城阳区人才共有产权住房细则
- 云原生|kubernetes|etcd集群详细介绍+安装部署+调优
- win10网页找不到服务器dns,win10无法找到dns地址是怎么回事|win10无法找到dns地址如何解决...
- eclipse设置xml文件默认的打开方式为XML Editor
热门文章
- java画一个小车_小轿车简笔画怎么画
- 美式期权定价python_【定价】二叉树(CRR)欧式/美式期权定价的原理及Python实现...
- 图片生成html_markdown 生成头条文章的一个实现
- 只在用户登陆时运行_linux 系统的7个运行级别
- 对美食评语进行情感分析
- 特征工程(三):特征缩放,从词袋到 TF-IDF
- 在真实数据集上的随机森林模型参数调优
- nlp任务分类及适用方法
- 预印本(Preprint)及出版商的投稿政策
- c++ 拷贝构造函数 讲解