8

यह Using 301/303/307 redirects for dynamic short urls पर एक अनुवर्ती प्रश्न है, जहां मैं गंतव्य यूआरएल लगातार आधार पर बदलते समय लघु यूआरएल पुनर्निर्देशन को लागू करने के लिए सबसे अच्छी विधि निर्धारित करने का प्रयास करता हूं।301 रीडायरेक्ट कैशिंग से बचें

जबकि ऐसा लगता है कि 301 और 307 रीडायरेक्ट दोनों एक ही तरीके से प्रदर्शन करते हैं, तो मुझे जो समस्या है, वह 301 रीडायरेक्ट कैशिंग है (जैसा कि here दस्तावेज है) - इसके बजाय 307 रीडायरेक्ट का उपयोग करने से बचने का सबसे अच्छा तरीका है (मुझे लगता है 307 रीडायरेक्ट कभी कैश नहीं करेंगे?), या स्पष्ट रूप से नो-कैश हेडर ("कैश-कंट्रोल: नो-कैश, जरूरी-पुनरीक्षित") भेजने के लिए?

+0

संबंधित: http://stackoverflow.com/questions/12192590/how-to-do-a-non-cached-301-redirect/19003320#19003320 –

उत्तर

16

301 कैशिंग से बचने की कोशिश न करें। यदि आप नहीं चाहते हैं कि कोई उपयोगकर्ता एजेंट आपके रीडायरेक्ट को कैश करे, तो बस 301 रीडायरेक्ट का उपयोग न करें। दूसरे शब्दों में, 301 कैशिंग रहने के लिए यहां है, और अर्थात्, यह स्थायी रीडायरेक्ट है, इसलिए यदि आप गंतव्य URL को बदलने की योजना बना रहे हैं, तो 301 उपयोग करने के लिए सही स्थिति कोड नहीं है। दूसरी तरफ, 307 responses are not cached by default

+3

आपकी व्याख्या HTTP विनिर्देश का उल्लंघन करती है। जब ग्राहक 301 पर मौजूद होते हैं तो ग्राहकों को 'कैश-कंट्रोल' का पालन करना होगा। – Gili

+0

@ गिली हां, ग्राहकों को कैश-कंट्रोल का सम्मान करना चाहिए, लेकिन 301 अभी भी * स्थायी * है, और अगर रीडायरेक्ट का इरादा नहीं है तो इसका उपयोग नहीं किया जाना चाहिए स्थायी। चूंकि यह स्थायी है, यह डिफ़ॉल्ट रूप से कैच करने योग्य है जैसा कि https://tools.ietf.org/html/rfc2616#section-10.3.2 –

+0

301 में परिभाषित किया गया है * स्थायी * (यह केवल डिफ़ॉल्ट कैशिंग नियम है)। Http://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-24#section-6.4.2 के अनुसार 'ए 301 प्रतिक्रिया कैशबल है जब तक कि अन्यथा इंगित नहीं किया गया [...] स्पष्ट कैश नियंत्रण ' जहां 'स्पष्ट कैश नियंत्रण' का अर्थ है 'कैश-कंट्रोल' और संबंधित शीर्षलेख। – Gili

8

ऐसी परिस्थितियों में जहां आप 301 रीडायरेक्ट का व्यवहार करना चाहते हैं, जैसे ब्राउजर बुकमार्क्स अपडेट करना और Google बॉट में यूआरएल में परिवर्तन करना, लेकिन साथ ही रीडायरेक्ट को ट्रैक करना या किसी अन्य प्रकार की कार्यक्षमता करना चाहते हैं हमेशा कैश नियंत्रण हेडर जोड़ सकते हैं "कोई कैश" को

HTTP/1.0 301 Moved Permanently 
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
Expires: Sat, 26 Jul 1997 05:00:00 GMT 
Location: http://example.com 

php में यह इस तरह दिखता है:

header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0'); 
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); 
header('Location:'.$url, true, 301); 

संबंधित: https://stackoverflow.com/a/19003320/175071

संबंधित मुद्दे