`
duyouhua1214
  • 浏览: 230609 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

使用Filter快速对网页资源进行缓存

    博客分类:
  • Java
阅读更多

使用Filter快速对网页资源进行缓存,在网页资源没有改变的情况下避免多次HTTP调用!

    我们可以通过Filter快速对网页资源进行缓存。你可以在你的web.xml设置一个拦截器,并可以指定特定的内容类型,它可以拦截response,并且可以编辑HTTP头。
代码如下:
package com.xyz

import java.io.IOException;
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;

public class CacheFilter implements javax.servlet.Filter {
  FilterConfig filterConfig = null;

  public void init(FilterConfig filterConfig){
    this.filterConfig = filterConfig;
  }

  public void doFilter(ServletRequest req,
     ServletResponse res,
     FilterChain chain)
     throws IOException, ServletException {

    String sCache = filterConfig.getInitParameter("Cache");

    if(sCache != null){
 ((HttpServletResponse)res).setHeader("Cache-Control", sCache);
    }

    chain.doFilter(req, res);
  }

  public void destroy(){
    this.filterConfig = null;
  }
}

现在,假设我们要使这个filter对所有的jpg请求起作用,那么,你就需要在你的web.xml里增加下面的内容:
<filter>
  <filter-name>Cache</filter-name>
  <filter-class>com.xyz.CacheFilter</filter-class>
  <init-param>
    <param-name>cache</param-name>
    <param-value>public, max-age=2592000</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>Cache</filter-name>
  <url-pattern>*.jpg</url-pattern>
</filter-mapping>

这个filter现在会指示客户端缓存存贮特定的内容(jpg),时间是2592000秒。
这个filter也可以作用于.css.js文件。事实上,这个filter可以作用于你指定的任何文件类型。只需要简单改变url-pattern 属性或者新增一个。
例如:
<filter>
  <filter-name>Cache</filter-name>
  <filter-class>com.xyz.CacheFilter</filter-class>
  <init-param>
    <param-name>cache</param-name>
    <param-value>public, max-age=2592000</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>Cache</filter-name>
  <url-pattern>*.css</url-pattern>
</filter-mapping>

或者
<filter>
  <filter-name>Cache</filter-name>
  <filter-class>com.xyz.CacheFilter</filter-class>
  <init-param>
    <param-name>cache</param-name>
    <param-value>public, max-age=2592000</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>Cache</filter-name>
  <url-pattern>*.jpg</url-pattern>
</filter-mapping>
<filter-mapping>
  <filter-name>Cache</filter-name>
  <url-pattern>*.css</url-pattern>
</filter-mapping>

关于作者:
胡萝卜,chinesedocument.cominjava.org的站长。对j2ee比较感兴趣。此文是根据jguru.com上的相关faqs翻译修改而来。
chinesedocument.com
是一家提供教程、中文文档下载、开发工具下载等方面的综合性java网站。
injava.org
是一家提供java个人门户的网站。

 

文章来源:网上

分享到:
评论

相关推荐

    jsp 页面缓存

    JSP是Java语言用于创建动态网页的一种技术,而缓存则是一种存储机制,它能暂时保存经常被请求的数据,以便于快速响应后续的相同请求。 首先,让我们了解什么是页面缓存。当用户请求一个网页时,如果该页面的内容是...

    java-bloomfilter

    1. **缓存:** 当需要快速检查数据是否已存在于缓存中,但内存有限时。 2. **垃圾邮件过滤:** 判断某个邮箱地址是否为垃圾邮件发送者。 3. **网页爬虫:** 判断是否已访问过某个网址,避免重复抓取。 4. **推荐系统...

    bloom filter 相关论文资料

    布隆过滤器广泛应用于数据库、搜索引擎、缓存系统等领域,用于快速判断某个元素是否可能存在于集合中,以减少不必要的磁盘或网络访问。例如,在垃圾邮件过滤中,它可以快速判断邮件地址是否可能出现在黑名单中;在...

    C++网络爬虫项目

    在此之后,搜索引擎会对网页进行解析,抽取网页主体内容,以及页面中包含 的指向其它页面的所谓超链接。 为了加快用户查询的响应速度,网页内容通过 “倒排索引”这种高效查询数据结构来保存,而网页之间的链接关系...

    memcache_cache_handler.php for smarty 示例代码

    2. **缓存机制**:在Web开发中,缓存是一种优化策略,它将常用数据保存在内存中,以便快速访问,减少对数据库或计算资源的依赖。Smarty支持多种缓存处理,包括文件缓存、数据库缓存等,`memcache_cache_handler....

    php手册(网页版)

    7. **表单处理**:PHP可以接收和处理HTTP请求中的表单数据,使用`$_GET`和`$_POST`全局数组获取用户输入,结合`filter_var()`进行数据过滤和验证。 8. **会话管理**:PHP通过`session_start()`启动会话,`$_SESSION...

    lucene全文检索简单索引和搜索实例

    - 查询优化:通过使用Filter、BooleanQuery等,可以对查询条件进行组合和过滤,进一步提升搜索性能。 总结,Lucene作为一款强大的全文检索库,其核心在于索引的创建和搜索的执行。通过理解其基本概念和操作流程,...

    SpringMVCHibernate集成及常见问题总结

    在后续的项目中,可以进一步完善这个脚手架,如添加AOP缓存(例如使用Memcached)、单元测试、监控功能(如查询Hibernate二级缓存命中率)、RPC服务、任务调度(通过Quartz)、邮件发送(使用JavaMail)、整合更多...

    PHP实用例子100例

    19. **缓存技术**:使用APC、Memcached或Redis进行数据缓存,提升系统性能。 20. **安全防护**:防止SQL注入、XSS攻击,使用password_hash和password_verify进行密码加密。 这些实例是提升PHP技能的宝贵资料,每个...

    AJAX开发简略PDF(含配文代码)

    4. **AJAX与J2EE集成**:展示如何在J2EE环境中使用AJAX,例如通过Servlet或Filter处理AJAX请求,以及在JSF中使用AJAX功能进行组件级更新。 5. **实战代码示例**:提供一系列配文代码,涵盖了从简单的数据获取到复杂...

    JavaScript源码大全 v1.0(CHM)

    4. **数组与集合**:数组的方法(push、pop、shift、unshift、splice、slice、concat、join、split等)、数组遍历(for...of、forEach、map、filter、reduce等)、Set和Map数据结构的使用。 5. **DOM操作**:选择...

    PHP 100 实例

    15. **缓存技术**:如使用`APC`、`memcached`或`redis`进行数据缓存,提高网站性能。 通过这些实例,学习者不仅可以了解PHP的基本语法,还能深入到实际项目开发中可能遇到的问题,例如用户认证、数据验证、网页动态...

    200个常用的js代码

    这份资源对初学者来说,是一个很好的实践库,可以帮助他们快速掌握和运用JavaScript的常见功能。对于有经验的开发者,这些代码片段也能提供灵感和解决问题的参考。通过学习和理解这些代码,可以提升对JavaScript的...

    Lucene API

    内存管理涉及缓存和段合并策略,以优化性能和资源使用。 **8. 高级特性** Lucene还提供了高级特性,如拼写检查(SpellChecker)、地理位置搜索(Geospatial Search)、近实时搜索(Near Real-Time Search)以及复杂...

    My accumulation within Google docs

    7. `一、使浏览器不缓存页面的过滤器.doc`:这份文档可能介绍了如何使用Java过滤器来禁用浏览器对网页的缓存,以确保每次访问都能获取最新的页面内容。 8. `java 代理机制.doc`:Java代理允许动态创建具有额外行为...

    java 网站模板

    通过使用Spring Boot,开发者可以快速创建一个具备完整功能的Java Web项目,包括模板引擎、数据库访问等。 3. **网站模板结构** 一个完整的Java网站模板通常包含以下部分: - HTML/CSS/JavaScript:构成前端用户...

    Lucene项目源码

    此外,通过调整分析器、相似度算法和缓存策略,可以对搜索性能进行优化。 10. **学习资源** 学习Lucene源码有助于开发者深入理解搜索引擎的工作原理,以及如何在实际项目中应用。社区提供的教程、文档和讨论论坛都...

    PHP的面试题集收集整理.doc

    例如,使用`START TRANSACTION`、`COMMIT`和`ROLLBACK`语句进行事务管理。 面试题9:提高Apache+MySQL+PHP性能的方法包括负载均衡、缓存策略(如Memcached、Redis)、优化SQL查询、开启OPcache、调整服务器配置等。...

    LR中的WEB函数列表

    - `web_load_cache`:加载先前保存的缓存,用于快速恢复状态。 4. **检查函数**: - `web_find`:在HTML页面中查找特定文本,用于验证页面内容。 - `web_global_verification`:在整个脚本执行期间搜索特定文本...

    asp.net知识库

    使用Relations建立表之间的关系并却使用PagedDataSource类对DataList进行分页 通过作业,定时同步两个数据库 SQLSERVER高级注入技巧 利用反射实现ASP.NET控件和数据实体之间的双向绑定,并且在客户端自动验证输入的...

Global site tag (gtag.js) - Google Analytics