2013-03-12 4 views
6

जब मैं एक साक्षात्कार में शामिल हुआ, तो मुझे सवाल पूछा गया, मुझे नहीं पता था कि इसका जवाब कैसे दिया जाए।कैसे जांचें कि किसी छवि को जेएस में कैश किया गया था या नहीं?

आप सवाल का प्रमुख मुद्दा जानते हैं?

उत्तर

14

चेक अगर Image वस्तु की complete विशेषता true है:

function is_cached(src) { 
    var image = new Image(); 
    image.src = src; 

    return image.complete; 
} 

यह काम करने के लिए (हालांकि यह छवि को लोड चल जाएगा कि उसे कैश में नहीं है, नहीं हो सकता है जो लगता है कि तुम क्या चाहते हैं):

> is_cached('http://cdn.sstatic.net/stackoverflow/img/sprites.png?v=3') 
false 
> is_cached('http://cdn.sstatic.net/stackoverflow/img/sprites.png?v=3') 
true 
+1

@JaredFarr आश - मुझे लगता है कि आप जो शब्द खोज रहे हैं वह है "ये परीक्षण मामले पास हुए"। मेरे लिए "यह काम करता प्रतीत होता है" का मतलब है कि इस सवाल को ग़लत प्रश्न से गहराई से हल करने के तरीके से बाहर नहीं निकलता है। – aaaaaa

+2

यह कैश की जांच नहीं करता है। यह डीओएम की जांच करता है, आप दो टैब खोलकर इसे सत्यापित कर सकते हैं, एक टैब (गलत) में "जांच" फिर से उसी टैब (सत्य) में "जांच" कर सकते हैं और फिर दूसरे टैब और "चेकिंग" (झूठी) पर जा सकते हैं, भले ही इसे कैश किया जाना चाहिए। – Cheruvian

3

आप जांच कर सकता है जैसे:

function is_cached(img_url){ 
    var imgEle = document.createElement("img"); 
    imgEle.src = img_url; 
    return imgEle.complete || (imgEle.width+imgEle.height) > 0; 
} 

//and check, returns true or false depending on cached or not 
is_cached("http://www.somesite.com/some_image.jpg"); 
संबंधित मुद्दे