หมดอายุ 410 การตอบสนองใน nginx


0

เบราว์เซอร์แคช 410 Gone ตอบกลับไปเรื่อย ๆ ตามค่าเริ่มต้น 410 โดยไม่ตั้งใจสามารถฆ่า URL ได้ตลอดไป URL อาจถูกคืนค่าอีกครั้งในภายหลังด้วยเหตุผลอื่น ฉันต้องการตั้งค่าexpiresสำหรับยุค 410 เพื่อบังคับให้รีเฟรชเบราว์เซอร์เป็นครั้งคราว มีวิธีที่จะทำกับ nginx หรือไม่?

server {
    # ...
    error_page 410 /errors/410.html;
    location /errors/ {
        internal;
        expires 1h;
    }
    location = /some/file {
        expires 1h;
        return 410;
    }
}

การกำหนดค่าข้างต้นส่งผลให้เกิดการตอบสนองโดยไม่มีคำสั่งควบคุมแคช

คำตอบ:


1

HTTP 410 ตาม Wikipedia หมายถึง

410 Gone - ระบุว่าทรัพยากรที่ร้องขอไม่มีให้บริการอีกต่อไปและจะไม่สามารถใช้งานได้อีก

คุณควรใช้รหัสตอบกลับที่เหมาะสมกว่า 444 "การเชื่อมต่อปิดโดยไม่มีการตอบสนอง" หรือ 404 "ไม่พบ" อาจจะเหมาะสมกว่า แต่นี่เป็นสิ่งที่คุณควรพิจารณา

ฉันไม่ได้มีแนวโน้มที่จะใช้หมดอายุใน Nginx ฉันเพิ่มส่วนหัว สิ่งนี้ทำให้ฉันควบคุมได้มากขึ้นสามารถระบุสิ่งต่าง ๆ เช่น s-maxage ซึ่งควบคุมอายุแคชสูงสุดที่แชร์ ที่ต้องมีการรวบรวมโมดูล headers_more ซึ่งเป็นค่าเริ่มต้นสำหรับบางแพลตฟอร์ม

add_header Cache-Control "public, max-age=691200, s-maxage=691200";

ฉันทดสอบสิ่งนี้แล้ว การแทนที่expiresด้วยadd_headerจะไม่เปลี่ยนส่วนหัวการตอบกลับ
Robert Važan

444 a 302 เป็นรหัสข้อผิดพลาดที่ไม่เหมาะสมอย่างสิ้นหวัง ฉันสามารถเลือกระหว่าง 404 และ 410 410 มีความหมายมากขึ้นและช่วยให้ฉันสามารถแยกความแตกต่าง URL ที่ถูกลบออกจากลิงก์ที่เสียหายในบันทึกการเข้าถึง
Robert Važan

ประเด็นหลักของคำตอบของฉันคือ 410 "หายไป" ไม่เหมาะสมสำหรับเนื้อหาที่อาจกลับมาอีกในอนาคต ใช้รหัสตอบสนองใดก็ตามที่คุณคิดว่าดีที่สุด 404 ดูดี
ทิม

หากคุณต้องการที่จะได้รับในอดีตแคชเบราว์เซอร์ของรหัสสถานะ HTTP 410 แล้วคุณสามารถเพิ่มสตริงแบบสอบถามต่อท้าย URL http://www.example.com/410url?asdfเช่น คุณจะต้องอัปเดต URL ในทุกหน้าของคุณ
Tero Kilkanen

ฉันใช้ 410s สำหรับ URL ที่หายไปอย่างถาวร แต่สามารถเปลี่ยนใหม่ได้ในอนาคต (สำหรับเนื้อหาที่แตกต่าง) และเริ่มส่งคืน 200s อีกครั้ง มีความเป็นไปได้ที่ 410 จะไปlocation /โดยบังเอิญและฉันต้องการจำกัดความเสียหายในกรณีนั้น
Robert Važan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.