आपको यातायात के बारे में चिंता करने की ज़रूरत नहीं है। आवेदन शुरू करते समय छवियों को कैश करना आसान है। निम्नलिखित JSFiddle में मेरा उदाहरण देखें: http://jsfiddle.net/pAwdC/। जब मैं एप्लिकेशन शुरू कर रहा हूं तो मैं loadImages
पर कॉल कर रहा हूं। यह विधि प्रत्येक अंक के लिए img
DOM तत्व बनाता है। यह src
सरणी imagesSrc
से लिया जा रहा है।loadImages
समारोह ब्राउज़र कहा जाता है जब बना रही है कुछ HTTP सर्वर के लिए अनुरोध प्राप्त:
current.src = imagesSrc[i];
निष्पादित होने

असल में प्रत्येक अनुरोध जब किया जाता है।
छवियों को लोड करने के बाद, मैं बस उन्हें छुपा रहा हूं। जब छवियां display: none
या visibility: hidden
के साथ होती हैं तो उपयोगकर्ता वास्तव में उन्हें नहीं देख सकता है, लेकिन जब आप इन छुपे तत्वों को देखते हैं तो कोई और अनुरोध नहीं किया जाता है, केवल अंतिम repaint, reflow/relayout, restyle ब्राउज़र द्वारा किया जाता है। सभी तत्व कैश किए जाते हैं और केवल तभी प्रदर्शित होते हैं जब आवश्यक हो। आप अपने फायरबग या जो भी अन्य देव उपकरण का उपयोग कर रहे हैं, उसकी जांच कर सकते हैं कि इन छवियों के लिए कोई और अनुरोध नहीं किया गया है।
var images = [],
imagesSrc = ['https://lh3.ggpht.com/-107YXK-eAXs/UB6V49H9yuI/AAAAAAAACsY/69ceZJXaYZE/s1600/number-one-.png',
'https://lh3.ggpht.com/-8rOrxAwDl48/Txf99Sus18I/AAAAAAAAL1w/VcmeP7rNFwY/s1600/number2c.png',
'https://lh3.ggpht.com/-aGatHUidcGw/UG6Oh2HdWXI/AAAAAAAADQY/yc1CTC7cpOY/s1600/number3.png'];
function loadImages() {
var current;
for (var i = 0; i < imagesSrc.length; i += 1) {
current = document.createElement('img');
current.src = imagesSrc[i];
images.push(current);
current.style.display = 'none';
document.body.appendChild(current);
}
}
function showImage() {
var current = showImage.current || 0;
if (current >= 3) {
current = 0;
}
hideImages();
images[current].style.display = 'block';
current += 1;
showImage.current = current;
setTimeout(function() {
showImage();
}, 1000);
}
function hideImages() {
for (var i = 0; i < images.length; i += 1) {
images[i].style.display = 'none';
}
}
loadImages();
showImage();
मेरी उदाहरण के लिए मैं प्रत्येक अंक का सिर्फ एक उदाहरण की जरूरत है:
यहाँ मेरी उदाहरण से कोड है। निश्चित रूप से आपकी घड़ी के लिए आप प्रत्येक अंक के लिए चार उदाहरण (चार img
डोम तत्व) बना सकते हैं ताकि आप डुप्लिकेट दिखा सकें।
आपके आवेदन के लिए मांग पर छवियों को लोड करने के लिए बेहतर दृष्टिकोण हो सकता है, लेकिन केवल एक बार और फिर उन्हें कैश करें। ऐसा करना अच्छा होता है क्योंकि उपयोगकर्ता प्रत्येक पृष्ठ (0 से 9 तक) देखने के लिए आपके पृष्ठ पर नहीं रह सकता है और आप इस आलसी लोडिंग द्वारा अपना प्रदर्शन थोड़ा बढ़ा सकते हैं। इस रणनीति के लिए आप flyweight pattern देख सकते हैं। इसका मुख्य विचार पुन: प्रयोज्य छोटी वस्तुओं का एक सेट प्रबंधित करना है और इसकी रचना को नियंत्रित करते समय मांग पर उनका उपयोग करना है।

दृष्टिकोण मैं उल्लेख किया है में कई भिन्नताएं हैं: यहाँ एक यूएमएल वर्ग आरेख जो पैटर्न की संरचना को दर्शाता है। हो सकता है कि आप सबसे छोटी भिन्नता हो सकें, एक ही छवि का उपयोग करना जिसमें सभी अंक शामिल हैं। इसके बाद आप अंक के आकार के साथ विभिन्न तत्व (उदाहरण के लिए div) बना सकते हैं। जब आप इन तत्वों को विशिष्ट स्थिति वाले पृष्ठभूमि पर सेट करते हैं तो आप केवल एक ही छवि लोड करके सभी अंक बना सकते हैं। इससे आपके अनुरोध 10 से केवल एक ही हो जाएंगे। उदाहरण के लिए, फेसबुक द्वारा इस दृष्टिकोण का प्रभावी ढंग से उपयोग किया जाता है।
यदि आपको और सहायता की आवश्यकता है तो मुझे सहायता करने में खुशी होगी।
स्प्राइट का उपयोग कर और केवल पृष्ठभूमि स्थिति को बदलने? –
मैं एक विधि का उपयोग करूंगा जो सीएसएस अक्षम होने पर भी काम करेगा, पहुंच के लिए। (हां, मैं पहले से ही alt विशेषता को अद्यतन कर रहा हूं क्योंकि प्रत्येक अंक बदल गया है, लेकिन अगर सीएसएस को अनदेखा किया जाता है तो छवियां प्रदर्शित नहीं होतीं।) – Bobulous
यदि सीएसएस ब्राउज़र में काम नहीं करता है, तो आप सुनिश्चित कर सकते हैं कि जावास्क्रिप्ट भी काम नहीं करेगा । Sprites का प्रयोग करें और इसके बारे में चिंता मत करो। –