में समकालिक रूप से कैश का प्रबंधन करना मैं वैश्विक कैश चर में jquery का उपयोग कर जावास्क्रिप्ट में कैश बनाए रख रहा हूं।जेएस
जब भी AJAX का उपयोग करके नई जानकारी प्राप्त की जाती है तो इसे कैश में जोड़ा जाता है।
यदि यह कैश में नहीं है, तो मैं इसे सर्वर से AJAX करना चाहता हूं।
मैं मांग पर क्वेरी करने के लिए और इतने की तरह उपयोग करने के लिए एक समारोह लागू करना चाहते हैं:
$("#label").html(GetName("user123"));
कहाँ getName() की तरह होना चाहिए:
function GetName(username) {
if (Cache[username] != null) return Cache[username];
else
return QueryUsernameFromServer(username)
}
QueryUsernameFromServer() की तरह होना चाहिए:
function QueryUsernameFromServer (username) {
return $.ajax(…);
}
हालांकि, $ .ajax async है जिसका अर्थ है कि यह किसी मान की प्रतीक्षा नहीं कर सकता (और इस प्रकार वापस नहीं आ सकता यह)।
सिंक मोड में $ .ajax का उपयोग करते हुए सुझाव दिया जाता है नहीं (ब्राउज़र रुक जाता है और यह JSONP का समर्थन नहीं करता), http://api.jquery.com/jQuery.ajax/
का उपयोग करते हुए इस, http://www.techfounder.net/2008/05/17/simple-javascript-cache/, दृष्टिकोण एक कॉलबैक की आवश्यकता है। हालांकि, प्रत्येक उपयोग के लिए कॉलबैक बनाना वांछित नहीं है।
क्या प्रत्येक उपयोग के लिए समर्पित कॉलबैक के बिना जेएस और AJAX में "कैश ऑन डिमांड" फ़ंक्शन को लागू करने का कोई अच्छा तरीका है?
+1 इस प्रकार deferreds का उपयोग करें। यह _exactly_ है जो मैंने काम पर हमारे डेटा प्रदाता के लिए उपयोग किया था। मुझे डेटा लेयर होना पसंद है ताकि हम इसका पुन: उपयोग कर सकें और सभी 'AJAX' कोड को एक स्थान पर अपडेट कर सकें (उदा। जब jQuery ने अपने 'AJAX' नामस्थान को ओवरहाल किया)। – pixelbobby