http 缓存示例

服务器收到请求时,会在 200OK中回送该资源的 Last-Modified和 ETag头,客户端将该资源保存在 cache中,并记录这两个属性。当客户端需要发送相同的请求时,会在请求中携带 If-Modified-Since和 If-None-Match两个头。两个头的值分别是响应中 Last-Modified和 ETag头的值。服务器通过这两个头判断本地资源未发生变化,客户端不需要重新下载,返回 304响应。常见流程如下图所示:

上面的图片的是访问百度的时候,黑色的请求是取得资源,灰色的请求是发送的有效性确认,然后接下来从缓存服务器获取资源。

下面是对使用缓存资源进行http请求的时候的头部,可以看出有来自缓存服务器的响应和对资源服务器进行有效性确认的响应头部。

第一个请求的请求头部:

因为http响应将Date和Expires字段设置为相同的值,所以缓存服务器不会缓存该资源,所以每次都会去请求源资源服务器。max-age设置为0也可以使每次都要想源服务器进行有效性确认,而不是某个时间段之内不用确认。

向源服务器进行验证,首部中存在If-Modified-Since字段,告诉服务器端只接受在该时间之后修改过的资源,如果在该时间之后没有修改,返回304。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-05 18:33:42

http 缓存示例的相关文章

C# 预计算和缓存示例之一

//预计算和缓存示例 static void Main(string[] args) { //第一种方法 var add = CalcFunc(); Console.WriteLine(add(10)(20)); var add30 = add(30); var add40 = add30(40); Console.WriteLine(add40); Console.Read(); } // 定义函数,返回一个调用函数 static Func<int, Func<int, int>>

基于 自定义注解 和 aop 实现使用memcache 对数据库的缓存 示例

好久没更新blog了,在新公司打拼了两个月,每天都从早忙到晚,学到了很多东西,但是没有时间来更新blog了.... 下面开始讲解这次的主题 公司老大让我研究 ocs 就是阿里云的 开放缓存服务 点击打开链接 其实就是一个memcache的服务 memchech 就是用内存来存放 key -value  在一些情况下就不必频繁的访问 数据库了(其实就是个map) 如何在常用的Dao中方便的使用这个map呢,我首先想到了 aop,然后又想到了自定义注解,那么就开始干吧.... aop动态代理要使用的

php静态文件缓存示例

//开始缓冲区 ob_start(); $cache_file = "./cache/4.3-static.html"; $cache_time = 1; //设置缓存更新时间 if (file_exists($cache_file) && time() - $cache_time < filemtime($cache_file)) { include($cache_file); echo "<!--published at " . da

ABP缓存示例

private readonly ICacheManager _cacheManager; public ProgrammeManage(ICacheManager cacheManager) { _cacheManager = cacheManager; } /// <summary> /// 定时任务:更新缓存(仅查询今年的投票结果.按照节目顺序排序) /// </summary> /// <returns></returns> public async

Hibernate缓存

一.Hibernate缓存概述 Hibernate中提供两个级别的缓存,一级缓存和二级缓存. 1.一级缓存是Session级别的缓存,它属于事物范围的缓存,一级缓存有hibernate进行管理. 2.二级缓存是sessionFactory级别的缓存,它属于进程范围的缓存,二级缓存又可分为"内置缓存"和"外置缓存",内置缓存:是hibernate在创建sessionFactory时会加载.hbn.xml文件并会在内存中初始化一些默认的sql语句,该内置缓存是只读的:外

asp.net数据缓存(应用程序缓存)

应用程序缓存是用来存储与应用程序相关的对象,主要是由Cache类来实现的.命名控件: using System.Web.Caching;添加缓存1.指定键和值   Cache["key"] = "value"; 这种方法添加缓存最方便,但是如果需要设置缓存的有效期.依赖项等特性,它就变得无能为力了 2.使用Add()方法——只用于在ASP.NET缓存中添加新的缓存项(如果用它覆盖现有的缓存项,则会失败).   Cache.Add("key",&q

微信小程序 缓存说明

每个微信小程序都可以有自己的本地缓存,可以通过 wx.setStorage(wx.setStorageSync).wx.getStorage(wx.getStorageSync).wx.clearStorage(wx.clearStorageSync)可以对本地缓存进行设置.获取和清理.本地缓存最大为10MB. 注意: localStorage 是永久存储的,但是我们不建议将关键信息全部存在 localStorage,以防用户换设备的情况. wx.setStorage(OBJECT) 将数据存储

Python之路【第二十二章】:Django 缓存

缓存 由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcache中,5分钟内再有人来访问时,则不再去执行view中的操作,而是直接从内存或者Redis中之前缓存的内容拿到,并返回 Django中提供了6种缓存方式: 开发调试 内存 文件 数据库 Memcache缓存(python-memcached模块.pylibmc模块) 1.配置 ① 开发配置 # 此为开始

HTML5离线缓存(Application Cache)

HTML5离线缓存又名Application Cache,是从浏览器的缓存中分出来的一块缓存区,要想在这个缓存中保存数据,可以使用一个描述文件(manifest file),列出要下载和缓存的资源. Manifest 文件 manifest 文件是简单的文本文件,它告知浏览器被缓存的内容(以及不缓存的内容). manifest 文件可分为三个部分: CACHE MANIFEST - 在此标题下列出的文件将在首次下载后进行缓存 NETWORK - 在此标题下列出的文件需要与服务器的连接,且不会被缓