Ajax清除浏览器js、css、图片缓存的方法


Posted in Javascript onAugust 06, 2015

做东东时都是把图片在服务器的地址存放在数据库里面,然后到浏览器中显示,但是后来发现了两个问题。

第一:为了安全起见,js是无法读取本地的图片的,不然你写一个js,岂不是可以获取任何人电脑里面的文件了。

第二:图片存在的是在服务器的硬盘上面,而不是在客户的硬盘里面,所以也是取不到的

后来在网上找方法,找的方法,都是各种转换二进制到xml中,的各种高大上的答案,然后本人又实在太懒了,就自己想了一个

方法,就是利用BufferedImage这个类。

开始

首先说说我的思路,就是把本地的图片,加载到内存中,然后放到BufferedImage这个缓冲流中,然后利用ImageIO.write(),这下大家都估计想得到一种思路了,但是如果说ajax,得到的数据,估计还是啥个乱七八糟的啥吧!没关系,稍后介绍。

工具类

首先建立一个加载图片的工类具,把一个图片的地址当参数存进去,得到这个图片的缓冲流:

/**
   * 根据图片的地址,返回图片的缓冲流
   * @param addr
   * @return
   */
  public static BufferedImage getInputStream(String addr){
    try {
      String imgPath = addr; 
      BufferedImage image = ImageIO.read(new FileInputStream(imgPath));
      return image;
    } catch (Exception e) {
      e.printStackTrace();
      System.out.println();
      System.out.println("获取图片异常:java.awt.image.BufferedImage");
      System.out.println("请检查图片路径是否正确,或者该地址是否为一个图片");
    }
    return null;
  }

没错,就是使用ImageIO.read,来加载流对象,然后就是处理类的代码了,这是我用的是springMVCspringMVC这段时间

比较火,所以我也好少用struts2了

处理类

/**
   * 根据图片的地址,来获取图片
   * @param addr
   * @param response
   */
  @ResponseBody
  @RequestMapping("/getImg")
  public void getImg(@Param("addr")String addr,HttpServletResponse response){
    BufferedImage img = new BufferedImage(300, 150, BufferedImage.TYPE_INT_RGB);
    img = ImgUtil.getInputStream(addr);
    if(img==null){
      throw new RuntimeException("打印图片异常:com.controller.Business_Ctrl.getImg(String, HttpServletResponse)");
    }
    if(img!=null){
      try {
        ImageIO.write(img, "JPEG", response.getOutputStream());
      } catch (IOException e) {
        e.printStackTrace();
        System.out.println("打印异常:com.controller.Business_Ctrl.getImg(String, HttpServletResponse)");
      }
    }
  }

很明显,使用ImageIO.read()读到图片时,就用ImageIO.write(),输出图片,输入流就是

HttpServletResponse.getOutputStream()

客户端

 

 function setImg(addr){



 

                $("#logo").attr("src","business/getImg?addr="+addr+"");

            }

如图所示,当需要加载图片的时候,就触发setImg方法,给它一个地址,当然,地址,早已经从后台传到前台了,自然,就算没有地址,稍微变一下,也可以在后台得到地址,然后返回,然后给img标签设置src属性,就可以得到图片了。

下面介绍下jquery1.2版本运用Ajax清除浏览器js、css、图片缓存的方法。

jquery自从1.2开始就有ifModified和cache参数了,不用自己加header

