Smartjax是一款可以将ajax请求的内容进行智能缓存的jQuery插件。作为原生jQuery$.ajax()方法的替代,Smartjax.ajax()可以将ajax的回调内容缓存在浏览器中,再次进行相同url的ajax调用时,不会在向服务器发送请求,而是读取本地的缓存。你还可以强制发送ajax请求,或清除指定或所有的ajax缓存内容。

Smartjax的特点有:

  • Smartjax.js是一个轻量级的插件。
  • Smartjax的语法和原生jQuery $.ajax()的语法十分相似,你只需要注意一些额外的参数即可。
  • 减少服务器端的http请求可以大大提升你的网站性能。

如上面所述,Smartjax会缓存ajax响应信息,并且不会对同一个url发生两次ajax请求。举个例子来说明:例如你要在你的网站的右上方显示用户登录状态和用户信息,如果你每一个页面都要显示这个信息,那么每一个页面都会向服务器发送相同的ajax请求来获取该用户的信息,或者是通过服务器端程序来完成这个功能。如果使用smartjax,那么它会在第一次获取用户信息后,将信息缓存在浏览器中,以后每个页面的用户信息都会从浏览器缓存中提取。

使用方法

smartjax的使用方法非常简单,下面是它和原生jQuery ajax的比较:

原生jQuery Ajax
$.ajax({
    url:'http://httpbin.org/post',
    type: 'POST',
    data:{
        a:1,b:2
    }
});    
              
Smartjax
Smartjax.ajax({
    url:'http://httpbin.org/post',
    type: 'POST',
    data:{
        a:1,b:2
    }
});         
              

如果控制ajax数据

通过Smartjax.ajax()的一些参数和方法,你可以控制ajax响应数据的缓存方式,以及清除缓存和保存数据的方式。

  • Smartjax:在你引入smartjax.js文件之后,会创建一个全局的变量Smartjax,该变量包含一个方法,ajax()
  • force:如果在某个ajax调用中设置force属性为true,smartjax会强制执行ajax调用并更新缓存的内容。
    Smartjax.ajax({
        url:'http://httpbin.org/post',
        type: 'POST',
        data:{
            a:1,b:2
        },
        force:true
    });
    

    该参数默认值为false

  • store:如果在某个ajax调用中设置store属性为false,那么响应的信息不回被缓存。
    Smartjax.ajax({
        url:'http://httpbin.org/post',
        type: 'POST',
        data:{
            a:1,b:2
        },
        store:false
    });
    
  • group:你可以使用group参数来对ajax调用进行分组。在清除响应缓存的时候,组是非常有用的。
    Smartjax.ajax({
        url:'http://httpbin.org/post',
        type: 'POST',
        data:{
            a:1,b:2
        },
        group:"group1"
    });
    
  • cleanStore(param):该方法用于清除ajax的缓存数据。可以使用组参数来清除某一个组的缓存数据。
    Smartjax.cleanStore({groups:["g1"]});
    
  • cleanAll():该方法没有参数,作用是清除所有的ajax缓存数据。
    Smartjax.cleanAll();
    
  • setDefaults(param):该方法接收一个对象作为参数。默认的调用方式是get方式,你可以进行修改,其它两个参数和forcestore相同。
    Smartjax.setDefaults({
        defaultMethod: 'get',
        alwaysForce: false,
        alwaysStore: true
    });
    
Pipelined features
  • support of ID. It will make saving data and retrieving faster.
  • Record and Mock services, which will help you to develop UI even if your api is not ready.