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




http-status-code-301 (6)

मैं एक 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 रीडायरेक्ट जारी किया था लेकिन वह इसे अनदेखा करना चाहता था

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

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

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

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

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

  1. b.com पर a.com 301

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

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

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


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

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

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


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


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

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


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




http-status-code-301