文档章节

基于JFinal的资源文件Handler HttpCacheHandler

如梦技术
 如梦技术
发布于 2013/07/04 22:24
字数 288
阅读 1K
收藏 4

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

上一篇文章讲到了对js,css的压缩的ComboHandler

对其更新到BAE并没有达到自己想要的效果,每次HTTP请求需要耗时2~5s。

加上了BAE的cdn也丝毫没有改善,尝试对url添加.js,.css等会报404不知道BAE具体是啥实现的!

又不想放弃那么帅的压缩合并,于是这个HttpCacheHandler产生了。

整个代码不多注释还算全,直接上代码吧!

// 默认MAX_AGE:一个月
private static final long MAX_AGE = ConfigUtil.getToLong("max_age");

@Override
public void handle(String target, HttpServletRequest request,
        HttpServletResponse response, boolean[] isHandled) {
    // 最后修改时间
    long ims = request.getDateHeader("If-Modified-Since");
    long now = System.currentTimeMillis();
    // 进一步ETag文件MD5比较"If-None-Match" eq "ETag" 
    // String token = request.getHeader("If-None-Match");
    // 如果header头没有过期
    if(ims + MAX_AGE > now){
        isHandled[0] = true;
        response.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
        return;
    }
    nextHandler.handle(target, request, response, isHandled);
    // 去除对页面的缓存,造成后台进不去
    // 验证是否静态文件 静态文件缓存30天
    if(target.indexOf(".") > 0 || target.endsWith("/combo")){
        // 新生成http cache头信息
        response.setHeader("ETag", StrKit.getTonken());
        response.setHeader("Cache-Control", "max-age=" + MAX_AGE);
        response.addDateHeader("Expires", now + MAX_AGE);
        response.addDateHeader("Last-Modified", now);
    }
}

对于BAE没有加上cdn path的图片也能缓存!

博客原文:http://www.dreamlu.net/blog/18

© 著作权归作者所有

如梦技术

如梦技术

粉丝 370
博文 53
码字总数 25800
作品 6
朝阳
后端工程师
私信 提问
加载中

评论(0)

JFinal集成YUI Compressor压缩合并JS和CSS

对js和css合并压缩能减少HTTP请求次数,加快网站的访问数度,是Web性能优化最佳实践中最重要的一条! 源参考自窝窝团研发副总裁文章,基于Jfinal实现的Combo Handler! 使用方法: href="ht...

如梦技术
2013/07/04
873
2
Jboot 2.3.1 发布,增加开发模式下对 SQL 的输出功能

Jboot 是一个基于 JFinal、JFinal-Undertow、Dubbo 等开发的微服务框架,帮助开发者降低微服务开发门槛。同时完美支持在 idea、eclipse 下多 maven 模块,对 java 代码、html、css、js 等资源...

理工男海哥
2019/12/13
1.2K
0
Jboot 2.1.4 发布,优化细节功能

Jboot 是一个基于 JFinal、JFinal-Undertow、Dubbo 等开发的微服务框架,帮助开发者降低微服务开发门槛。同时完美支持在 idea、eclipse 下多 maven 模块,对java代码、html、css、js 等资源文...

理工男海哥
2019/07/12
1.4K
0
JFinal Authority 1.1 分布 jfinal 权限后台

更新内容 20140505 使用redis缓存 重写shiro sessionDao实现分布式session 20140504 添加redis缓存 20140504 过滤简单的 xss攻击 20140429 修复bug 登录过时 ajax请求没有跳转到登录页面 20...

12叔
2014/05/09
6.3K
27
jfinal-admin 3.5 正式发布,重新设计配色,欢度五一节

jfinal-admin 3.5 版本正式发布啦。该版本主要进行了一些 Bug 修复,主要更新内容如下: 重新设计后台模板的配色,白色系; 升级jar包,移除多余的静态资源主要是百度的文本编辑器; 主体界面...

IT小香猪
2019/04/30
1.7K
9

没有更多内容

加载失败,请刷新页面

加载更多

垃圾收集器与内存分配策略

对象已死? 垃圾标记算法 1.引用计数算法 C++智能指针、Python 2.可达性分析算法 JavaGC Roots的根对象作为起始节点,通过引用链到某个对象不可达时,证明此对象不可能再被使用。 强引用:...

LoSingSang
昨天
27
0
Python--从集合中随机取出一个元素

Python--从集合中随机取出一个元素 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 说明 有时候有一个这样的需求...

归子莫
昨天
27
0
iptables-F 后 SSH 连接断开

最近回收利用一台被征用做邮件服务的服务器,重新部署新的业务。 清理了所有的安装软件和目录文件后,调整了网络安全组规则,仅开放所需端口。 看了下防火墙的配置: # iptables -LChain I...

DEPAKIN
昨天
27
0
IDEA通过Maven打包JavaFX工程(OpenJFX11)

1 概述 最近研究JFX,写出来了但是打包不了,这。。。尴尬。。。 IDEA的文档说只支持Java8打成jar包: 尝试过直接使用Maven插件的package,不行,也尝试过Build Artifacts,也不行,各种奇奇...

氷泠
昨天
19
0
《一天一模式》— 命令模式

一、命令模式的概念 将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。 二、什么时候使用命令模式 调用者与实现者通常是一种紧耦合的...

XuePeng77
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部