Browse Source

Add clientside api caching setting

pull/2300/head
jlukic 10 years ago
parent
commit
f2ced9db70
1 changed files with 44 additions and 14 deletions
  1. 58
      src/definitions/behaviors/api.js

58
src/definitions/behaviors/api.js

@ -74,21 +74,9 @@ $.api = $.fn.api = function(parameters) {
module = { module = {
initialize: function() { initialize: function() {
var
triggerEvent = module.get.event()
;
// bind events
if(!methodInvoked) { if(!methodInvoked) {
if( triggerEvent ) {
module.debug('Attaching API events to element', triggerEvent);
$module
.on(triggerEvent + eventNamespace, module.event.trigger)
;
}
else if(settings.on == 'now') {
module.debug('Querying API now', triggerEvent);
module.query();
}
module.create.cache();
module.bind.events();
} }
module.instantiate(); module.instantiate();
}, },
@ -109,6 +97,24 @@ $.api = $.fn.api = function(parameters) {
; ;
}, },
bind: {
events: function() {
var
triggerEvent = module.get.event()
;
if( triggerEvent ) {
module.debug('Attaching API events to element', triggerEvent);
$module
.on(triggerEvent + eventNamespace, module.event.trigger)
;
}
else if(settings.on == 'now') {
module.debug('Querying API now', triggerEvent);
module.query();
}
}
},
query: function() { query: function() {
if(module.is.disabled()) { if(module.is.disabled()) {
@ -190,6 +196,14 @@ $.api = $.fn.api = function(parameters) {
module.debug('Sending data', data, ajaxSettings.method); module.debug('Sending data', data, ajaxSettings.method);
module.verbose('Using AJAX settings', ajaxSettings); module.verbose('Using AJAX settings', ajaxSettings);
// pull from cache
if(settings.cache && module.cache.response[url] !== undefined) {
module.debug('Pulling response from cache');
module.request = module.create.request();
module.request.resolveWith(context, [ module.cache.response[url] ]);
return;
}
if( module.is.loading() ) { if( module.is.loading() ) {
// throttle additional requests // throttle additional requests
module.timer = setTimeout(function() { module.timer = setTimeout(function() {
@ -377,6 +391,11 @@ $.api = $.fn.api = function(parameters) {
; ;
module.debug('API Response Received', response); module.debug('API Response Received', response);
if(settings.cache && url) {
module.cache.response[url] = response;
module.debug('Caching response for next lookup', module.cache);
}
if(translatedResponse) { if(translatedResponse) {
module.debug('Modified API response in onResponse callback', settings.onResponse, translatedResponse, response); module.debug('Modified API response in onResponse callback', settings.onResponse, translatedResponse, response);
response = translatedResponse; response = translatedResponse;
@ -442,6 +461,14 @@ $.api = $.fn.api = function(parameters) {
}, },
create: { create: {
cache: function() {
module.verbose('Creating local response cache');
module.cache = {
response: {}
};
},
// api promise // api promise
request: function() { request: function() {
return $.Deferred() return $.Deferred()
@ -821,6 +848,9 @@ $.api.settings = {
verbose : false, verbose : false,
performance : true, performance : true,
// cache
cache : false,
// event binding // event binding
on : 'auto', on : 'auto',
filter : '.disabled', filter : '.disabled',

Loading…
Cancel
Save