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 attachEvent绑定多个事件执行顺序问题
Oct 20 Javascript
js获得参数的getParameter使用示例
Feb 26 Javascript
Jquery图片延迟加载插件jquery.lazyload.js的使用方法
May 21 Javascript
jQuery异步获取json数据方法汇总
Dec 22 Javascript
深入理解JavaScript系列(21):S.O.L.I.D五大原则之接口隔离原则ISP详解
Mar 05 Javascript
JavaScript如何调试有哪些建议和技巧附五款有用的调试工具
Oct 28 Javascript
js格式化输入框内金额、银行卡号
Feb 01 Javascript
基于JS如何实现类似QQ好友头像hover时显示资料卡的效果(推荐)
Jun 09 Javascript
jQuery实现的纵向下拉菜单实例详解【附demo源码下载】
Jul 09 Javascript
Windows系统下安装Node.js的步骤图文详解
Nov 15 Javascript
微信小程序如何引用外部js,外部样式,公共页面模板
Jul 23 Javascript
javascript解析json格式的数据方法详解
Aug 07 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
PHP输出控制功能在简繁体转换中的应用
2006/10/09 PHP
php Http_Template_IT类库进行模板替换
2009/03/19 PHP
解析php中mysql_connect与mysql_pconncet的区别详解
2013/05/15 PHP
关于PHP语言构造器介绍
2013/07/08 PHP
phpMyAdmin自动登录和取消自动登录的配置方法
2014/05/12 PHP
一个比较不错的PHP日历类分享
2014/11/18 PHP
PHP无限极分类函数的实现方法详解
2017/04/15 PHP
Mac下php 5升级到php 7的步骤详解
2017/04/26 PHP
PHP实现简单的计算器
2020/08/28 PHP
JavaScript OOP类与继承
2009/11/15 Javascript
javascript 处理事件绑定的一些兼容写法
2009/12/24 Javascript
javascript实现yield的方法
2013/11/06 Javascript
js生成的验证码的实现与技术分析
2014/09/17 Javascript
js实现单击图片放大图片的方法
2015/02/17 Javascript
jquery可定制的在线UEditor编辑器
2015/11/17 Javascript
javascript性能优化之DOM交互操作实例分析
2015/12/12 Javascript
JavaScript实现相册弹窗功能(zepto.js)
2016/06/21 Javascript
JS模拟实现方法重载示例
2016/08/03 Javascript
微信小程序 HTTPS报错整理常见问题及解决方案
2016/12/14 Javascript
JS实现间歇滚动的运动效果实例
2016/12/22 Javascript
详解vue-cli3 中跨域解决方案
2019/04/10 Javascript
新手如何快速理解js异步编程
2019/06/24 Javascript
python入门之语句(if语句、while语句、for语句)
2015/01/19 Python
python将ip地址转换成整数的方法
2015/03/17 Python
Python类定义和类继承详解
2015/05/08 Python
Python实现的简单排列组合算法示例
2018/07/04 Python
Python基于分析Ajax请求实现抓取今日头条街拍图集功能示例
2018/07/19 Python
python调用win32接口进行截图的示例
2020/11/11 Python
adidas官方旗舰店:德国运动用品制造商
2017/11/25 全球购物
sort命令的作用和用法
2012/11/04 面试题
高分子材料与工程专业个人求职信
2013/12/15 职场文书
工作收入证明模板
2014/10/10 职场文书
2014年机关后勤工作总结
2014/12/16 职场文书
jupyter notebook保存文件默认路径更改方法汇总(亲测可以)
2021/06/09 Python
opencv检测动态物体的实现
2021/07/21 Python
Win10/Win11 任务栏替换成经典样式
2022/04/19 数码科技