2010-03-02 14 views
8

क्या यह जानने के लिए जावास्क्रिप्ट में कोई तरीका है कि संसाधन पहले से ही ब्राउज़र कैश में है या नहीं?मैं कैसे बता सकता हूं कि एक वेब पेज संसाधन कैश किया जाता है?

हम अपने क्लाइंट-साइड पेज दृश्यों का एक अंश माप रहे हैं ताकि हम अपने उपयोगकर्ताओं के लिए पृष्ठों को कितनी तेज़ी से लोड कर रहे हों, इस बारे में बेहतर डेटा प्राप्त कर सकें। पहली बार उपयोगकर्ता हमारी साइट पर पहुंचते हैं, ब्राउज़र द्वारा कई संसाधन (जेएस, सीएसएस, छवियों) को कैश किया जाता है, इसलिए उनका प्रारंभिक पृष्ठदृश्य बाद के लोगों की तुलना में धीमी गति से चल रहा है।

अभी, उस डेटा को एक साथ मिश्रित किया गया है, इसलिए बाद के पृष्ठदृश्य से प्रारंभिक पृष्ठ लोड को बताना मुश्किल है जो किसी अन्य कारण से धीमा है। मुझे यह देखने के लिए एक क्रॉस-ब्राउजर तरीका पसंद है कि कैश पहले ही प्राइम किया गया है, ताकि मैं दो प्रकार के पेजव्यू को अलग कर सकूं और उन्हें अलग से विश्लेषण कर सकूं।

उत्तर

4

संसाधन के कैश किए जाने पर जांचने के लिए कोई जावास्क्रिप्ट एपीआई नहीं है। मुझे लगता है कि आप सबसे अच्छा कर सकते हैं यह जांचें कि संसाधनों को लोड करने में कितना समय लगेगा, और कम लोड समय वाले लोगों को एक साथ बाल्टी करें।

पृष्ठ के शीर्ष पर:

<script>var startPageLoad = new Date().getTime();</script> 

प्रत्येक संसाधन पर:

<img src="foo.gif" onload="var fooLoadTime = startPageLoad - new Date().getTime()"> 
<script src="bar.js" onload="var barLoadTime = startPageLoad - new Date().getTime()"> 

जब रिपोर्टिंग लोड समय:

var fooProbablyCached = fooLoadTime < 200; // Took < 200ms to load foo.gif 
var barProbablyCached = barLoadTime < 200; // Took < 200ms to load bar.gif 

आप के बजाय onreadystatechange घटनाओं उपयोग करना पड़ सकता आईई में अधिभार।

+0

धन्यवाद, एनी। यह सही समझ में आता है। कुछ ब्राउज़र अजीब होते हैं जब आप स्क्रिप्ट ब्लॉक मिश्रण करते हैं और बाहरी संसाधन लोड करते हैं, इसलिए यह समानांतर डाउनलोड को प्रभावित कर सकता है; मैं इसे आज़माउंगा और देख सकता हूं। –

+0

हाय विलियम, ब्राउजरकोप को देखकर, ऐसा लगता है कि आप क्या देखना चाहते हैं बाहर एक स्टाइलशीट के तुरंत बाद एक इनलाइन स्क्रिप्ट के बाद है: http://www.browserscope.org/?v=top&category=network (अन्य समानांतर डाउनलोड मुद्दे सभी बाहरी स्क्रिप्ट पर लागू होते हैं) – Annie

+0

मेरा सर्वर एक चर को गिनता है और भेजता है यह सामग्री-एमडी 5 हेडर के साथ। क्लाइंट स्क्रिप्ट जांच करेगी कि सामग्री-एमडी 5 हेडर मौजूद है या पहले से बड़ा है। यदि ऐसा है तो प्रतिक्रिया कैश नहीं है। मैं कुछ ऐसा करता हूं सुरक्षा कारण के लिए। –

0

आपको ऐसा करने के लिए प्लग-इन की आवश्यकता है। एक बार जब आप इसे इंस्टॉल करते हैं तो Firebug आपको "नेट" टैब पर बता सकता है (फ़ायरफ़ॉक्स के लिए)। जावास्क्रिप्ट स्वयं ब्राउजर के HTTP ट्रैफिक को नहीं देख सकता है।

+1

जैसा कि मैंने इस सवाल में उल्लेख किया है, मैं वास्तविक पृष्ठदृश्यों पर क्लाइंट-साइड इंस्ट्रूमेंटेशन कर रहा हूं। यह असंभव है कि मुझे फ़ायरबग इंस्टॉल करने के लिए हमारे बहुत से उपयोगकर्ता मिलेंगे, खासकर वे जो फ़ायरफ़ॉक्स का उपयोग नहीं करते हैं। –

+3

सत्य पसंद नहीं करना डाउन-वोट का कोई कारण नहीं है। धन्यवाद। :( –

+2

आपका उत्तर एक अलग प्रश्न पर ठीक हो सकता है, लेकिन यह यहां अनुपयोगी है। सुनिश्चित करें कि पृष्ठ के शीर्ष पर सबसे उपयोगी उत्तर मुझे ऊपर और नीचे मतदान का उचित उपयोग लगता है। –

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

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