कैश कंट्रोल के लिए कठिन और तेज नियम क्या हैं?


15

स्वीकारोक्ति : जिन साइटों को मैं बनाए रखता हूं, उनमें कैश कंट्रोल के लिए अलग-अलग नियम हैं, जो सर्वर के डिफ़ॉल्ट कॉन्फ़िगरेशन पर आधारित हैं, जो पेज स्पीड और वाई-स्लो फ़ायरफ़ॉक्स प्लग-इन और Google के स्पीड ट्रेसर में नेटवर्क संसाधन दृश्य की सिफारिशों के साथ हैं । Cache-Control निजी / सार्वजनिक पर सेट है जो वे क्या करने के लिए कहते हैं उसके आधार पर, ETag / पिछले-संशोधित हेडर के साथ ही छेड़छाड़ की जाती है यदि Y- स्लो का सुझाव है कि कुछ गड़बड़ है और अमेज़ॅन के लिए मैन्युअल रूप से फ़ाइलों को खोलने के दौरान Vary-Accept-Encoding आवश्यक लगती है CloudFront।

विभिन्न विकल्पों पर सामग्री के माध्यम से पढ़ते समय और वे जो कुछ भी करते हैं, वह परस्पर विरोधी जानकारी, टूटे हुए परदे के पीछे और कार्गो पंथ विन्यास के नियम लगता है । उपरोक्त उल्लिखित विश्लेषण टूल द्वारा प्रदान की गई कोई भी आधिकारिक जानकारी काफी अप्राप्य है क्योंकि यह एक एकीकृत रणनीति के रूप में प्रत्येक विषय के साथ व्यक्तिगत रूप से व्यवहार करती है (इसलिए तकनीकों का क्रॉस-रेफरेंस नहीं है)।

उदाहरण के लिए, यह कोई मतलब नहीं है कि गति विश्लेषण उपकरण ईटाग के साथ एक साइट को रेट करते हैं यदि उनके बिना एक साइट के रूप में है तो वे कैशिंग के साथ मदद करने के लिए हैं।

एक मंच अज्ञेय कैश कंट्रोल रणनीति के लिए कठिन और तेज नियम क्या हैं?

संपादित करें:

जेफ एटवुड के लेख के माध्यम से एक लिंक शानदार गहराई में कैशिंग की व्याख्या करता है।

रिकॉर्ड के लिए हालांकि यहां कठिन और तेज नियम हैं:

यदि फ़ाइल GZIP का उपयोग कर संपीड़ित है, आदि - "कैश-कंट्रोल: प्राइवेट" का उपयोग करें , क्योंकि प्रॉक्सी एक क्लाइंट को संकुचित संस्करण लौटा सकता है जो इसका समर्थन नहीं करता है (हालांकि ब्राउज़र कैश इस तरह से चिह्नित फ़ाइलों को रखेगा)। यह कहने के लिए भी याद रखें कि एक "वैरी: स्वीकार-एनकोडिंग" शामिल है, यह कहने के लिए कि यह संकुचित है।

ETag के साथ संयोजन में अंतिम-संशोधित का उपयोग करें - बेल्ट और ब्रेसिज़ उपयोग दोनों सत्यापनकर्ताओं को प्रदान करता है, जबकि ETag केवल सभी समयों को शामिल करते हुए, संशोधन समय के बजाय फ़ाइल सामग्री पर आधारित है। नोट: AOL के पेजटेस्ट में किसी कारण से ETags के खिलाफ कार्टे ब्लैंच दृष्टिकोण है। यदि आप एक ही सामग्री को होस्ट करने के लिए एक से अधिक सर्वर पर अपाचे का उपयोग कर रहे हैं, तो फ़ाइलगेट निर्देश (यानी "फाइलटेग एमटीआईएम आकार") को छोड़कर इसे ETag से अंतर्निहित घोषित इनोड को हटा दें, जब तक कि आप एक ही लाइव फाइल सिस्टम का उपयोग कर रहे हैं।

"कैश-कंट्रोल: पब्लिक" का उपयोग जहां भी आप कर सकते हैं - इसका मतलब है कि प्रॉक्सी सर्वर (और ब्राउज़र कैश) आपकी सामग्री को वापस कर देगा, भले ही पृष्ठ के बाकी हिस्सों को HTTP प्रमाणीकरण, आदि की आवश्यकता हो।

जवाबों:


8

जब तक आप सर्वर फ़ार्म / क्लस्टर का उपयोग नहीं करते हैं, तब तक, ईटैग से छुटकारा न पाएं जैसे याहू कहती है। जब तक एक ही फाइल हमेशा एक ही ETag नहीं लौटाती है जब यह नहीं बदला है, तो यह एक बहुत ही उपयोगी निर्देश है।

अन्य हेडर के रूप में, याहू की सर्वोत्तम प्रथाओं मेंExpires स्थिर फ़ाइलों के लिए भविष्य के हेडर को सेट करने, Cache-Controlगतिशील सामग्री के लिए उपयोग करने का सुझाव दिया गया है। हालांकि Cache-controlस्थिर सामग्री के लिए पूरी तरह से ठीक है (उनके बीच बहुत अंतर नहीं है)।

