- 浏览: 1356827 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (453)
- Struts2 (4)
- Struts1 (16)
- Spring (9)
- Hibernate (5)
- AJAX (16)
- MS Server (9)
- Oracle (35)
- 测试技术 (5)
- 其他 (37)
- JSF (1)
- EJB (5)
- ASP.NET (9)
- iBATIS (5)
- Struts Spring Hibernate (2)
- HTML (12)
- Eclipse使用 (5)
- 设计模式 (5)
- JSP (32)
- 正则表达式 (2)
- 服务器 (12)
- Java基础 (48)
- MySQL (4)
- 面试 (22)
- UML (1)
- 数据结构 (3)
- Ant (2)
- 规范 (4)
- JavaScript (29)
- 软件使用及技巧 (25)
- PHP (1)
- DWR (3)
- FreeMarker (1)
- ExtJs (17)
- JFreeChart (9)
- Reports (2)
- JavaException (1)
- Java Mail (1)
- Flex (9)
- 异常 (12)
- Log4j (2)
- WebService (1)
- jQuery (1)
- Sybase (2)
- myeclipse_plugin (2)
- Linux (5)
- jbpm (2)
- SCM (1)
- mongoDB (1)
最新评论
-
lihua2008love:
<typeAlias alias="User& ...
IBATIS简单操作 -
lihua2008love:
...
关于项目框架设计的一点学习 -
c_jinglin:
我使用<OBJECT CLASSID="cls ...
这就是个静态页面通过js控制mscomm对某com设备进行访问的例子. -
zlbjava:
赞,用了还不错
java获取请求的ip地址,并解析ip所属地区 -
完美天龙:
cs842813290 写道楼主,我明白的地方:在链表已有N个 ...
JAVA实现双向链表
控制 Web 缓存
假设两个并发用户(用户 A 和用户 B)正试图使用基于 Web 的界面更新同一段数据。 假定用户 A 首先提交了更改的信息,随后应用程序将此信息存储到数据库中。 此时,用户 B 很有可能在他的 Web 浏览器中看到的是陈旧数据,且对此数据的更改可能覆盖用户 A 所做的修改。即使应用程序禁止并发用户访问同一数据,但如果用户单击浏览器的“后退”按钮,某个用户仍然可以看到陈旧内容。 如果应用程序开发人员忽略这些问题,它们可能导致信息不一致或数据丢失。
在以下各部分中,我概述了几个确保所提供内容的新鲜性的策略,从而避免出现陈旧数据问题。
使用 No-Cache 头部 为了尽量减少网络通信量,Web 浏览器和代理必须缓存静态页面、JavaScript、CSS 文件和像。 而缓存动态内容可能产生不良的负面影响,尤其是当 Web 窗体包含从数据库中提取的数据时。
幸运的是,使用分别由 HTTP/1.0 和 HTTP/1.1 标准定义的“Pragma:no-cache”和“Cache-Control:no-cache”头部可以很方便地禁用 HTTP 缓存。 例如,可以使用一个简单的过滤器设置这两个头部:
可以在应用程序的 web.xml 文件中为所有 JSP 页面、JSP 页面的子集或只为使用 JSF 和 ADF Faces 的网页配置此过滤器,如以下示例演示:
可以根据在应用程序中更新数据的方式修改此过滤器以设置其他 Cache-Control 头部以及 Age、Date、Expires 和 Last-Modified。 有关这些头部的更多详细信息,请参阅 HTTP 规范。
假设两个并发用户(用户 A 和用户 B)正试图使用基于 Web 的界面更新同一段数据。 假定用户 A 首先提交了更改的信息,随后应用程序将此信息存储到数据库中。 此时,用户 B 很有可能在他的 Web 浏览器中看到的是陈旧数据,且对此数据的更改可能覆盖用户 A 所做的修改。即使应用程序禁止并发用户访问同一数据,但如果用户单击浏览器的“后退”按钮,某个用户仍然可以看到陈旧内容。 如果应用程序开发人员忽略这些问题,它们可能导致信息不一致或数据丢失。
在以下各部分中,我概述了几个确保所提供内容的新鲜性的策略,从而避免出现陈旧数据问题。
使用 No-Cache 头部 为了尽量减少网络通信量,Web 浏览器和代理必须缓存静态页面、JavaScript、CSS 文件和像。 而缓存动态内容可能产生不良的负面影响,尤其是当 Web 窗体包含从数据库中提取的数据时。
幸运的是,使用分别由 HTTP/1.0 和 HTTP/1.1 标准定义的“Pragma:no-cache”和“Cache-Control:no-cache”头部可以很方便地禁用 HTTP 缓存。 例如,可以使用一个简单的过滤器设置这两个头部:
package caches; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class NoCacheFilter implements Filter { private FilterConfig config; public void init(FilterConfig config) throws ServletException { this.config = config; } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletResponse httpResponse = (HttpServletResponse) response; httpResponse.addHeader("Pragma", "no-cache"); httpResponse.addHeader("Cache-Control", "no-cache"); chain.doFilter(request, response); } public void destroy() { } }
可以在应用程序的 web.xml 文件中为所有 JSP 页面、JSP 页面的子集或只为使用 JSF 和 ADF Faces 的网页配置此过滤器,如以下示例演示:
<filter> <filter-name>NoCacheFilter</filter-name> <filter-class>caches.NoCacheFilter</filter-class> </filter> <filter-mapping> <filter-name>NoCacheFilter</filter-name> <servlet-name>FacesServlet</servlet-name> </filter-mapping>
可以根据在应用程序中更新数据的方式修改此过滤器以设置其他 Cache-Control 头部以及 Age、Date、Expires 和 Last-Modified。 有关这些头部的更多详细信息,请参阅 HTTP 规范。
发表评论
-
Web开发通用监控类解决方案(代码零侵入性)
2009-07-01 14:00 1210我们开发网站的过程中,经常会碰到这种情况,当调用某个类中函数的 ... -
java获取请求的ip地址,并解析ip所属地区
2009-06-01 09:05 9089每次看见QQ上面能够显示对方的ip和地址让人觉得舒服。。刚刚无 ... -
jsp是上传图片加水印
2009-05-05 14:46 1542参考附件. -
JSP 中路径相关的常用解决办法
2009-04-22 15:58 1939<%@ page language="ja ... -
Jsp页面弹出输入对话框的实现收藏
2009-01-16 16:48 4007在写JSP页面的时候,有时需要点击一个按钮弹出一个输入对话框, ... -
log4j xml配置详解
2008-12-30 08:07 15572<?xml version="1.0" ... -
一个关于java.net.Socket的超时的问题
2008-12-26 10:44 5041从异常信息中,可以看到是read timed out,应该是S ... -
防止刷新带来的重复提交
2008-10-08 14:17 1534------------------------------- ... -
防止盗链
2008-09-04 22:28 1585<%=request.getHeader("R ... -
ip 验证
2008-08-31 23:38 1230if(kk_BlacklistVehicle_UserEnro ... -
用户登陆 封装
2008-08-31 23:37 1196首先要有一个封装类,我用UserInfo package d ... -
加密算法SHA-1,SHA-256,SHA-512,MD2,MD5
2008-08-31 23:33 6197自定义某种算法 package test; ... -
Java 调用 Oracle 存储过程返回结果集
2008-08-12 08:16 2599Oracle 存储过程返回结果集用 ref cursor 实现 ... -
分页技术
2008-07-19 11:33 1419在使用数据库的过程中,不可避免的需要使用到分页的功能,可是JD ... -
对分页的封装
2008-07-16 19:59 1889package com.bjsxt.oa.web; im ... -
Pagger-taglib分页
2008-07-16 17:57 1425<%@ page language="java ... -
JavaScirpt和JSP数据数据交互使用问题
2008-07-03 21:53 1511一、页面中的JavaScript的数据如何提交给后台的jsp程 ... -
用Cookie实现的购物车
2008-07-02 23:17 8313Cusorderitem.java 封装了相关的商品购买信息 ... -
Servlet中文API文档
2008-06-30 14:08 4165基本类和接口 一、javax. ... -
JSP tag 学习
2008-05-19 20:16 2748在JSP2.0 中,对于自定义的标签有两种实现方法,实现接口或 ...
相关推荐
4. 缓存注入:在WebAPI控制器或操作方法上添加特性(Attribute),标记哪些接口需要启用缓存功能。这样,每次调用这些接口时,都会先检查缓存,若命中则返回缓存结果,否则执行业务逻辑并保存响应到缓存。 三、使用...
在IT行业中,Web缓存是一种优化网页加载速度和减少服务器压力的重要技术。它涉及到浏览器缓存、CDN缓存、代理服务器缓存等多个层面。本文将深入探讨Web缓存的基本概念、工作原理以及如何防止静态资源非正常缓存的...
总的来说,基于Spring的Web缓存涉及到Spring框架的缓存抽象、注解驱动的缓存逻辑、Maven依赖管理和实际缓存实现的选择与配置。理解并熟练掌握这些知识点,将有助于构建高性能、低延迟的Web应用。开发者需要考虑缓存...
然而,实际的Java Web缓存解决方案,如使用EhCache、Redis或Spring Cache等,通常会提供更复杂的功能,包括缓存失效策略、分布式缓存支持、缓存同步等。这些高级特性可以进一步提升系统的性能和可扩展性,并且简化...
标题和描述中的“J2EE WEB缓存技术详解”指向了一篇关于在Java Web应用程序中使用缓存技术的深入分析文章。文章由作者夏俊于2011年撰写,主要探讨了在处理大量数据时,如何通过实施缓存策略来优化系统性能,特别是...
在Web开发中,页面缓存是一个重要的概念,它涉及到用户浏览网页时的性能优化和更新体验。当浏览器加载一个网页后,为了加快后续访问速度,会将页面的静态资源(如HTML、CSS、JavaScript文件、图片等)存储在本地缓存...
在这个场景中,"webapi接口缓存组件.rar"是一个压缩包,包含了实现Web API接口缓存功能的相关代码。缓存是提升应用程序性能的关键技术,它减少了对数据库或其他耗时资源的重复访问,降低了服务器负载。 在描述中...
《Web搜索与Web缓存的若干关键问题研究》是一份深入探讨互联网技术核心领域的文档,主要聚焦于两个关键环节:Web搜索和Web缓存。在信息化时代,这两者对于提升用户体验、优化网络性能以及保障信息获取效率至关重要。...
Web缓存是网络技术中的一个重要概念,主要用于提高数据访问速度,减少网络带宽消耗,以及降低服务器负载。在Web应用程序中,缓存机制扮演着关键角色,尤其在高并发、大数据量的场景下,它的作用更为显著。本文将深入...
这是一篇知识性的文档,主要目的是为了让Web缓存相关概念更容易被开发者理解并应用于实际的应用环境中。为了简要起见,某些实现方面的细节被简化或省略了。如果你更关心细节实现则完全不必耐心看完本文,后面参考...
### 基于AOP的智能Web缓存框架 #### 概述 随着互联网技术的飞速发展,Web应用程序的需求量急剧增加,这对服务器的处理能力提出了更高的要求。为了提高Web应用系统的性能,缓存技术成为了优化用户体验的重要手段之...
Cache-Control 是一种控制浏览器缓存的规则,它可以控制浏览器缓存的时长和频率。 Cache-Control 规则可以设置缓存的时长,例如 Cache-Control: max-age=3600,可以设置缓存的时长为一小时。 Etag 是一种控制...
可以通过以下两种方式来控制页面缓存: - **编程方式**:通过操作`HttpCachePolicy`类来定制缓存策略。 - **使用指令**:在页面顶部添加`@ OutputCache`指令来配置缓存策略,例如: ```html ``` 这里,`...
总结,浏览器缓存是提高Web应用性能的重要手段,理解其工作原理和控制方式,能帮助开发者构建更高效、响应更快的网站。通过合理利用HTTP缓存策略和服务工作者,我们可以为用户提供更流畅的浏览体验,同时减轻服务器...
### 显示所有缓存与清除所有缓存:ASP.NET (C#) 在Web开发中,缓存技术被广泛应用于提高应用程序的性能...通过上述方法,我们可以有效地管理ASP.NET应用程序中的缓存,提升应用性能的同时也能灵活控制缓存的生命周期。
2. **启用缓存**:相反,如果要模拟有缓存的情况,可以使用`web_cache_enable()`函数开启缓存,并通过`web_cache_control()`来控制缓存策略。例如,可以设置`web_cache_control("cache", "on")`来开启缓存,并通过`...
1. 使用Cache-Control头:在HTTP响应头中添加Cache-Control头,可以控制浏览器的缓存行为。例如,可以设置max-age参数来指定缓存的有效期。 2. 使用ETag头:ETag头可以标识Web页面的版本号,当Web页面更新时,ETag头...
CandyWebCache是移动端web资源的本地缓存解决方案,能够拦截webview的请求,并优先使用本地缓存静态资源进行响应,以此来对webview加载页面性能进行优化。 特点: 协议层拦截请求,透明替换响应 静态资源版本控制及...
Android WebView 缓存详解 一. 两种缓存类型: 页面缓存:加载一个网页时的html、JS、...数据缓存:分为AppCache和DOM Storage两种 我们开发者可以自行控制的就是这些缓存资源 AppCache: 我们能够有选择的缓冲web