ब्राउज़र कितने समय तक HTTP 301s कैश करते हैं?




http-status-code-301 (8)

कम से कम दो ब्राउज़र - क्रोम और फ़ायरफ़ॉक्स - कोई समाप्ति तिथि के साथ 301 रीडायरेक्ट कैश करेगा।

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

आप इसे कम से कम फ़ायरफ़ॉक्स में सत्यापित कर सकते हैं about:cache और इसे डिस्क कैश के नीचे ढूंढना।

मैं IE10 / IE11 जैसे अन्य ब्राउज़रों के व्यवहार के बारे में नहीं जानता। हालांकि, यह देखते हुए कि अन्य ब्राउज़र अनिश्चित काल तक कैश करते हैं, आपको वैसे भी इसके लिए समायोजन करना होगा।

क्रोम / फ़ायरफ़ॉक्स समेत सभी ब्राउज़रों में हेडर का उपयोग करके इस डिफ़ॉल्ट व्यवहार को ओवरराइड करना अभी भी संभव है, जैसा कि नीचे वर्णित है:

नोट: यह उत्तर 2014 में लिखा गया था और ब्राउज़र व्यवहार समय के साथ बदल सकता है।

यदि आप नहीं चाहते हैं कि रीडायरेक्ट कैश किया जाए

यह अनिश्चित कैशिंग कैश-कंट्रोल हेडर की अनुपस्थिति में इन ब्राउज़रों द्वारा केवल डिफ़ॉल्ट कैशिंग है। तर्क यह है कि आप "स्थायी" रीडायरेक्ट निर्दिष्ट कर रहे हैं और उन्हें कोई अन्य कैशिंग निर्देश नहीं दे रहे हैं, इसलिए वे इसका इलाज करेंगे जैसे कि आप इसे अनिश्चित काल तक कैश करना चाहते थे।

ब्राउजर अभी भी कैश-कंट्रोल का समर्थन करते हैं और हेडर को किसी भी अन्य प्रतिक्रिया के साथ समाप्त करते हैं, अगर वे निर्दिष्ट हैं।

आप Cache-Control: max-age=3600 जैसे हेडर जोड़ सकते हैं Cache-Control: max-age=3600 या Expires: Thu, 01 Dec 2014 16:00:00 GMT आपके 301 रीडायरेक्ट पर। आप Cache-Control: no-cache भी जोड़ सकते हैं Cache-Control: no-cache इसलिए इसे ब्राउज़र या Cache-Control: no-store द्वारा स्थायी रूप से कैश नहीं किया जाएगा Cache-Control: no-store ताकि इसे ब्राउज़र द्वारा अस्थायी स्टोरेज में भी संग्रहीत नहीं किया जा सके।

हालांकि, मेरी राय में एक बेहतर विकल्प 302 या 307 रीडायरेक्ट का उपयोग करना है। ये ब्राउज़र या कैश को इंगित नहीं करते हैं कि वे "स्थायी" रीडायरेक्ट हैं और इस प्रकार कैश-कंट्रोल हेडर की अनुपस्थिति में कैश नहीं किया जाना चाहिए।

मेरे लिए, ऐसा लगता है कि यह एक 301 रीडायरेक्ट जारी कर रहा है लेकिन इसे गैर-कैशेबल के रूप में चिह्नित करने के लिए 301 रीडायरेक्ट की भावना के खिलाफ जा रहा है, भले ही यह तकनीकी रूप से मान्य हो। वाईएमएमवी, और आपको किनारे के मामले मिल सकते हैं जहां यह "स्थायी" रीडायरेक्ट के लिए समय सीमा के लिए समझ में आता है।

यदि आपने पहले 301 रीडायरेक्ट जारी किया था लेकिन वह इसे अनदेखा करना चाहता था

