อย่างน้อยสองเบราว์เซอร์ - Chrome และ Firefox - แคชจะเปลี่ยนเส้นทาง 301 ด้วยไม่มีวันหมดอายุ
นั่นคือมันจะยังคงถูกแคชไว้ตราบเท่าที่แคชของเบราว์เซอร์สามารถรองรับได้ จะถูกลบออกจากแคชหากคุณล้างแคชด้วยตนเองหรือหากรายการแคชถูกลบทิ้งเพื่อให้มีที่ว่างสำหรับรายการใหม่
คุณสามารถยืนยันสิ่งนี้ได้อย่างน้อยใน Firefox โดยไปที่ about:cache
และค้นหาภายใต้ดิสก์แคช
ฉันไม่รู้เกี่ยวกับพฤติกรรมของเบราว์เซอร์อื่นเช่น IE10 / IE11 อย่างไรก็ตามเนื่องจากเบราว์เซอร์อื่น ๆ ทำการแคชแคชไปเรื่อย ๆ คุณจะต้องรองรับสิ่งนี้ต่อไป
ในเบราว์เซอร์ทั้งหมดรวมถึง Chrome / Firefox ยังคงเป็นไปได้ที่จะแทนที่พฤติกรรมเริ่มต้นนี้โดยใช้ส่วนหัวตามที่อธิบายไว้ด้านล่าง:
หมายเหตุ: คำตอบนี้เขียนขึ้นในปี 2014 และพฤติกรรมของเบราว์เซอร์อาจเปลี่ยนแปลงตลอดเวลา
หากคุณไม่ต้องการให้การเปลี่ยนเส้นทางถูกแคช
การแคชที่ไม่ จำกัด นี้เป็นเพียงการแคชเริ่มต้นโดยเบราว์เซอร์เหล่านี้ในกรณีที่ไม่มีส่วนหัวของการควบคุมแคช ตรรกะคือคุณกำลังระบุการเปลี่ยนเส้นทาง "ถาวร" และไม่ให้คำแนะนำการแคชอื่น ๆ แก่พวกเขาดังนั้นพวกเขาจะปฏิบัติกับมันราวกับว่าคุณต้องการแคชไว้อย่างไม่มีกำหนด
เบราว์เซอร์ยังคงให้เกียรติ Cache-Control และ Expires header เหมือนกับการตอบสนองอื่น ๆ หากมีการระบุไว้
คุณสามารถเพิ่มส่วนหัวเช่นCache-Control: max-age=3600
หรือExpires: Thu, 01 Dec 2014 16:00:00 GMT
เปลี่ยนเส้นทาง 301 ของคุณ คุณสามารถเพิ่มได้Cache-Control: no-cache
ดังนั้นเบราว์เซอร์จะไม่ถูกแคชถาวรหรือCache-Control: no-store
ไม่สามารถจัดเก็บในที่จัดเก็บชั่วคราวได้
อย่างไรก็ตามทางเลือกที่ดีกว่าในความคิดของฉันคือการใช้การเปลี่ยนเส้นทาง 302 หรือ 307 สิ่งเหล่านี้ไม่ได้หมายถึงเบราว์เซอร์หรือแคชว่าเป็นการเปลี่ยนเส้นทางแบบ "ถาวร" ดังนั้นจึงไม่ควรใช้แคชในส่วนที่ไม่มีส่วนหัวของตัวควบคุมแคช
สำหรับฉันแล้วดูเหมือนว่าการออกการเปลี่ยนเส้นทาง 301 แต่การทำเครื่องหมายว่าไม่สามารถแคชได้นั้นขัดแย้งกับจิตวิญญาณของการเปลี่ยนเส้นทาง 301 สำหรับการใช้งานแม้ว่ามันจะใช้ได้ในทางเทคนิคก็ตาม YMMV และคุณอาจพบว่ามีกรณีขอบที่เหมาะสมสำหรับการเปลี่ยนเส้นทาง "ถาวร" เพื่อให้มีการ จำกัด เวลา
หากก่อนหน้านี้คุณได้ออกการเปลี่ยนเส้นทาง 301 แต่ต้องการยกเลิกสิ่งนั้น
หากผู้คนยังคงมีการเปลี่ยนเส้นทาง 301 ที่แคชไว้ในเบราว์เซอร์พวกเขาจะยังคงถูกนำไปยังหน้าเป้าหมายโดยไม่คำนึงว่าหน้าแหล่งที่มานั้นยังคงมีการเปลี่ยนเส้นทางอยู่ ตัวเลือกของคุณสำหรับการแก้ไขนี้รวมถึง:
ทางออกที่ง่ายและดีที่สุดคือการออก 301 redirect อีกครั้ง
เบราว์เซอร์จะรู้ว่ามันกำลังถูกนำกลับไปยังสิ่งที่คิดก่อนหน้านี้ว่าเป็น URL ที่ไม่รับผิดชอบและสิ่งนี้จะทำให้มันดึง URL นั้นอีกครั้งเพื่อยืนยันว่าการเปลี่ยนเส้นทางเก่ายังไม่อยู่ที่นั่น
แก้ไข: ความคิดเห็นบางอย่างทำให้เกิดข้อสงสัยดูด้านล่าง
หากคุณไม่สามารถควบคุมไซต์ที่เป้าหมายการเปลี่ยนเส้นทางก่อนหน้านี้ไปแสดงว่าคุณโชคดี ลองและขอให้เจ้าของเว็บไซต์เปลี่ยนเส้นทางกลับมาหาคุณ
การป้องกันยังดีกว่าการรักษา - หลีกเลี่ยงการเปลี่ยนเส้นทาง 301 หากคุณไม่แน่ใจว่าคุณต้องการยกเลิกการมอบหมาย URL เก่าอย่างถาวร