Create an Interceptor for every service calls
angular.module('app').factory("cacheInterceptor", ["$cacheFactory", function ($cacheFactory) { var httpTtlCache = {}; return { request: function (config) { var expirationTime; if (config.expiration) { expirationTime = config.expiration; delete config.expiration; if (new Date().getTime() - (httpTtlCache[config.url] || 0) > expirationTime) { $cacheFactory.get("$http").remove(config.url); httpTtlCache[config.url] = new Date().getTime(); } } return config; } }; }]);
Push the interceptor through config
angular.module('app', []).config(['$httpProvider', function ($httpProvider) { $httpProvider.interceptors.push('cacheInterceptor'); }]);
Pass the expiration when you call your httpservice
var expirationTime = 60 * 60 * 1000; $http.get(url, { expiration: expirationTime,cache:true }).then(function (response) { });