接口获取图片文件流的缓存问题
来源:互联网 发布:数据库 经典公开课 编辑:程序博客网 时间:2024/06/05 16:37
最近在做新闻管理的后台,发现图片请求的非常慢,加载过的图片依然重新加载。
这里我是用controller返回图片的,所以每次请求图片的时候会进入controller中然后返回图片,每次返回的responsebody size都会略大于图片大小。
但是在请求tomcat静态资源时,首次加载时和上面情况类似,但是下次刷新responsebody就只有几十b的大小。
一开始没有清空缓存,以为tomcat把图片压缩成几十b大小,感觉这也太不可思议了,但是还是选择尝试一下。在controller中用gzip对图片资源进行压缩
public final class GzipUtil { public static byte[] compress(byte[] data) { ByteArrayOutputStream byteOutput = new ByteArrayOutputStream(1024); GZIPOutputStream output = null; try { System.out.println("before:"+data.length); output = new GZIPOutputStream(byteOutput); output.write(data); } catch (IOException e) { } finally { try { output.close(); } catch (IOException e) { } } return byteOutput.toByteArray(); }}
@ResponseBody @RequestMapping("img/{id}.jpg") public ResponseEntity<byte[]> getImg(@PathVariable Long id,HttpServletRequest request) throws IOException { HttpHeaders headers = new HttpHeaders();// String encoding = request.getHeader( "accept-encoding" ); headers.setContentType(MediaType.IMAGE_JPEG); byte[] data ; if((encoding != null) && (encoding.indexOf( "gzip" ) != -1)){// "Content-Encoding", "gzip" headers.set("Content-Encoding","gzip"); data = GzipUtil.compress(FileUtils.readFileToByteArray(new File(imgBasePath+id+".jpg"))); System.out.println("data size "+data.length); }else{ data = FileUtils.readFileToByteArray(new File(imgBasePath+id+".jpg")); } headers.setContentLength(data.length); return new ResponseEntity<byte[]>(data, headers, HttpStatus.CREATED); }
先判断浏览器是否支持 gzip,如果支持使用gzip压缩。
然后在浏览器测试,发现压缩后的responseboy只比压缩前少了几k,看来并不是这个原因
后来清空chrom浏览器缓存(command+shift+R )后发现每次请求和controller请求图片一样。所以可以判断为缓存问题
tomcat :
缓存前
requestheader:
阅读全文
0 0
- 接口获取图片文件流的缓存问题
- 使用fresco如何获取本地缓存图片的文件
- 新版本使用fresco如何获取本地缓存图片的文件
- WebView缓存图片的获取
- 关于图片缓存的问题
- 图片缓存问题的总结
- 手机端调用接口获取图片路径带有中文名称不能获取的问题。
- ImageLoader获取本地缓存图片的bitmap
- 浏览器图片的缓存问题,以及网页的缓存问题
- 文件流---获取文件的大小(图片、视频、文件......)
- D3DXCreateTextureFromFileEx接口获取图片的实际数据
- 图片的三级缓存(内存、文件、网络)
- 获取图片文件的属性
- AFNetworking 图片的本地缓存问题
- AFNetworking 图片的本地缓存问题
- AFNetworking 图片的本地缓存问题
- AFNetworking 图片的本地缓存问题
- 关于项目中图片缓存的问题
- 第二行代码第一章(Android原理)
- PhotoShop CS6 安装及破解
- HDU6113度度熊的01世界(深搜)
- mysql语句总结3
- C# .Net代码审查清单
- 接口获取图片文件流的缓存问题
- spring框架概述
- mybatis返回主键
- uva 524 Prime Ring Problem
- matlab的czt()函数实现频率细化的实例
- java增强型for循环(三种遍历集合方式)
- 跨集群的kafka相关错误
- VS 快捷键 操作介绍
- 【CodeForces