2012-01-19 10 views
10

मैं getScript गतिशील मेरी प्लगइन लोड करने के लिए उपयोग करें:

$.getScript('js/code.photoswipe.jquery-3.0.4.min.js', function() { 
    //do magic 
}); 
  1. मैं कैशिंग पर्दाफाश अक्षम कैसे करूँ? पल यह अंत में संख्या उत्पन्न करता है पर:

    $.getScript = function (url, callback, cache) { 
        $.ajax({ 
         type: "GET", 
         url: url, 
         success: callback, 
         dataType: "script", 
         cache: cache 
        }); 
    }; 
    
    : js/code.photoswipe.jquery-3.0.4.min.js _ = 1326992601415 मैं यह कैसे मेरे मामले में यह उपयोग करने के लिए यकीन है कि देखा, लेकिन नहीं
  2. यदि मैं $ .getScript को एक ही जेएस फ़ाइल जोड़कर कई बार कॉल करता हूं, तो क्या यह फ़ाइल प्राप्त करने के लिए हर बार अनुरोध करता है? यदि हां, तो क्या यह जांचने का कोई तरीका है कि क्या हमने पहले से ही उस स्क्रिप्ट को आयात किया है, इसलिए हम उसी फ़ाइल के लिए फिर से स्क्रिप्ट को कॉल करने से बच सकते हैं?

+0

_ अगर मैं $ .getScript को एक ही जेएस फ़ाइल जोड़कर कई बार कॉल करता हूं, तो क्या यह अनुरोध करता है प्रत्येक फ़ाइल को पाने के लिए हर बार? _ कैशिंग के बिना, कैश बस्टिंग के कारण अलग-अलग अनुरोध भेजे जाते हैं। कैशिंग के साथ, यह ब्राउज़र कैश से लोड हो जाएगा (ब्राउजर सर्वर के साथ दोबारा जांच कर सकता है यह देखने के लिए कि कैशिंग हेडर कितने मजबूत हैं) के आधार पर यह नवीनतम प्रति है या नहीं। –

उत्तर

-3

आपका ब्राउज़र तदनुसार पहले से ही कैश होगा यूआरएल .. तो तुम कैशिंग के बारे में चिंता करने की जरूरत नहीं है।

लेकिन आप कैश खराब करना चाहते हैं बस इतना की तरह यूआरएल के लिए एक यादृच्छिक स्ट्रिंग जोड़ देते हैं तो:

$.getScript('js/code.photoswipe.jquery-3.0.4.min.js?' + Math.random(), function() { 
     //do magic 
}); 

?' + Math.random() तो कैशिंग प्रत्येक अनुरोध के साथ टूट गया है अपने js फाइल करने के लिए संलग्न करने के लिए एक यादृच्छिक संख्या के लिए अनुमति देगा फ़ाइल के लिए

+8

नहीं, यह नहीं करता है। यदि मैंने $ .getScript पर एक ही पृष्ठ पर क्लिक करने दिया है, तो यह अंत में अलग-अलग नंबर के साथ एक GET भेजता है उदा। जेएस/code.photoswipe.jquery-3.0.4.min.js? _ = 1326992601415 –

+0

जो मैं करना चाहता हूं, अंत में इन नंबरों को हटाने के लिए है, और जांचने के लिए क्लिक करें, अगर मेरे पास पहले से ही उस स्क्रिप्ट को आयात किया गया है, तो मैं कर सकता था बस getScript –

+0

अनदेखा करें AJAX 'आयात' स्क्रिप्ट की अवधारणा का उपयोग नहीं करता है। हर बार एक नया कॉल होता है, अंतर यह है कि आप इस प्रतिक्रिया को कैश कर सकते हैं (या नहीं) –

23

How to disable the cache busting (के रूप में यह बेतरतीब ढंग से एक संख्या जनरेट करता है):

$.ajaxSetup({ 
    cache: true 
}); 

यह सुनिश्चित करेगा उपयोगकर्ताओं से स्क्रिप्ट हड़पने सर्वर केवल एक बार और उनके स्थानीय कैश से तब तक (जब तक कि उनकी ब्राउज़र सेटिंग्स कैशिंग को रोक न दें)।

+1

चेतावनी: यह केवल आपकी स्क्रिप्ट कॉल न केवल प्रत्येक AJAX कॉल के लिए कैशिंग सक्षम करेगा। –

4

दुर्भाग्यवश संक्षिप्त उत्तर है, आप नहीं कर सकते।

getScript हालांकि इस तरह अधिरोहित जा सकता है:

$.getScript = function(url, callback, cache){ 
$.ajax({ 
     type: "GET", 
     url: url, 
     success: callback, 
     dataType: "script", 
     cache: true 
}); 
}; 

आप कहीं अपने js में यह शामिल है, यह मौजूदा कोड को तोड़ने नहीं होगा, और भी प्राप्त किए गए स्क्रिप्ट कैश होगा।

लाभ
स्निपेट के ऊपर का उपयोग करना, आप अपने पृष्ठ पर सभी स्क्रिप्ट के लिए कैशिंग को सक्षम कर सकते हैं। तो आपको प्रत्येक स्क्रिप्ट लाने के साथ पुनः निर्दिष्ट करने की आवश्यकता नहीं है।

+0

कोई ज़रूरत नहीं है। jQuery 1.12.0 और बाद में ऑब्जेक्ट ऑब्जेक्ट को '$ .getScript' पर पास करने का समर्थन करता है ताकि आप कुछ भी ओवरराइड किए बिना' $ .getScript ({cache: true, url: url}) '' कर सकें। – oriadam

5

$ .getScript के लिए jQuery डॉक्स का कहना है कि getScript के लिए आशुलिपि है:

$.ajax({ 
    url: url, 
    dataType: "script", 
    success: success 
}); 

http://api.jquery.com/jQuery.getScript/

इसका मतलब है कि आप सिर्फ एक कैश जोड़ने की जरूरत है: कि सच पैरामीटर।

$.ajax({ 
    url: url, 
    cache : true, 
    dataType: "script", 
    success: success 
}); 

उतना सरल। GetScript फ़ंक्शन कुछ खास नहीं है, बस शॉर्टेंड।

1

1। jQuery 1.12।0 और बाद में विकल्प ऑब्जेक्ट हस्ताक्षर का समर्थन करता है:

$.getScript({ 
    url: "foo.js", 
    cache: true 
}) 

2। मान लें कि आप cache:true फ़ाइल को ब्राउज़र कैश से लोड कर लेंगे (जब तक ब्राउज़र कैश अक्षम या समाप्त नहीं हो जाता है, उदाहरण के लिए जब devtools खुला होता है)

+0

यह जानकारी अनुपलब्ध है jQuery दस्तावेज़ पर अनुपलब्ध है। मैंने इसे अद्यतन करने के लिए एक पुल अनुरोध खोला। – oriadam

संबंधित मुद्दे