文档章节

基于JFinal的资源文件Handler HttpCacheHandler

如梦技术
 如梦技术
发布于 2013/07/04 22:24
字数 288
阅读 493
收藏 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

© 著作权归作者所有

共有 人打赏支持
如梦技术

如梦技术

粉丝 315
博文 38
码字总数 14983
作品 4
朝阳
后端工程师
JFinal集成YUI Compressor压缩合并JS和CSS

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

如梦技术
2013/07/04
0
2
使用Rythm插件轻松实现JFinal应用的国际化

刚看了@eyelee同学的JFinal 国际化的简单实现的文章,我打算分享一下自己为@紫电清霜的JFinal-BBS示例应用添加Rythm模版引擎和国际化功能展示的经验。 在开始之前,大家可以先通过点击这个视...

罗格林
2013/06/05
0
13
JFinal 国际化 简单实现 beetl

JFinal自身带有国际化类com.jfinal.i18n.I18N 文档里没有实现的方法,自己实现了一下,在这里分享给大家,哪里有改进的地方请@eyelee 1、编写properties资源文件 yourfilenamezhCN.propertie...

leon_rock
2013/06/05
0
12
JFinal极速开发实战教程新鲜出炉~

JFinal极速开发实战教程新鲜出炉~ [持续更新中...] JFinal框架让 IT 工程师发挥更大的潜能,实现更大价值,同时也希望 JFinal 工具力量能帮助正在创业的朋友们提升效率、降低成本从而实现创业...

山东-小木
2015/01/07
0
13
基于JFinal实现的权限管理系统 JFinalUIB

项目用到了众多的开源组件,还有一些是网络分享的学习示例代码片段,感谢他们!!! JFinal高级学习交流QQ群:309647612 代码库地址:http://git.oschina.net/dongcb678/JfinalUIB.git 项目背景...

littleant
2014/06/03
0
35

没有更多内容

加载失败,请刷新页面

加载更多

下一页

(三)Nginx配置·续

概述 前文写了关于Nginx环境配置,但是还没有完,接下来将会继续讲三个相关的配置 主要是以下三个 1.Nginx访问日志 2.Nginx日志切割 3.静态文件不记录日志和过期时间 Nginx访问日志 1.先看看...

杉下
今天
1
0
jquery创建类似于java的map

var map = {}; // Map map = new HashMap(); map[key] = value; // map.put(key, value); var value = map[key]; // Object value = map.get(key); var has = key in map; // boolean has = ......

SuperDabai
今天
0
0
java大数据转换16进制转10进制

public static void main(String[] args) {String hex = "0xdbf3accc683297cf0000";BigInteger amount = new BigInteger(hex.substring(2), 16);System.out.println(amount);......

任梁荣
昨天
2
0
OSChina 周六乱弹 —— 目测我们程序员丁克的几率不大

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @真Skr小机灵鬼儿:8.13分享Jocelyn Pook/Russian Red的单曲《Loving Strangers》 《Loving Strangers》- Jocelyn Pook/Russian Red 手机党少...

小小编辑
昨天
15
4
TypeScript基础入门 - 函数 - 剩余参数

转载 TypeScript基础入门 - 函数 - 剩余参数 项目实践仓库 https://github.com/durban89/typescript_demo.gittag: 1.2.1 为了保证后面的学习演示需要安装下ts-node,这样后面的每个操作都能...

durban
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部