1. 静态资源压缩
GZIP是网站压缩加速的一种技术,对于开启后可以加快我们网站的打开速度,原理是经过服务器压缩,客户端浏览器快速解压的原理,可以大大减少了网站的流量。
具体代码可以参加jeecg快速开发平台的实现;
通过资源压缩拦截器,减少带宽访问
参考代码:
- /**
- * JS缓存压缩
- * JEECG开源社区
- * 论坛:www.jeecg.org
- * @author 张代浩
- */
- public class GZipFilter implements Filter {
- public void destroy() {
- }
- /**
- * 判断浏览器是否支持GZIP
- * @param request
- * @return
- */
- private static boolean isGZipEncoding(HttpServletRequest request){
- boolean flag=false;
- String encoding=request.getHeader("Accept-Encoding");
- //update-begin--Author:JueYue Date:20140518 for:IE下Excel上传encode为空的bug--------------------
- if(encoding!=null&&encoding.indexOf("gzip")!=-1){
- flag=true;
- }
- //update-end--Author:JueYue Date:20140518 for:IE下Excel上传encode为空的bug--------------------
- return flag;
- }
- public void doFilter(ServletRequest request, ServletResponse response,
- FilterChain chain) throws IOException, ServletException {
- HttpServletResponse resp = (HttpServletResponse) response;
- HttpServletRequest req=(HttpServletRequest)request;
- if(isGZipEncoding(req)){
- Wrapper wrapper = new Wrapper(resp);
- chain.doFilter(request, wrapper);
- byte[] gzipData = gzip(wrapper.getResponseData());
- resp.addHeader("Content-Encoding", "gzip");
- resp.setContentLength(gzipData.length);
- //静态资源文件缓存机制
- //CacheResource(request, response, chain);
- ServletOutputStream output = response.getOutputStream();
- output.write(gzipData);
- output.flush();
- } else {
- chain.doFilter(request, response);
- }
- }
- public void init(FilterConfig filterConfig) throws ServletException {}
- /**
- * 提高系统访问性能,主键缓存
- */
- public void CacheResource(ServletRequest request, ServletResponse response,
- FilterChain chain){
- //1.强转httpservlet,方便调用方法
- HttpServletRequest req = (HttpServletRequest) request;
- HttpServletResponse res = (HttpServletResponse) response;
- //2.获取资源文件名的URI
- String uri = req.getRequestURI();
- //3.获得文件扩展名,lastIndexOf(".")+1 获得.最后一次出现的索引的后一位:jpg
- uri = uri.substring(uri.lastIndexOf(".")+1);
- System.out.println( uri );//测试获取后缀是否正确
- //4断相应后缀文件,设定缓存时间
- long date = 0;
- //System.out.println( new Date().getTime());//测试当前时间用
- //判断URI获取的后缀名是否与JPG相等,不考虑大小写
- if(uri.equalsIgnoreCase("jpg")){
- //读取XML里的JPG配置的参数,这里设定了时间
- //获取当前系统时间 + 需要缓存的时间(小时),Long 防止溢出,因为单位是毫秒
- date = System.currentTimeMillis()+5*60*60*1000;
- }
- if(uri.equalsIgnoreCase("gif")){
- //读取XML里的JPG配置的参数,这里设定了时间
- //获取当前系统时间 + 需要缓存的时间(小时),Long 防止溢出,因为单位是毫秒
- date = System.currentTimeMillis()+5*60*60*1000;
- }
- if(uri.equalsIgnoreCase("css")){
- //读取XML里的JPG配置的参数,这里设定了时间
- //获取当前系统时间 + 需要缓存的时间(小时),Long 防止溢出,因为单位是毫秒
- date = System.currentTimeMillis()+5*60*60*1000;
- }
- if(uri.equalsIgnoreCase("js")){
- //读取XML里的JPG配置的参数,这里设定了时间
- //获取当前系统时间 + 需要缓存的时间(小时),Long 防止溢出,因为单位是毫秒
- date = System.currentTimeMillis()+5*60*60*1000;
- }
- //设置缓存时间
- res.setDateHeader("Expires", date);
- }
- private byte[] gzip(byte[] data) {
- ByteArrayOutputStream byteOutput = new ByteArrayOutputStream(10240);
- GZIPOutputStream output = null;
- try {
- output = new GZIPOutputStream(byteOutput);
- output.write(data);
- } catch (IOException e) {
- } finally {
- try {
- output.close();
- } catch (IOException e) {
- }
- }
- return byteOutput.toByteArray();
- }
- }
2. 静态资源缓存
3. easyui 页面优化
http://www.easyui.info/archives/1435.html
http://www.360doc.com/content/14/0209/08/9200790_350899585.shtml