मान लीजिए मैं यूआरएल इसलिए तरह की की एक सूची है:प्रतिक्रिया में छवियों को कैसे कैश करें?
[ '/images/1', '/images/2', ... ]
और मैं उन लोगों में से n
prefetch करने के लिए इतना है कि छवियों के बीच संक्रमण तेजी से होता है चाहता हूँ। क्या मैं अब componentWillMount
में कर रहा हूँ है निम्नलिखित:
componentWillMount() {
const { props } = this;
const { prefetchLimit = 1, document = dummyDocument, imgNodes } = props;
const { images } = document;
const toPrefecth = take(prefetchLimit, images);
const merged = zip(toPrefecth, imgNodes);
merged.forEach(([url, node]) => {
node.src = url;
});
}
imgNodes
के साथ ऐसा तरह परिभाषित किया जा रहा:
imgNodes: times(_ => new window.Image(), props.prefetchLimit),
और times
, zip
, और take
ramda से आ रही।
अब जब मैं उन यूआरएल का उपयोग के अंदर इतना की तरह प्रतिक्रिया:
<img src={url} />
यह जहां यूआरएल प्रयोग किया जाता है की परवाह किए बिना Etag
और Expire
टैग के अनुसार ब्राउज़र कैश करता है। जब भी हम दृश्य के अंदर n - 1
हिट करते हैं, तो imgNodes
को उसी तरीके से पुन: उपयोग करते हुए, मैं अगले n
छवियों को प्रीफ़ेच करने के लिए इसका उपयोग करने की भी योजना बना रहा हूं।
मेरा प्रश्न हैं:
इस यहाँ तक कि एक वैध विचार 100 + घटक है कि इस विचार का उपयोग करेगा दे लेकिन केवल 1 एक समय में दिखाई जाएगी है?
क्या मैं इसे कर कर स्मृति समस्याओं में भाग लेगा? मुझे लगता है कि
imgNodes
घटक को अनमाउंट किए जाने पर कचरा इकट्ठा किया जाएगा।
हम redux
उपयोग कर रहे हैं तो मैं दुकान में इन छवियों को बचा सकता है लेकिन यह है कि जैसे मैं कैशिंग से निपटने कर रहा हूँ के बजाय ब्राउज़र की प्राकृतिक कैश का लाभ लगता है।
यह कितना बुरा विचार है?
क्या आप इसके साथ कहीं भी गए थे? मुझे दिलचस्पी है ... –
@MathieuK। हमारे पास मूल रूप से समान संरचना/इंटरफेस है जैसा ऊपर वर्णित है, सामान्य HTTP कैशिंग का लाभ उठा रहा है। –
तो आप ब्राउज़र/HTTP के डिफ़ॉल्ट व्यवहार पर भरोसा करते हैं? –