यदि लोगों के पास अभी भी उनके ब्राउज़र में कैश किए गए 301 रीडायरेक्ट हैं, तो वे इस बात पर ध्यान दिए बिना लक्षित पृष्ठ पर ले जायेंगे कि स्रोत पृष्ठ में अभी भी रीडायरेक्ट है या नहीं। इसे ठीक करने के आपके विकल्पों में शामिल हैं:

  • सबसे आसान और सबसे अच्छा समाधान फिर से एक और 301 पुनर्निर्देशन जारी करना है।

    ब्राउजर को एहसास होगा कि इसे पहले से सोचा गया था कि यह एक डी-कमीशन यूआरएल था, और इससे यह पुष्टि होनी चाहिए कि पुराना रीडायरेक्ट अभी भी वहां नहीं है।

    संपादित करें: कुछ टिप्पणियां इस पर संदेह फेंकती हैं, नीचे देखें।

  • यदि आपके पास उस साइट पर नियंत्रण नहीं है जहां पिछले रीडायरेक्ट लक्ष्य पर गए थे, तो आप भाग्य से बाहर हैं। साइट स्वामी को वापस आपको रीडायरेक्ट करने का प्रयास करें और मांगें।

इलाज से भी रोकथाम बेहतर है - अगर आप सुनिश्चित नहीं हैं कि आप पुराने यूआरएल को स्थायी रूप से डी-कमीशन करना चाहते हैं तो 301 रीडायरेक्ट से बचें।

मैं एक HTTP 301 स्थायी रीडायरेक्ट के साथ एक समस्या डीबग कर रहा हूँ। एक त्वरित परीक्षण के बाद, ऐसा लगता है कि सफारी फिर से शुरू होने पर 301 के कैश को साफ़ करता है, लेकिन फ़ायरफ़ॉक्स नहीं करता है।

आईई, क्रोम, फ़ायरफ़ॉक्स और सफारी कब 301 के अपने कैश साफ़ करते हैं?

अद्यतन: उदाहरण के लिए, अगर मैं example1.com पर example2.com को रीडायरेक्ट करना चाहता हूं, लेकिन मैंने गलती से इसे example3.com पर रीडायरेक्ट करने के लिए सेट किया है, तो यह एक समस्या है। मैं गलती को सही कर सकता हूं, लेकिन इस दौरान example1.com का दौरा करने वाले किसी भी व्यक्ति ने example3.com गलत रीडायरेक्ट कैश किया होगा, और इसलिए जब तक उनके कैश साफ़ नहीं हो जाते हैं, तो वे example1.com या example2.com तक नहीं पहुंच पाएंगे । जांच के बाद, मुझे लगता है कि कोई Cache-Control और हेडर सेट Expires । गलत 301 प्रतिक्रिया के लिए शीर्षलेख इस तरह से होंगे:

HTTP/1.1 301 Moved Permanently
Date: Wed, 27 Feb 2013 12:05:53 GMT
Server: Apache/2.2.21 (Unix) DAV/2 PHP/5.3.8
X-Powered-By: PHP/5.3.8
Location: http://example3.com/
Content-Type: text/html

मेरे अपने परीक्षण बताते हैं कि:

  • आईई 7, आईई 8, एंड्रॉइड 2.3.4 बिल्कुल कैश नहीं करते हैं।
  • फ़ायरफ़ॉक्स 18.0.2, सफारी 5.1.7 (विंडोज 7 पर), और ओपेरा 12.14 सभी कैश, और ब्राउजर पुनरारंभ पर कैश साफ़ करें।
  • आईई 10 और क्रोम 25 कैश, लेकिन ब्राउज़र पुनरारंभ पर स्पष्ट नहीं है, तो वे कब स्पष्ट करेंगे?

301 प्रति HTTP आरएफसी प्रति कैश करने योग्य प्रतिक्रिया है और ब्राउज़र प्रतिक्रिया के आपके पास मौजूद HTTP कैशिंग शीर्षकों के आधार पर इसे कैश करेगा। प्रतिक्रिया शीर्षकों की जांच करने के लिए फायरबग या चार्ल्स का उपयोग करें ताकि सटीक अवधि के लिए प्रतिक्रिया कैश की जा सके।

यदि आप कैशिंग अवधि को नियंत्रित करना चाहते हैं, तो आप HTTP प्रतिक्रिया शीर्षलेख Cache-Control उपयोग कर सकते हैं और ऐसा करने के लिए Expires हो जाते हैं। वैकल्पिक रूप से, यदि आप 301 प्रतिक्रिया को कैश नहीं करना चाहते हैं, तो निम्न शीर्षलेखों का उपयोग करें।

