यह: यह एक अधिक पूर्ण समाधान बनाने के लिए, आपके द्वारा पारदर्शी रूप से वास्तविक अजाक्स कॉल करने के लिए सभी jQuery अजाक्स अनुरोध पर cacheBuster
उपयोग कर सकते हैं का एक उदाहरण है jQuery की Deferred ऑब्जेक्ट का लाभ उठाने के लिए एक आदर्श खेल का मैदान की तरह लगता है।
यहाँ Addy उस्मानी और जूलियन Aubourg द्वारा एक महान लेख MSDN पर नहीं है: http://msdn.microsoft.com/en-us/magazine/gg723713.aspx
संक्षेप में
, वे एक उदाहरण वहाँ बताते हैं कि कैसे वे अनुरोध कैश, विशेष रूप से इस अनुरोध को हमेशा के लिए संचित किया जाएगा है।
var cachedPromises = {};
$.getCachedURL = function(url, callback) {
if (!cachedPromises[ url ]) {
cachedPromises[ url ] = $.Deferred(function(defer) {
$.get(url).then(defer.resolve, defer.reject);
}).promise();
}
return cachedPromises[ url ].done(callback);
};
और उसके बाद के रूप में ऐसी
$.getCachedURL(url).then(successCallback, errorCallback);
स्थगित इसलिए यदि आप चाहते हैं कुछ यूआरएल केवल एक निश्चित समय हम मौजूदा कोड को संशोधित करने और की तर्ज पर कुछ कर सकते हैं के लिए कैश हो जाने को हल (ध्यान दें
var callback = function() {
console.log('callback', arguments)
}
var cacheTime = 3600;
$.getCachedURL('/dynamic/config', callback, cacheTime).then(function()
{
console.log('success', arguments)
}, function()
{
console.log('error', arguments)
});
01: इस) मेरे सिर के ऊपर
var cachedPromises = {};
var cachedTimeouts = {};
$.getCachedURL = function(url, callback, cacheTime) {
if (!cachedPromises[ url ]) {
cachedPromises[ url ] = $.Deferred(function(defer) {
$.get(url).then(defer.resolve, defer.reject);
}).promise();
cachedTimeouts[ url ] = setTimeout(function() {
clearTimeout(cachedTimeouts[ url ]);
delete cachedPromises[ url ];
}, cacheTime);
}
return cachedPromises[ url ].done(callback);
};
और एक कॉलबैक का उपयोग कर बंद है कि
जहां कॉलबैक पारंपरिक jQuery ajax उत्तराधिकारी/त्रुटि तर्क वापस आ जाएगी data
, textStatus
और jqXHR
आप JSON चाहते हैं $.get
$.get(url).then(defer.resolve, defer.reject);
$.getJSON(url).then(defer.resolve, defer.reject);
नोट के बजाय $.getJSON
का उपयोग करें कि आप अभी भी सिर्फ इस्तेमाल कर सकते हैं $.ajax
$.ajax({
url: url,
dataType: 'json',
}).then(defer.resolve, defer.reject);
10 मिनट के लिए सर्वर पर कैश हेडर सेट करें। – epascarello
विन्सेंट के जवाब को पढ़कर इस प्रश्न से कुछ महत्वपूर्ण जानकारी गायब लगती है। ऐसा लगता है कि आप एक HTML संसाधन पर AJAX कॉल कर रहे हैं और परिणाम JSON \ -: – hippietrail