ดังนั้น ปัญหาที่ฉันกำลังเผชิญอยู่ก็คือ NGINX ในระบบของฉันยังคงแคชไฟล์วิดีโอขนาดใหญ่ไว้ในหน่วยความจำเมื่อมีการร้องขอ HTTP สิ่งนี้ทำให้ NGINX ใช้หน่วยความจำ 20GB+ และฉันต้องเรียกใช้ ซิงค์; เสียงสะท้อน 1 > /proc/sys/vm/drop_caches
(ล้างแคชเพจ) บ่อยครั้งเพื่อหยุดการแลกเปลี่ยนอย่างต่อเนื่อง ฉันได้ระบุการกำหนดค่าที่เกี่ยวข้องไว้ด้านล่าง
nginx.conf
ตำแหน่ง /ป้องกัน/ {
ภายใน;
นามแฝง /usr/share/nginx/html/videos/;
}
script.php
ดาวน์โหลดฟังก์ชัน (){
เส้นทาง $ส่วนกลาง, $fname;
$file = "$เส้นทาง/$fname";
ส่วนหัว ("ประเภทเนื้อหา: วิดีโอ / mp4");
header("ความยาวของเนื้อหา:" .filesize($file));
header('การจัดการเนื้อหา: ไฟล์แนบ; filename="'.$fname.'"');
ส่วนหัว ("X-Accel-Redirect: /protected/$fname");
ทางออก;
}
สิ่งที่ฉันได้ลองใน nginx.conf:
ปิดการส่งไฟล์;
if_modified_since ปิด;
หมดอายุ;
etag ปิด;
proxy_no_cache 1;
proxy_cache_bypass 1;
ปิด open_file_cache;
ป.ล.: ฉันกำลังคำนวณการใช้หน่วยความจำสำหรับไฟล์เหล่านี้โดยใช้ pcstat และ fincore ไฟล์ MP4 เหล่านี้จะถูกแคช 100% เมื่อผู้ใช้ดู และแต่ละไฟล์มีขนาด 5GB+