`
duyouhua1214
  • 浏览: 236791 次
  • 性别: 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语言用于创建动态网页的一种技术,而缓存则是一种存储机制,它能暂时保存经常被请求的数据,以便于快速响应后续的相同请求。 首先,让我们了解什么是页面缓存。当用户请求一个网页时,如果该页面的内容是...

    Bloom filter 的研究和应用

    - **多级缓存系统**:在多级缓存架构中,如何有效地利用Bloom Filter进行缓存协作和资源共享。 #### 五、结论 Bloom Filter作为一种高效的数据结构,在代理缓存系统中展现出了巨大的潜力。通过对Bloom Filter的...

    java-bloomfilter

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

    bloom filter 相关论文资料

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

    06 - Fetch、filter、正则表达式实现快速古诗匹配.rar

    综上所述,通过Fetch API获取古诗数据,使用filter筛选包含关键词的古诗,以及正则表达式进行精确匹配,我们可以构建一个高效的古诗搜索功能。这一功能不仅可以应用于古诗库,还可以扩展到任何需要文本搜索的场合,...

    使用 FNV 进行快速散列的 JavaScript 布隆过滤器_JavaScript_代码_相关文件_下载

    在实际应用中,JavaScript的布隆过滤器常用于大型数据集的快速查询,如网页缓存、垃圾邮件过滤、去重检测等场景,特别是在内存或存储资源有限的情况下。 在下载的`bloomfilter.js`文件中,你可以找到具体的实现细节...

    网络游戏-基于动态可分裂Bloom+Filter的网络爬虫URL去重方法.zip

    总之,基于动态可分裂Bloom Filter的网络爬虫URL去重方法是一种高效且适用于大规模数据处理的技术,它在节省内存资源的同时,提供了快速的URL去重能力,对于网络游戏行业的数据分析和决策支持具有重要的价值。

    C++网络爬虫项目

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

    memcache_cache_handler.php for smarty 示例代码

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

    FreeMarker与Servlet整合,静态资源下载

    3. 使用过滤器(Filter):还可以通过部署一个Filter来处理静态资源请求,该Filter检查请求的URL,如果是静态资源,就直接读取并返回,否则让请求继续到Servlet。 在实际项目中,为了提高性能,静态资源通常会被...

    JavaScript1小时快速上手笔记快速复习

    JavaScript是Web开发中不可或缺的一部分,尤其对于前端开发者来说,它是构建动态、交互式网页的关键工具。这份"JavaScript1小时快速上手笔记快速复习"旨在帮助已有编程基础的学习者迅速掌握JavaScript的基本概念和...

    php手册(网页版)

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

    Linux Bloom插件

    1. 支持创建和操作Bloom Filter:使用`BF.RESERVE`命令可以预先分配空间,`BF.ADD`用于添加元素,`BF.MIGHTEXIST`检查元素是否存在。 2. 集成Count-Min Sketch:这是一种用于估算数据流中的元素计数的轻量级数据结构...

    Lucene-WEB-search-program.zip_lucene java web_lucene web_lucene

    - **Filter与Boost**:通过Filter可以对查询结果进行过滤,如按日期筛选。Boost则可以调整某些字段或查询项的权重,影响相关性评分。 - **内存索引与磁盘索引**:根据应用需求,可以选择将索引保留在内存中或磁盘上...

    U201914868_夏棋_课程报告1

    - **缓存系统**:在缓存中快速验证数据是否存在,避免无效的数据库查询。 - **分布式系统**:在分布式环境中,用于判断数据是否在其他节点中已存在,减少通信成本。 - **网络爬虫**:确定网页是否已经抓取过,避免...

    面向电商网站的分布式爬虫系统开发.pdf

    在技术实现方面,本文提到系统使用了Scrapy框架,这是一种高效的爬虫框架,能够快速抓取网页数据,并使用Redis进行数据缓存。为了处理JavaScript动态加载的内容,系统集成了Selenium插件来控制浏览器模拟用户行为,...

    JQuery资源帮助文档

    - **性能优化**:jQuery内部进行了性能优化,如延迟执行、缓存DOM查询等,提高了页面性能。 - **丰富的插件**:jQuery拥有庞大的社区和丰富的插件库,可以快速实现复杂的交互和效果。 总结来说,"JQuery资源帮助...

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

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

    前端大厂最新面试题-css_performance.docx

    3. **资源压缩**:通过自动化工具如Webpack、Gulp、Grunt或Rollup对CSS进行压缩,删除空格、注释和不必要的字符,减少文件大小,从而加快加载速度。 4. **合理使用选择器**:避免使用过于复杂的选择器,尤其是深度...

    gzip java ajax

    在使用AJAX进行异步请求时,如果服务器支持,可以开启gzip压缩,这样可以显著减少传输的数据量。在JavaScript中,我们通常使用XMLHttpRequest对象或fetch API发送AJAX请求,这些API默认会处理gzip压缩的响应,无需...

Global site tag (gtag.js) - Google Analytics