ifModified Boolean Default: false 
Allow the request to be successful only if the response has changed since the last request. This is done by checking the Last-Modified header. Default value is false, ignoring the header. 
cache Boolean Default: true 
Added in jQuery 1.2, if set to false it will force the pages that you request to not be cached by the browser. 
$.ajax({
type: "GET",
url: "static/cache.js",
dataType: "text",
cache:false,
ifModified :true
});
Javascript 相关文章推荐
Javascript Math对象
Aug 13 Javascript
JavaScript获取客户端计算机硬件及系统等信息的方法
Jan 02 Javascript
AngularJS入门教程之Hello World!
Dec 06 Javascript
jQuery插件scroll实现无缝滚动效果
Apr 27 Javascript
简介JavaScript中valueOf()方法的使用
Jun 05 Javascript
js实现鼠标左右移动,图片也跟着移动效果
Jan 25 Javascript
JavaScript基本类型值-Undefined、Null、Boolean
Feb 23 Javascript
js实现鼠标跟随运动效果
Aug 02 Javascript
JavaScript中Object基础内部方法图
Feb 05 Javascript
关于Google发布的JavaScript代码规范你要知道哪些
Apr 04 Javascript
妙用缓存调用链实现JS方法的重载
Apr 30 Javascript
浅析我对JS延迟异步脚本的思考
Oct 12 Javascript
jQuery实现动画效果circle实例
Aug 06 #Javascript
jQuery动态星级评分效果实现方法
Aug 06 #Javascript
javascript使用输出语句实现网页特效代码
Aug 06 #Javascript
JS实现霓虹灯文字效果的方法
Aug 06 #Javascript
javascript实现网页背景烟花效果的方法
Aug 06 #Javascript
JS实现三级折叠菜单特效,其它级可自动收缩
Aug 06 #Javascript
JavaScript实现定时隐藏与显示图片的方法
Aug 06 #Javascript
You might like
《猛禽小队》:DC宇宙的又一超级大烂片
2020/04/09 欧美动漫
福利彩票幸运号码自动生成器
2006/10/09 PHP
php页面消耗内存过大的处理办法
2013/03/18 PHP
php全局变量和类配合使用深刻理解
2013/06/05 PHP
php一次性删除前台checkbox多选内容的方法
2013/09/22 PHP
浅谈php和.net的区别
2014/09/28 PHP
php绘制一条直线的方法
2015/01/24 PHP
微信支付开发维权通知实例
2016/07/12 PHP
PHP两种实现无级递归分类的方法
2017/03/02 PHP
javascript编程起步(第四课)
2007/02/27 Javascript
JQuery的Alert消息框插件使用介绍
2010/10/09 Javascript
Jquery.Form 异步提交表单的简单实例
2014/03/03 Javascript
jquery map方法使用示例
2014/04/23 Javascript
js使用for循环及if语句判断多个一样的name
2014/09/09 Javascript
JQuery表单验证插件EasyValidator用法分析
2014/11/15 Javascript
jQuery中val()方法用法实例
2014/12/25 Javascript
jQuery选择器之基本选择器与层次选择器
2015/03/03 Javascript
vue router下的html5 history在iis服务器上的设置方法
2017/10/18 Javascript
vue-cli项目优化方法- 缩短首屏加载时间
2018/04/01 Javascript
bootstrap动态调用select下拉框的实例代码
2018/08/09 Javascript
vue cli 3.x 项目部署到 github pages的方法
2019/04/17 Javascript
Vue配置marked链接添加target="_blank"的方法
2019/07/19 Javascript
[03:17]2016完美“圣”典风云人物:冷冷专访
2016/12/08 DOTA
pydev使用wxpython找不到路径的解决方法
2013/02/10 Python
wxPython窗口中文乱码解决方法
2014/10/11 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
2020/05/25 Python
python Cartopy的基础使用详解
2020/11/01 Python
canvas里面如何基于随机点绘制一个多边形的方法
2018/06/13 HTML / CSS
匡威西班牙官网:Converse西班牙
2019/10/01 全球购物
求职简历自荐信
2013/10/20 职场文书
初中三好学生自我鉴定
2014/04/07 职场文书
房地产公司见习自我鉴定
2014/04/28 职场文书
中秋手机店促销方案
2014/06/16 职场文书
小学生迎国庆演讲稿
2014/09/05 职场文书
基层党员群众路线教育实践活动个人对照检查材料思想汇报
2014/10/05 职场文书
安全教育培训心得体会
2016/01/15 职场文书