Rumah  >  Artikel  >  hujung hadapan web  >  Kaedah Ajax untuk mengosongkan js pelayar, css, kemahiran cache_javascript imej

Kaedah Ajax untuk mengosongkan js pelayar, css, kemahiran cache_javascript imej

WBOY
WBOYasal
2016-05-16 15:46:471952semak imbas

Apabila membuat bahan, saya sentiasa menyimpan alamat imej pada pelayan dalam pangkalan data, dan kemudian memaparkannya dalam penyemak imbas, tetapi kemudian saya menemui dua masalah.

Pertama: Atas sebab keselamatan, js tidak boleh membaca imej setempat. Jika tidak, jika anda menulis js, anda boleh mendapatkan fail dalam komputer sesiapa sahaja.

Kedua: Imej disimpan pada pemacu keras pelayan, bukan pada pemacu keras pelanggan, jadi ia tidak boleh diambil semula

Kemudian, saya mencari kaedah di Internet, dan kaedah yang saya temui adalah semua jenis jawapan peringkat tinggi untuk menukar perduaan kepada xml Kemudian saya terlalu malas, jadi saya memikirkannya sendiri

Kaedah

ialah menggunakan kelas BufferedImage.

Mula

Pertama sekali, izinkan saya bercakap tentang idea saya, iaitu memuatkan imej tempatan ke dalam ingatan, kemudian masukkan ke dalam aliran penimbal BufferedImage, dan kemudian gunakan ImageIO.write (), Sekarang semua orang mungkin ingin mendapatkan idea, tetapi jika kita bercakap tentang ajax, data yang diperoleh mungkin masih kucar-kacir! Tidak mengapa, saya akan perkenalkan kemudian.

Alat

Mula-mula buat alat untuk memuatkan imej, simpan alamat imej sebagai parameter dan dapatkan strim penimbal bagi imej ini:

/**
   * 根据图片的地址,返回图片的缓冲流
   * @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;
  }

Ya, hanya gunakan ImageIO.read untuk memuatkan objek strim, dan kemudian kod untuk memproses kelas Inilah yang saya gunakan springMVC, springMVCSelama ini

Ia agak popular, jadi saya kurang menggunakan struts2

Kelas pemprosesan

/**
   * 根据图片的地址,来获取图片
   * @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)");
      }
    }
  }

Jelas sekali, apabila menggunakan

ImageIO.read() untuk membaca imej, gunakan ImageIO.write(), untuk mengeluarkan imej dan aliran input ialah

HttpServletResponse.getOutputStream()

Pelanggan

Salin kod Kod adalah seperti berikut:
function setImg(addr){
    
                  $("#logo").attr("src","business/getImg?addr=" addr "");
            }


Seperti yang ditunjukkan dalam rajah, apabila anda perlu memuatkan imej, cetuskan kaedah setImg dan berikannya alamat Sudah tentu, alamat itu telah dihantar dari latar belakang ke hadapan, walaupun tiada alamat, ia boleh diubah sedikit Dapatkan alamat di latar belakang, kemudian kembali, dan kemudian tetapkan atribut src ke tag img untuk mendapatkan imej.

Berikut memperkenalkan cara menggunakan Ajax untuk mengosongkan js, css dan cache imej penyemak imbas dalam versi jquery 1.2.

jquery telah mempunyai

ifModified dan cache parameter sejak versi 1.2, jadi anda tidak perlu menambah pengepala sendiri.

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
});

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn