`
superfofo
  • 浏览: 130139 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

web header 设置缓存

    博客分类:
  • HTML
阅读更多
搜集了一些关于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
-------------------------------------
分享到:
评论

相关推荐

    Loadrunner负载测试 浏览器缓存设置

    在这个特定的场景下,我们关注的是“Loadrunner负载测试中的浏览器缓存设置”。了解如何在LoadRunner中正确设置浏览器缓存对于获取真实用户行为的数据至关重要,因为这直接影响到测试结果的准确性。 浏览器缓存是...

    页面的缓存与不缓存设置及html页面中meta的作用

    综上所述,页面的缓存与不缓存设置是通过HTTP协议头和HTML的`meta`标签来实现的,这涉及到多个层次的缓存策略,包括浏览器、中间缓存服务器和Web服务器。理解并正确运用这些设置,对于提高网站性能和用户体验至关...

    header中对于文件输出的相关设置.pdf

    总的来说,通过在HTTP响应Header中设置`Content-Type`、`Content-Disposition`、`Content-Length`、`Accept-Ranges`以及防止缓存的Header,开发者可以精确控制浏览器如何处理和显示服务器发送的文件。这不仅影响到...

    jsp缓存方式

    1. **确定缓存策略**:首页展示的新闻列表每天更新一次,因此我们可以设置一个较短的缓存时间,例如1小时。 2. **编写JSP页面**: - 在JSP页面顶部添加指令控制服务器端缓存: ```jsp ``` - 设置HTTP响应头...

    ajax添加header整理

    - **控制缓存行为**:比如通过设置`Cache-Control`头来控制浏览器如何缓存响应。 - **自定义头部信息**:可以用来传递开发者自定义的信息,如上面示例中的`Test`头。 总之,正确地使用Header可以使得AJAX请求更加...

    PHP禁止缓存如何禁止页面缓存

    在Web开发中,页面缓存是提高网站性能的重要手段之一。但是,在某些情况下,为了确保用户看到的是最新的数据或页面状态,我们需要禁用页面缓存。本文将详细介绍如何通过PHP代码来实现页面缓存的禁止。 #### 一、...

    LR中的WEB函数列表

    - `web_cleanup_auto_headers` 和 `web_remove_auto_header`:管理和删除自定义头。 - `web_revert_auto_header`:撤销添加的特定头,但保留隐性头。 - `web_save_header`:将请求和响应头保存到变量中。 11. **...

    禁用html页面的缓存

    在Web开发中,缓存机制是提升网站性能的重要手段之一。然而,在某些情况下,例如动态内容频繁更新的网页,为了确保用户始终能够看到最新的内容,开发者可能需要禁用对这些页面的缓存。本文将详细介绍如何针对ASP、...

    jsp 页面缓存

    在IT行业中,尤其是在Web开发领域,页面缓存是一种优化网站性能的重要技术。当我们谈论"jsp 页面缓存"时,我们指的是在JSP(JavaServer Pages)应用中利用缓存策略来提升网页加载速度和减少服务器负载。JSP是Java...

    基于nginx设置浏览器协商缓存过程详解

    在互联网技术领域中,Web缓存是一种提高网站响应速度和减少服务器负载的重要技术手段。Web缓存分为两大类:强缓存和协商缓存。本文重点讲述如何使用Nginx配置协商缓存的过程,以及协商缓存的工作原理,帮助大家在...

    winform调用webapi获取Token授权案例,webapi使用oauth2.0权限控制

    首先,我们需要创建一个HttpClient实例,设置基础URL和其他必要的请求头,如Content-Type。 ```csharp HttpClient httpClient = new HttpClient(); httpClient.BaseAddress = new Uri("http://your-api-url.com"); ...

    jsp去除浏览器缓存

    在Web开发中,为了提高用户体验及页面加载速度,浏览器通常会缓存一部分资源。但有时为了确保用户获取到最新的内容,我们需要禁止或控制浏览器对特定页面的缓存。本文将详细介绍如何在JSP(JavaServer Pages)应用中...

    ajax与jsp清除缓存

    1. **设置响应头**:通过设置`response.setHeader()`方法,可以控制HTTP响应头,从而控制浏览器的缓存行为。例如,设置`Pragma`、`Cache-Control`和`Expires`头字段可以告诉浏览器不缓存页面或立即过期。 ```java ...

    JSP清除缓存.txt

    3. **性能优化**:合理利用缓存可以显著提高Web应用的性能,因此在设置缓存控制时应权衡好安全性和性能之间的关系。 通过上述介绍,我们可以看到,在JSP中控制缓存行为是非常灵活且强大的。开发者可以根据具体需求...

    IE页面缓存问题jsp及servlet中的设置

    然而,对于动态网页或频繁更新的网页,不恰当的缓存设置可能会导致用户看到的是过期或错误的信息。因此,正确地管理页面缓存,尤其是在JSP和Servlet中,对于确保用户体验和数据的实时性至关重要。 ### JSP与Servlet...

    jsp清除各种缓存

    在Web开发中,缓存是一项非常重要的技术,它可以显著提高网站的响应速度和用户体验。然而,在某些情况下,我们需要清除缓存以确保用户获取到最新的数据。本文将详细介绍如何在JSP(JavaServer Pages)环境中清除不同...

    消除浏览器的301重定向缓存

    消除浏览器的301重定向缓存 浏览器的301重定向缓存是一种常见的问题,当用户输入特定的URL时,浏览器会自动重定向到另一个URL,而不管用户的意图是什么。这是因为浏览器会缓存301重定向的结果,以便加快网页的加载...

    页面缓存处理方案文档,解决前后端页面缓存

    这段配置告诉Nginx对.css和.js文件设置1小时的过期时间,并添加`Cache-Control`头,声明为可公共缓存。这允许浏览器和代理服务器缓存这些静态资源,但具体配置应根据实际需求和服务器性能调整。 综上所述,页面缓存...

    在Jsp中怎样清空缓存 了解就可以了

    要清空浏览器缓存,可以手动通过浏览器的设置选项来完成,如在Chrome中,可以在设置-&gt;隐私和安全-&gt;清除浏览数据中选择清除缓存文件。此外,开发者可以通过在HTTP响应头中添加`Cache-Control`或`Pragma`字段来控制...

Global site tag (gtag.js) - Google Analytics