Cache-Control: no-store, no-cache, must-revalidate
Expires: Thu, 01 Jan 1970 00:00:00 GMT

मेरे पास सरल समाधान है जो सभी प्रमुख ब्राउज़र (नवीनतम संस्करण) पर काम करता है, इसमें आईई, क्रोम और एफएफ शामिल है 1. Ctrl + Shift + Del 2.1 क्रोम: "ब्राउज़िंग इतिहास" और "कैश ..." चुनें 2.2 आईई: मैं डिफ़ॉल्ट विकल्प छोड़ देता हूं "अस्थायी इंटरनेट फ़ाइलें और वेबसाइट फ़ाइलें", "कुकीज़ और वेबसाइट डेटा", "इतिहास" 2.3 एफएफ: "ब्राउज़िंग और डाउनलोड इतिहास", "कैश" 3. "हटाएं" पर क्लिक करें 4. अपने ब्राउज़र को बंद करें और फिर से खोलें। यह काम करना चाहिए


उपयोगकर्ता को उस यूआरएल पर एक पोस्ट फॉर्म जमा करें और कैश रीडायरेक्ट चला गया है :)

<body onload="document.forms[0].submit()">
<form action="https://forum.pirati.cz/unreadposts.html" method="post">
    <input type="submit" value="fix" />
</form>
</body>

@ थॉमसट्रटर के जवाब के रूप में

यदि आपने पहले 301 रीडायरेक्ट जारी किया था लेकिन वह इसे अनदेखा करना चाहता था

यदि लोगों के पास अभी भी उनके ब्राउज़र में कैश किए गए 301 रीडायरेक्ट हैं, तो वे इस बात पर ध्यान दिए बिना लक्षित पृष्ठ पर ले जायेंगे कि स्रोत पृष्ठ में अभी भी रीडायरेक्ट है या नहीं। इसे ठीक करने के आपके विकल्पों में शामिल हैं:

सबसे आसान और सबसे अच्छा समाधान फिर से एक और 301 पुनर्निर्देशन जारी करना है।

ब्राउजर को एहसास होगा कि इसे पहले से सोचा गया था कि इसे एक डिमोकिशन किया गया यूआरएल था, और इससे यह पुष्टि होनी चाहिए कि पुराने रीडायरेक्ट अभी भी वहां नहीं है।

यदि आपके पास उस साइट पर नियंत्रण नहीं है जहां पिछले रीडायरेक्ट लक्ष्य पर गए थे, तो आप भाग्य से बाहर हैं। साइट स्वामी को वापस आपको रीडायरेक्ट करने का प्रयास करें और मांगें।

वास्तव में, इसका मतलब है:

  1. b.com पर a.com 301

  2. a.com के 301 को हटाएं

  3. a.com पर b.com 301 जोड़ें

फिर यह काम करता है।


गुप्त / इनप्रिवेट मोड का उपयोग करके अपने रीडायरेक्ट का परीक्षण करें ताकि जब आप ब्राउज़र बंद कर दें तो यह उस कैश को फ्लश करेगा और विंडो को फिर से खोलने में कैश नहीं होगा।


परीक्षण उद्देश्यों के लिए (इसलिए, कोई कैश रीडायरेक्ट नहीं), लोग नई निजी विंडो खोल सकते हैं: CTRL+SHIFT+ N [या P ] पर क्लिक करें


स्थायी रीडायरेक्ट को साफ़ करने के लिए, chrome: // net-internals पर जाएं। शीर्ष लाल स्टेटस बार के दाईं ओर, ड्रॉप-डाउन मेनू खोलने के लिए नीचे तीर ▼ पर क्लिक करें, और "टूल्स" समूह के अंतर्गत, "साफ़ कैश" चुनें।

संस्करण 48 के अनुसार, यह एकमात्र चीज थी जो कैश किए गए 301 को साफ़ करने के लिए मेरे लिए काम करती थी।





http-status-code-301