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 LigerUI 插件介绍及使用之ligerDrag和ligerResizable示例代码打包
Apr 06 Javascript
js中实现多态采用和继承类似的方法
Aug 22 Javascript
关于延迟加载JavaScript
May 05 Javascript
JS判断页面是否出现滚动条的方法
Jul 17 Javascript
jquery实现手风琴效果
Nov 20 Javascript
Bootstrap轮播加上css3动画,炫酷到底!
Dec 22 Javascript
jQuery实现简单滚动动画效果
Apr 07 Javascript
JS给swf传参数的实现方法
Sep 13 Javascript
div实现自适应高度的textarea实现angular双向绑定
Jan 08 Javascript
浅谈Javascript事件对象
Feb 05 Javascript
jquery 遍历hash操作示例【基于ajax交互】
Oct 12 jQuery
解决vue单页面应用进入页面加载所有 js 的问题
Aug 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
php下intval()和(int)转换使用与区别
2008/07/18 PHP
PHP图像处理类库MagickWand用法实例分析
2015/05/21 PHP
PHP多态代码实例
2015/06/26 PHP
Linux系统下PHP-FPM的安装和配置教程
2015/08/17 PHP
PHP number_format函数原理及实例解析
2020/07/14 PHP
JavaScript表单常用验证集合
2008/01/16 Javascript
cloudgamer出品ImageZoom 图片放大效果
2010/04/01 Javascript
jQuery数据缓存功能的实现思路及简单模拟
2013/05/27 Javascript
node.js中的fs.appendFile方法使用说明
2014/12/17 Javascript
JavaScript引用类型和基本类型详解
2016/01/06 Javascript
jQuery animate easing使用方法图文详解
2016/06/17 Javascript
js 获取图像缩放后的实际宽高,位置等信息
2017/03/07 Javascript
js实现简易聊天对话框
2017/08/17 Javascript
VueJs使用Amaze ui调整列表和内容页面
2017/11/30 Javascript
javascript的delete运算符知识点总结
2019/11/19 Javascript
vue根据条件不同显示不同按钮的操作
2020/08/04 Javascript
Python模块学习 filecmp 文件比较
2012/08/27 Python
Python内置的字符串处理函数详细整理(覆盖日常所用)
2014/08/19 Python
在SAE上部署Python的Django框架的一些问题汇总
2015/05/30 Python
python读取和保存图片5种方法对比
2018/09/12 Python
PyQt5 实现字体大小自适应分辨率的方法
2019/06/18 Python
python数据类型可变不可变知识点总结
2020/03/06 Python
Django获取model中的字段名和字段的verbose_name方式
2020/05/19 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
2020/05/25 Python
Python 下载Bing壁纸的示例
2020/09/29 Python
Python实现粒子群算法的示例
2021/02/14 Python
详解html5 canvas常用api总结(二)--绘图API
2016/12/14 HTML / CSS
赫里福德的一家乡村零售商店:Philip Morris & Son
2017/06/25 全球购物
美国领先的个性化礼品商城:Personalization Mall
2019/07/27 全球购物
Android笔试题总结
2014/11/29 面试题
农村婚庆司仪主持词
2014/03/15 职场文书
课例研修方案
2014/05/31 职场文书
乡镇党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
2014年结对帮扶工作总结
2014/12/17 职场文书
朋友离别感言
2015/08/04 职场文书
Mysql基础知识点汇总
2021/05/26 MySQL