एक बार जब किसी छवि को ब्राउज़र में किसी भी तरह से लोड किया जाता है, तो यह ब्राउज़र कैश में होगा और अगली बार उपयोग किए जाने पर बहुत तेज़ी से लोड होगा, चाहे वह उपयोग वर्तमान पृष्ठ में हो या किसी अन्य पेज में जब तक छवि है इसका उपयोग ब्राउज़र कैश से समाप्त होने से पहले किया जाता है।
इसलिए, छवियों को प्रीच करने के लिए, आपको बस उन्हें ब्राउज़र में लोड करना होगा। यदि आप छवियों का एक गुच्छा तैयार करना चाहते हैं, तो संभवतः इसे जावास्क्रिप्ट के साथ करना सबसे अच्छा है क्योंकि यह आमतौर पर जब जावास्क्रिप्ट से किया जाता है तो पेज लोड नहीं करेगा। आप ऐसा कर सकते हैं:
function preloadImages(array) {
if (!preloadImages.list) {
preloadImages.list = [];
}
var list = preloadImages.list;
for (var i = 0; i < array.length; i++) {
var img = new Image();
img.onload = function() {
var index = list.indexOf(this);
if (index !== -1) {
list.splice(index, 1);
}
}
list.push(img);
img.src = array[i];
}
}
preloadImages(["url1.jpg", "url2.jpg", "url3.jpg"]);
इस फ़ंक्शन को जितनी बार चाहें उतनी बार और प्रत्येक बार कॉल किया जा सकता है, यह सिर्फ प्रीचेच में अधिक छवियां जोड़ देगा।
एक बार जब इस तरह की तस्वीरों को जावास्क्रिप्ट के माध्यम से पहले से लोड किया गया है, तो ब्राउज़र उनके कैश में होगा और आप सामान्य URL को अन्य स्थानों पर (आपके वेब पेजों में) संदर्भित कर सकते हैं और ब्राउज़र उस URL को अपने कैश से अधिक के बजाय लाएगा। नेटवर्क।
अंततः समय के साथ, ब्राउज़र कैश भर सकता है और सबसे पुरानी चीजों को टॉस कर सकता है जो थोड़ी देर में उपयोग नहीं किए गए हैं। तो आखिरकार, छवियों को कैश से बाहर निकाल दिया जाएगा, लेकिन उन्हें थोड़ी देर के लिए वहां रहना चाहिए (यह निर्भर करता है कि कैश कितना बड़ा है और अन्य ब्राउज़िंग कैसे की जाती है)। हर बार छवियों को वास्तव में फिर से लोड किया जाता है या वेब पेज में उपयोग किया जाता है, यह स्वचालित रूप से ब्राउज़र कैश में अपनी स्थिति को ताज़ा करता है ताकि उन्हें कैश से बाहर निकालने की संभावना कम हो।
ब्राउज़र कैश क्रॉस-पेज है इसलिए यह ब्राउज़र में लोड किए गए किसी भी पेज के लिए काम करता है। तो आप अपनी साइट में एक जगह पर प्रीचैच कर सकते हैं और फिर ब्राउज़र कैश आपकी साइट के अन्य सभी पृष्ठों के लिए काम करेगा।
जब उपर्युक्त के रूप में पेश किया जाता है, तो छवियों को अतुल्यकालिक रूप से लोड किया जाता है ताकि वे आपके पृष्ठ के लोडिंग या प्रदर्शन को अवरुद्ध न करें। लेकिन, यदि आपके पृष्ठ की अपनी बहुत सारी छवियां हैं, तो ये प्रीचेच छवियां आपके पृष्ठ में प्रदर्शित छवियों के साथ बैंडविड्थ या कनेक्शन के लिए प्रतिस्पर्धा कर सकती हैं। आम तौर पर, यह ध्यान देने योग्य मुद्दा नहीं है, लेकिन एक धीमी गति से कनेक्शन पर, यह प्रारंभिक प्रशिक्षण मुख्य पृष्ठ के लोड को धीमा कर सकता है। यदि पिछली बार लोड की जाने वाली प्रीलोड छवियों के लिए यह ठीक था, तो आप फ़ंक्शन के एक संस्करण का उपयोग कर सकते हैं जो अन्य सभी पेज संसाधनों के पहले से लोड होने के बाद प्रीलोडिंग शुरू करने की प्रतीक्षा करेगा।
function preloadImages(array, waitForOtherResources, timeout) {
var loaded = false, list = preloadImages.list, imgs = array.slice(0), t = timeout || 15*1000, timer;
if (!preloadImages.list) {
preloadImages.list = [];
}
if (!waitForOtherResources || document.readyState === 'complete') {
loadNow();
} else {
window.addEventListener("load", function() {
clearTimeout(timer);
loadNow();
});
timer = setTimeout(loadNow, t);
}
function loadNow() {
if (!loaded) {
loaded = true;
for (var i = 0; i < imgs.length; i++) {
var img = new Image();
img.onload = img.onerror = img.onabort = function() {
var index = list.indexOf(this);
if (index !== -1) {
list.splice(index, 1);
}
}
list.push(img);
img.src = imgs[i];
}
}
}
}
preloadImages(["url1.jpg", "url2.jpg", "url3.jpg"], true);
preloadImages(["url99.jpg", "url98.jpg"], true);