- 浏览: 119737 次
- 性别:
- 来自: 湖南
文章分类
最新评论
-
一步一个天涯:
good.
tomcat配置热启动,我试过有用的方式 -
yuechen323:
哥们!!看了你博客的大部分文章,写的都非常的通俗易懂,谢谢~ ...
我在java中碰到的设计模式 -
悲剧了:
...
jstl
1.概念 Cache-control
用于控制HTTP缓存(在HTTP/1.0中可能部分没实现,仅仅实现了Pragma: no-cache) 数据包中的格式: Cache-Control:
cache-directive
cache-directive可以为以下: request时用到: response时用到:
HTTP头的Expires与Cache-control
| "no-cache"
| "no-store"
| "max-age" "=" delta-seconds
| "max-stale" [ "=" delta-seconds ]
| "min-fresh" "=" delta-seconds
| "no-transform"
| "only-if-cached"
| "cache-extension"
| "public"
| "private" [ "=" <"> field-name <"> ]
| "no-cache" [ "=" <"> field-name <"> ]
| "no-store"
| "no-transform"
| "must-revalidate"
| "proxy-revalidate"
| "max-age" "=" delta-seconds
| "s-maxage" "=" delta-seconds
| "cache-extension"
部分说明:
根据是否可缓存分为
Public 指示响应可被任何缓存区缓存。
Private 指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的
部分响应消息,此响应消息对于其他用户的请求无效。
no-cache 指示请求或响应消息不能缓存(HTTP/1.0用Pragma的no-cache替换)
根据什么能被缓存
no-store 用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。
根据缓存超时
max-age 指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。
min-fresh 指示客户机可以接收响应时间小于当前时间加上指定时间的响应。
max-stale 指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以
接收超出超时期指定值之内的响应消息。
Expires
表示存在时间,允许客户端在这个时间之前不去检查(发请求),等同max-age的
效果。但是如果同时存在,则被Cache-Control的max-age覆盖。
格式:
Expires = "Expires" ":" HTTP-date
例如
Expires: Thu, 01 Dec 1994 16:00:00 GMT (必须是GMT格式
)
2.应用
通过HTTP的META设置expires和cache-control
<meta http-equiv="Cache-Control" content="max-age=7200" />
<meta http-equiv="Expires" content="Mon, 20 Jul 2009 23:00:00 GMT" />
上述设置仅为举例,实际使用其一即可。这样写的话仅对该网页有效,对网页中的图片或其他请求无效,并不会做任何cache。
这样客户端的请求就多了,尽管只是检查Last-modified状态的东西,但是请求一多对浏览速度必定有影响。
如果要对文件添加cache可以通过apache的mod_expire模块,写法为
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 days"
</IfModule>
记得ExpiresActive设为On,我起先没设置On,似乎怎样YSlow都查不到缓存机制。这样添加的话就是默认所有的。
如果要针对个别MIME类型则可以:
ExpiresByType image/gif "access plus 5 hours 3 minutes"
见 Apache Module mod_expires
另外,当点击浏览器上的刷新,客户端发送的请求中均是max-age=0,表示validate操作,发送请求到服务器
要求检查cache,再更新cache,一般得到的是304 Not Modified,表示没变动。
网页的缓存是由HTTP消息头中的“Cache-control”来控制的,常见的取值有private、no-cache、max-age、must-revalidate等,默认为private。
其作用根据不同的重新浏览方式分为以下几种情况:
(1) 打开新窗口如果指定cache-control的值为private、no-cache、must-revalidate,那么打开新窗口访问时都会重新访问服务器。而如果指定了max-age值,那么在此值内的时间里就不会重新访问服务器,例如: Cache-control: max-age=5 表示当访问此网页后的5秒内再次访问不会去服务器。
(2) 在地址栏回车如果值为private或must-revalidate(和网上说的不一样),则只有第一次访问时会访问服务器,以后就不再访问。如果值为no-cache,那么每次都会访问。如果值为max-age,则在过期之前不会重复访问。
(3) 按后退按扭如果值为private、must-revalidate、max-age,则不会重访问,而如果为no-cache,则每次都重复访问。
(4) 按刷新按扭无论为何值,都会重复访问 当指定Cache-control值为“no-cache”时,访问此页面不会在Internet临时文章夹留下页面备份。另外,通过指定“Expires”值也会影响到缓存。例如,指定Expires值为一个早已过去的时间,那么访问此网时若重复在地址栏按回车,那么每次都会重复访问: Expires: Fri, 31 Dec 1999 16:00:00 GMT 在ASP中,可以通过Response对象的Expires、ExpiresAbsolute属性控制Expires值;通过Response对象的CacheControl属性控制Cache-control的值,例如: Response.ExpiresAbsolute = #2000-1-1# ' 指定绝对的过期时间,这个时间用的是服务器当地时间,会被自动转换为GMT时间 Response.Expires = 20 ' 指定相对的过期时间,以分钟为单位,表示从当前时间起过多少分钟过期。 Response.CacheControl = "no-cache" Expires值是可以通过在Internet临时文件夹中查看临时文件的属性看到的。
发表评论
-
读取配置的又一种读法
2010-08-29 11:05 806/** * 读取配置文件 * */ pub ... -
Thread.sleep(long)和object.wait(long)的共同点和不同点
2010-08-20 16:11 1537Thread.sleep(long)和object. ... -
取得context.xml中配置的连接池的Java代码的写法
2010-08-18 11:00 10437. bind(String name,Object obj ... -
uri与url的区别
2010-08-18 10:00 123323. 所以我们得把这个login.jsp这个页面除外。 ... -
java中的类加载器,与tomcat自己又做了一些类加载器的不同
2010-08-17 11:11 152452. 现在来讲一下java中的类加载器的原理(双亲委派机制 ... -
map
2010-08-17 10:32 121479. map是一个非常强大的数据结构,他还可以用来表示一个 ... -
request.getSession(true)和request.getSession(false)的区别
2010-08-17 10:10 183677. 现在来看一下 request.getSession ... -
之前的一个表之间的关联我没能查出来
2010-08-17 10:07 77565. 现在要做这个分销 ... -
验证码:
2010-08-17 10:03 118558. 接下来看一下,验证码,现在很多网站都加上了验证码,其 ... -
Listener
2010-08-17 09:56 975107. 我们再介绍一个比 ... -
Jsp中的静态包含与动态包含:
2010-08-17 09:55 80899. 现在来讲静态和动态include 关于这个inc ... -
转发情况下的查询条件保持住:
2010-08-17 09:53 68396. 重点说一下上面的东西,${param.clientN ... -
ThreadLocal 我所用到的地方
2010-08-16 15:35 125492. 现在来看怎么把三 ... -
一个servlet解决增删改查
2010-08-16 15:26 1763现在用三大框架来开发,快是很快,什么事务,转发的非常容易了,回 ... -
如果你的项目 数值类型要求非常严的话请用BigDecimal
2010-08-16 15:12 75558. 他说这个计算的事,如果你使用什么float,do ... -
不同服务器上开发程序时间同步的问题
2010-08-16 15:08 105049. 你现在在操作日期这个字段上放值,一般 是直接放一个n ... -
定位解决默认选中
2010-08-16 15:05 746jstl: <select name="ca ... -
jstl
2010-08-16 14:47 276698. 现在来看一下 el 表达式对运算符的支持: 1+ ... -
成员变量与类的属性的区别
2010-08-16 14:43 1231public class User{ pr ... -
java中synchronized浅析
2010-08-16 14:40 81069. 你也可以不在方法定义的时候声明synchroniz ...
相关推荐
HTTP头部的`Cache-Control`字段是HTTP协议中用于控制缓存行为的重要机制,它为客户端和服务器之间的数据传输提供了更多的灵活性和效率。本文将深入解析`Cache-Control`字段的含义、作用及其各种指令,帮助你更好地...
`Cache-Control`字段可以接受多种指令,以控制网页的缓存策略。在本文中,我们将深入探讨`Cache-Control: private`以及其他常见的值,以及它们对不同浏览场景的影响。 1. **Cache-Control: private** `Cache-...
缓存头控制 控制响应缓存头 安装 npm install cache-header-control --save 用法 var express = require ( 'express' ) ; var setCacheHeader = require ( 'cache-header-control' ) ; var app = express ( ) ; ...
Response.CacheControl = "no-cache" ' 禁止缓存 ``` 以上代码示例展示了如何使用ASP来调整HTTP响应的缓存控制设置。 综上所述,`Cache-Control`和`Expires`字段是HTTP缓存策略的重要组成部分,它们决定了浏览器...
本篇我们将深入探讨如何使用Go来实现一个缓存控制中间件,特别是关于添加`ETag`头(基于内容的MD5哈希)和`Cache-Control`头。 `ETag`(Entity Tag)是HTTP响应头中的一个字段,用于标识资源的特定版本。它通常是...
安装composer require nomenjanahary/cache-control配置storage_cache_control : exclude_status : - " 5xx " - " 4xx " default_cache : maxAge : 3600 public : true # merge, replace override_strategy : merge ...
nginx-缓存控制没有缓存清除模块的 Nginx 缓存控制插件部分代码是基于其他 Nginx Cache Plugins 的代码,但这是设计为简单、轻量级的实现== 具体.... == Mark Jaquith 提出了使用强制动态页面加载的标头的基本设计,...
缓存控制中间Express/Connect 中间件设置响应头缓存选项安装 npm install cache-control-midd --save用法 var express = require ( 'express' ) ;var cacheControl = require ( 'cache-control-midd' ) ;var app = ...
缓存控制蜘蛛 搜寻网站以获取Cache-Control标头。 从HTML和CSS文件中提取URL 报告按Cache-Control标头的不同值分组的URL 安装 $ git clone git@github.com:jameslnewell/cache-control-spider.git $ npm i 用法 ...
koa-cache-router 用于koa的路由器缓存中间件。 对于缓存某些页面(例如/home很有用。安装npm i koa-cache-router --save用法var router = new(require('koa-router'))();var CacheMiddleware = require('koa-cache-...
`Cache-Control`是HTTP头中的一个字段,用于控制缓存行为。它允许服务器指示浏览器或其他代理如何缓存响应。常见的值有`no-cache`、`max-age`、`must-revalidate`等。例如,`Cache-Control: no-cache`意味着每次请求...
球衣缓存控制 与 JAX-RS Web 服务一起使用的注释,以向响应添加标头“Cache-Control”。 该项目应该被视为只是 JAX-RS 环境中注释功能的骨架。 用法 使用资源配置: 在package.name 中包含 CacheFilterFactory....
后端技术系列教程,包括: API开发全套教程 后端安全全套教程 后端微服务架构全套教程 后端性能优化全套教程 后端框架全套教程 后端缓存技术全套教程 后端编程语言全套教程 数据库技术全套教程
Cache-Control 是 HTTP/1.1 中的一个头部字段,用于控制浏览器的缓存行为,Cache-Control 字段可以设置多个值,包括 max-age、no-cache、no-store、private、public 等。 max-age 是 Cache-Control 字段中最常用的...
它通过解析Cache-Control和其他标头,提供有关请求和响应的信息来做到这一点-但是cachecontrol并没有实现实际的缓存后端,只是实现了控制平面来决定是否可以响应特定的响应。用法cachecontrol.CachableResponse返回...
const withCacheControl = require ( 'connect-cache-control2' ) . withCacheControl ; app . get ( '/some-path' , withCacheControl ( { maxAge : '2 hours' , private : true } ) , function ( req , res ) {...
S3存储桶缓存控制 一个简单的nodeJS脚本,使用“ aws-sdk” NPM模块。 我之所以建立它,是因为在S3上我有一个装满图像的巨大存储桶,并且需要向所有这些图像添加缓存控制标头。 AWS S3(目前)不支持在存储桶级别...
HTTP缓存依赖于HTTP响应头中的Cache-Control和Expires字段来指示浏览器何时可以使用缓存资源,何时需要重新验证资源的有效性。例如,"Cache-Control: max-age=3600"表示资源在1小时内有效,无需重新请求。而Service ...
Flask-CacheControl 描述: 一个轻量级的库,可以方便地在响应上设置Cache-Control标头。 使用cache_for,cache或dont_cache装饰器装饰视图函数。 利用Flask response.cache_control。 该扩展本身不提供任何缓存。...