जब आप कैश्ड स्थिर फ़ाइलों को बदलते हैं तो आपको फ़ाइल नाम बदलना होगा, या अंत में एक अद्वितीय पैरामीटर जोड़ना होगा, जैसे example.com/styles.css?v=2। वास्तविक फ़ाइल नाम बदलना हालांकि पसंद किया जाता है, जैसा कि नीचे टिप्पणी में दिया गया है।

संयोग से, आप अपनी पसंद के हिसाब से YSlow नियमों को संपादित कर सकते हैं, Etag नियम को हटा सकते हैं और CDN के रूप में अपना स्वयं का डोमेन जोड़ सकते हैं। यह लेख भी एक अच्छा पढ़ा गया है: याहू की समस्याएं आपकी समस्याएं नहीं हैं


ETag ने डिफ़ॉल्ट में के बजाय "FileETag MTime आकार" करके अपाचे में समझदारी की, जिसमें वाई-स्लो पर इनोड (प्रति एफएस इतना गैर-विश्वसनीय) शामिल है। हालांकि पेज स्पीड की तुलना में याहू की सर्वोत्तम प्रथाओं पर सिफारिशें थोड़ी भ्रमित करने वाली हैं। उदाहरण के लिए, यह कैश-कंट्रोल को केवल डायनेमिक पेज (जैसा कि आप भी सुझाव देते हैं) पर उपयोग करने के लिए कहते हैं, फिर भी Google कैश-कंट्रोल का उपयोग करने का सुझाव देता है: स्टेटिक सीएसएस और कैश-कंट्रोल पर सार्वजनिक: मैन्युअल रूप से GZipped Amazon Cloudfront फ़ाइलों पर निजी।
मेटलखर

यह जानना मुश्किल है कि प्रॉक्सी के लिए उस सलाह का क्या करना है। Google बस कहता है "कुछ सार्वजनिक परदे के पीछे कीड़े हैं ..." लेकिन यह नहीं कहता कि यह कितना प्रचलित है। यह हेडर सेट करने की सलाह देता है Vary: Accept-Encoding, code.google.com/speed/page-speed/docs/caching.html
अस्वीकृत करें

क्वेरी पैरामीटर जोड़ने से कुछ ब्राउज़रों में उस फ़ाइल का कैशिंग पूरी तरह से निष्क्रिय हो जाता है। तो आप इसके बजाय "फ़ाइल का नाम बदलना" दृष्टिकोण के साथ जाना चाह सकते हैं, जैसेexample.com/style_v2.css
इवगेनी

@ ईजेनवी: कौन से ब्राउज़र? मैंने यह पहले भी सुना है लेकिन मैंने कभी ऐसा ब्राउज़र नहीं देखा है जो वास्तव में फ़ाइल को कैश नहीं करता है (विशेषकर यदि आपके पास सही हेडर है)।
असंतुष्टगीत

@DisgruntledGoat वास्तव में, कुछ खुदाई के बाद ऐसा लगता है कि यह http / 1.0 युग से एक अवशेष है जहां यह इस कल्पना का हिस्सा था कि वास्तव में कहा गया था कि उपयोगकर्ता एजेंट के पास ऐसी संपत्ति नहीं होनी चाहिए जिनके पास क्वेरी स्ट्रिंग हैं। दूसरी ओर, code.google.com/speed/page-speed/docs/caching.html बताता है कि यह प्रॉक्सी (स्क्वीड <3.0) है जो संपत्तियों को कैश नहीं करेगा और इस तरह कैश बस्ट के लिए क्वेरी स्ट्रिंग का उपयोग करने से हतोत्साहित किया जाता है।
इवगेनी

0

कैशिंग का उपयोग करने के लिए अपने संसाधनों के अनुरोध हेडर को बदलें अधिकांश लोगों के लिए, कैशिंग को सक्षम करने का तरीका अपने वेब होस्ट / सर्वर पर .htaccess नामक फ़ाइल में कुछ कोड जोड़ना है।

इसका मतलब है कि आप अपने वेबहोस्ट पर फ़ाइल प्रबंधक (या जहाँ भी आप फ़ाइलों को जोड़ने या अपलोड करने जाते हैं) जा रहे हैं।

.Htaccess फ़ाइल आपकी साइट के लिए कई महत्वपूर्ण चीजों को नियंत्रित करती है। यदि आप .htaccess फ़ाइल से परिचित नहीं हैं, तो कृपया इसे बदलने से पहले कुछ जानने के लिए .htaccess लेख के साथ मेरे काम को पढ़ें।

नीचे दिए गए कोड ब्राउज़रों को बताते हैं कि इसे क्या कैश करना है और कब तक इसे "याद रखना" है। इसे आपकी .htaccess फ़ाइल के शीर्ष पर जोड़ा जाना चाहिए।

## EXPIRES CACHING ##
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType text/html "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 month"
</IfModule>
## EXPIRES CACHING ##

.Htaccess फाइल को सेव करें और फिर अपने वेबपेज को रिफ्रेश करें।

स्रोत:
https://varvy.com/pagespeed/leiture-browser-caching.html


ExpiresByTypeमेरे द्वारा देखे जाने वाले निर्देशों के लगभग प्रत्येक उदाहरण में माइम-प्रकार शामिल है text/x-javascript- क्या आपका सर्वर वास्तव में इस सामग्री प्रकार के साथ प्रतिक्रिया कर रहा है ?! (ब्लाइंड कॉपी / चिपकाने वाले IMO का एक उदाहरण।)
MrWhite
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.