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 相关文章推荐
jQuery.Validate验证库的使用介绍
Apr 26 Javascript
特殊情况下如何获取span里面的值
May 20 Javascript
javascript继承的六大模式小结
Apr 13 Javascript
jQuery团购倒计时特效实现方法
May 07 Javascript
如何动态加载外部Javascript文件
Dec 02 Javascript
js实现文字滚动效果
Mar 03 Javascript
jQuery UI插件实现百度提词器效果
Nov 21 Javascript
Javascript自定义事件详解
Jan 13 Javascript
jQuery弹出层插件popShow(改进版)用法示例
Jan 23 Javascript
jQuery插件HighCharts绘制简单2D柱状图效果示例【附demo源码】
Mar 21 jQuery
vue.js 2.0实现简单分页效果
Jul 29 Javascript
解决vue中使用proxy配置不同端口和ip接口问题
Aug 14 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
星际争霸中的对战模式介绍
2020/03/04 星际争霸
二十行语句实现从Excel到mysql的转化
2006/10/09 PHP
Thinkphp框架开发移动端接口(2)
2016/08/18 PHP
ZendFramework框架实现连接两个或多个数据库的方法
2016/12/08 PHP
使用闭包对setTimeout进行简单封装避免出错
2013/07/10 Javascript
IE、FF浏览器下修改标签透明度
2014/01/28 Javascript
JS根据生日算年龄的方法
2015/05/05 Javascript
介绍一个简单的JavaScript类框架
2015/06/24 Javascript
玩转JavaScript OOP - 类的实现详解
2016/06/08 Javascript
在JS中a标签加入单击事件屏蔽href跳转页面
2016/12/16 Javascript
seajs下require书写约定实例分析
2018/05/16 Javascript
微信小程序动态添加view组件的实例代码
2019/05/23 Javascript
微信小程序绘制图片发送朋友圈
2019/07/25 Javascript
微信小程序实现打开并下载服务器上面的pdf文件到手机
2019/09/20 Javascript
wxpython学习笔记(推荐查看)
2014/06/09 Python
Python闭包实现计数器的方法
2015/05/05 Python
python列表的增删改查实例代码
2018/01/30 Python
Python数据分析之双色球统计两个红和蓝球哪组合比例高的方法
2018/02/03 Python
Python 实现一个手机号码获取妹子名字的功能
2019/09/25 Python
django的403/404/500错误自定义页面的配置方式
2020/05/21 Python
详解html5 shiv.js和respond.min.js
2018/01/24 HTML / CSS
基于Html5实现的语音搜索功能
2019/05/13 HTML / CSS
canvas简单连线动画的实现代码
2020/02/04 HTML / CSS
集世界奢侈品和设计师品牌的意大利精品买手店:Tessabit
2019/08/17 全球购物
Fnac西班牙官网:法国文化和电子产品零售商
2021/03/14 全球购物
对于没有初始化的变量的初始值可以作怎样的假定
2014/10/12 面试题
凌阳科技股份有限公司C++程序员面试题笔试题
2014/11/20 面试题
实习评语
2013/12/16 职场文书
《掌声》教学反思
2014/02/23 职场文书
会计专业求职信范文
2014/03/16 职场文书
羽毛球社团活动总结
2014/06/27 职场文书
升学宴演讲稿
2014/09/01 职场文书
团员自我评价范文
2015/03/10 职场文书
2015年汽车销售员工作总结
2015/07/24 职场文书
表扬稿表扬信的格式及范文
2019/06/24 职场文书
《游戏王:大师决斗》将推出新卡牌包4月4日上线
2022/03/31 其他游戏