spring boot中实现响应图片的方法以及改进-阿里云开发者社区

开发者社区> 技术小甜> 正文

spring boot中实现响应图片的方法以及改进

简介:
+关注继续查看

Controller响应,喷出图片,是一个很常见的功能,代码如下

@RequestMapping(value = { "/img/{filename:.+}" }, method = RequestMethod.GET, produces = {   
        MediaType.IMAGE_JPEG_VALUE, MediaType.IMAGE_GIF_VALUE, MediaType.IMAGE_PNG_VALUE })    
@ResponseBody    
public byte[] getImg(@PathVariable String filename) {    
    System.out.println("filename:" + filename);    
    Path path = Paths.get("c:/upload/img/" + filename);    
    byte[] data = null;    
    try {    
        data = Files.readAllBytes(path);    
    } catch (IOException e) {    
        // TODO Auto-generated catch block    
        e.printStackTrace();    
    }    
    return data;    
}

 

但是有个问题,即使每次请求的图片都相同,请求都会如实运行,增加了服务器的负担,如果能够强迫浏览器使用本地缓存,发送304请求。那就很大程度上降低了服务器的压力。

之前写过一个博客《HTTP 缓存概念和强迫浏览器使用缓存的示例》,正好可以借鉴,在java中实现即可。

思路很简单,就是用If-Modified-Since的时间和文件的时间作比较,如果文件的LastModified时间未更新,则返回304,强迫使用缓存。

但是在实现的时候,发现似乎很麻烦。

原因就是If-Modified-Since的格式问题,chrome浏览器中返回的是

"Sat Sep 23 23:08:37 CST 2017"

在FireForx中格式类似:

2017-09-22T22:02:44.592+08:00

这就导致处理字符串转Date类型的时候,无所适从。尤其需要吐槽的是java中的时间类真的太难用了,后来知道有joda类库,确实很好用,但是在转换If-Modified-Since这个时间的时候,对上述问题也束手无策。除非自己实现一个万能的时间转换器。




















本文转自cnn23711151CTO博客,原文链接: http://blog.51cto.com/cnn237111/1968180,如需转载请自行联系原作者


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
10092 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
10886 0
vc/mfc获取rgb图像数据后动态显示及保存图片的方法
vc/mfc获取rgb图像数据后动态显示及保存图片的方法 该情况可用于视频通信中获取的位图数据回放显示或显示摄像头捕获的本地图像 第一种方法 #include 加载 vfw32.lib  链接库 [cpp] view plaincopy   //----------...
1470 0
JS导出PDF插件(支持中文、图片使用路径)
原文:JS导出PDF插件(支持中文、图片使用路径) 在WEB上想做一个导出PDF的功能,发现jsPDF比较多人推荐,遗憾的是不支持中文,最后找到pdfmake,很好地解决了此问题。它的效果可以先到http://pdfmake.org/playground.html查看。
1758 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13893 0
加载gif图片的方法:(需要SDWebImage方法)
<p style="color:rgb(51,51,51); font-family:Arial; font-size:14px"></p> <p style="margin-top:0px; margin-bottom:0px; font-size:11px; line-height:normal; font-family:Menlo; color:rgb(209,47,27)">
2561 0
C#技术分享【PDF转换成图片——13种方案】(2013-07-25重新整理) .
原文:C#技术分享【PDF转换成图片——13种方案】(2013-07-25重新整理) . Acrobat.dllc#PDFPDFRender4NET.dllpdf转图片 写在最前面:为了节约大家时间,博主把最常用的方法写在第一条,如果不满足您的需要,您可以继续往后看。
1112 0
+关注
10146
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载