搜集了一些关于header中cache的配置信息
-------------------------------------
为了在http的响应头中添加入Expires、Cache-Control、Pragma这样的信息,我最初是使用的在网页<head></head>元素之间添加meta标签的方式,来企图添加这些http头信息到Response中,但这样的方式一直没有效果。通过查看页面源代码,发现meta标签也确实已经正确的加上了,但通过FF观察Response对象又没有输出相应的头信息。而当我改用Filter的方式,在Filter中通过获取Response对象,执行response.setHeader()方法,将http头信息写入Response对象时,就立即看到效果了。为什么会这样呢?
究其原因,其实是我对meta标签的误解造成的。Meta标签是html标准中的一个标签,是Response中html内容的一部分。它主要是用来为浏览器或搜索引擎提供与网页内容相关的信息的,也就是说它是为能够解析html语言的工具提供信息的。而http是一个应用层的协议,html文档只不过是http协议可以携带的内容之一。
那些包含meta标签信息的html文档都被http当做是普通文档而包装在body块中进行传输。因此,存在于meta标签中的这些模拟的http头信息,并不能够真正的对http头产生影响。而在程序的Filter对象中,通过response.setHeader()方法,由于操作的对象Response就是一个http响应对象的实例,所以当然可以成功的改变Response的头信息。
http://hi.baidu.com/tianpaomian/blog/item/fb4741129463925bf819b8d7.html
---------------------------------------
public static void setCacheExpireDate(HttpServletResponse response,
int seconds) {
if (response != null) {
Calendar cal = new GregorianCalendar();
cal.add(Calendar.SECOND, seconds);
response.setHeader("Cache-Control", "PUBLIC, max-age=" + seconds + ", must-revalidate");
response.setHeader("Expires", htmlExpiresDateFormat().format(cal.getTime()));
}
}
public static DateFormat htmlExpiresDateFormat() {
DateFormat httpDateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US);
httpDateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
return httpDateFormat;
}
在setHeader expires 的时候,也可以使用
response.setDateHeader("Expires",System.currentTimeMillis()+3600*1000);
http://weblogs.java.net/blog/felipegaucho/archive/2007/08/expires_http_he.html
-------------------------------------
Max-age和mod_expires
expires指定了一个确定的时间,这就要求客户端和服务器端在时间上保持一致。
除了expires,在http1.1中还有个可选择的Cache-Control相应头,通过Cache-Control的Max-age指令可以指定缓存的内容的生
命期限,即多久后失效,cache-conctrol类似:
Cache-Control: max-age=315360000
如果同时设置了expires和max-age指令,max-age将会覆盖expires。
http://blog.sina.com.cn/s/blog_6b93a42d0100vhzj.html
-------------------------------------
分享到:
相关推荐
为了提高网页的访问效率,浏览器可以在本地缓存以前访问过的页面,当浏览器再次访问那些已经缓存了的页面时,浏览器就不用再去访问远程的Web服务器了,而是直接从本地取出缓存的内容。缓存提高了浏览器的访问效率,...
通过winform使用httpclient客户端调用webApi接口,api使用oauth2.0权限控制,调用接口需要进行token获取认证、
HTTP协议Header介绍 查看Header: ... HTTP缓存是指当Web请求抵达缓存时,如果本地有“已缓存的”副本,就会从本地存储设备提取此文档 Cookies: Cookies是一种HTTP Header Accept: 表示浏览器客户
实现一个禁止缓存的过滤器。 要求和提示: (1)禁止浏览器缓存所有动态页面; (2)有3个http响应头字段可以禁止浏览器缓存当前页面,它们在Servlet中的示例代码如下。 response.setDateHeader("Expires",-1); ...
2. 全面支持正则表达式缓存设置模式匹配。 3. 基于RAM的缓存保障快速响应,而且不产生任何磁盘I/O。 4. 智能化的缓存内容清除,最高效使用RAM资源。 5. 通过缓存参数破坏,实现和后台更新同步,保证缓存内容及时更新...
ajax缓存有好处,但也有坏处,缓存有时候会导致误操作,影响用户体验,若你的WEB项目不需要ajax缓存功能,可按下述方法来禁止ajax缓存。 一、在ASP中禁止ajax缓存: ‘放在ASP网页最开头部分 Response.expires=0 ...
HTTP协议中的缓存 HTTP缓存:当web请求到达缓存时,如果本地有“已缓存”,就可以从本地缓存设备提取文档,而不需要从服务器中...浏览器把缓存文件的最后修改时间通过Header“If-Modified-Since”告诉Web服务器
1. nginx不缓存原因 默认情况下,nginx是否缓存是由nginx缓存服务器与源服务器共同决定的,...2.1 方法一:修改程序或者源服务器web程序响应的header2.2 方法二:nginx代理直接加上如下一句: 代码如下:proxy_ignore_hea
在web开发的时候经常需要用到ajax,但是有些问题往往会被忽略,如果提交后需要在服务端做一些后台操作的话因为浏览器默认状态下有缓存的原因,可能页面上的信息还是正确的,但是后台的逻辑代码却没有真正的更新。
响应缓存由Http请求中的header控制。 而ASP.NET Core对其都有相应的实现,并不需要了解里面的工作细节,即可对其进行良好的控制。 了解Http缓存 Http协议中定义了许多缓存,但总体可以分为强缓存和协商缓存两类。 ...
Web控件不缓存网页,也不从缓存中读取 禁止WebBrowser复制 CTRL+C 在WebBrowser窗口上模拟KeyBd_Event 在使用WebBrowser控件,先要 初始化和结束程序后要终止化(Initialization & Finalization) 自定义浏览器上下文...
主要包括减少HTTP请求、Edge Computing技术、Expires Header技术、Gzip组件、CSS和JavaScript最佳实践、主页内联、Domain最小化、JavaScript优化、避免重定向的技巧、删除重复JavaScript的技巧、关闭ETags的技巧、...
我个人认为,Output buffering是比较纯粹的4.0特征。尽管从概念上看来相当简单,但是output buffering功能...例如,如果在Web服务器的文档根目录下有一个小文本文件,叫做example.txt,文件中包含文本Hello, world!,那
②使用Fiddler监听请求,可以看到在未进行认证或认证失败的情况下,服务端会返回401 Unauthorized给客户端,并附带Challenge(质询),即在Response Header中添加WWW-Authenticate标头,浏览器识别到Basic后弹出...
3.1.1 缓存技术WebStorage 17 3.1.2 跨域交互缓存处理需求 17 3.1.3 页面回退管理需求 17 3.2 缓存处理机制 18 3.2.1 跨域缓存处理 18 3.2.2页面回退管理 18 3.3 模块实现 19 3.3.1跨域缓存机制的主要实现 19 3.3.2....
用完整的例子展示HTTP协议的各个环节,包含网络分层模型、TCP和HTTP的关系、HTTP数据包构成、头行信息的定义、数据传输类型、缓存和资源校验、Cookie和Session、各种非常有意义的Header、Nginx使用和代理、缓存配置...
1、语义化标签,比如header、footer、nav、aside、article、section 2、音视频,比如audio、video 3、画布canvas、矢量图svg 画布,canvas的api有getContext、fillStyle、fillRect等 4、本地存储 localStorage、...
//设置页面不缓存 response.setHeader("Pragma","No-cache"); response.setHeader("Cache-Control","no-cache"); response.setDateHeader("Expires", 0); // 将认证码存入SESSION session.setAttribute("rand",...
球衣缓存控制 与 JAX-RS Web 服务一起使用的注释,以向响应添加标头“Cache-Control”。 该项目应该被视为只是 JAX-RS 环境中注释功能的骨架。 用法 使用资源配置: 在package.name 中包含 CacheFilterFactory....
主要包括减少HTTP请求、Edge Computing技术、Expires Header技术、Gzip组件、CSS和JavaScript最佳实践、主页内联、Domain最小化、JavaScript优化、避免重定向的技巧、删除重复JavaScript的技巧、关闭ETags的技巧、...