Chrome แคชไฟล์ที่ดาวน์โหลดหรือไม่


4

ค่อนข้างแปลกประหลาด

ใน webapp ของฉันฉันมีลิงก์ไปยังสเปรดชีตที่เก็บไว้ใน S3 ฉันได้ลดไฟล์ดังกล่าวก่อนหน้านี้ ตอนนี้ฉันอัพเดทไฟล์นั้นใน s3

เมื่อฉันพยายามดาวน์โหลดอีกครั้งจากลิงค์เดียวกันฉันยังคงได้รับเวอร์ชั่นก่อนหน้า

หากฉันล้างแคชมันจะทำการดาวน์โหลดเวอร์ชันที่ใหม่กว่า ...


มันแคชไฟล์ถึงแม้ว่าแคชจะถูกลบบ่อยครั้ง แต่มีโอกาสที่ไฟล์ของคุณจะถูกลบ
MilanorTSW

ด้วยเหตุผลบางอย่างมันจะไม่หายไปหลังจากนั้นเหมือน 10 ชั่วโมง อาจเป็นเพราะฉันดาวน์โหลดลิงค์นั้น 10 หรือ 15 ครั้งในหนึ่งวัน Chrome คิดว่ามันมีประโยชน์สำหรับการแคชเป็นระยะเวลานาน ฉันล้างแคชมันใช้งานได้แล้ว ฉันเดาว่าฉันควร "ปล่อยบันทึก" นี้
thinkanotherone

คืออะไร การตั้งค่า HTTP หมดอายุและแคช สำหรับหน้าเว็บแอปที่คุณเชื่อมโยงไปยังไฟล์ใน S3
Ƭᴇcʜιᴇ007

คำตอบ:


2

คุณมีสองทางเลือกในการแก้ไข:

  1. คุณสามารถบอก Amazon ถึงวิธีการตั้งค่า Cache-Control ส่วนหัวเมื่อดึง URL ของคุณ เช่นเดียวกับที่คุณระบุ Content-Type ส่วนหัวคุณสามารถควบคุมส่วนหัวอื่น ๆ ได้เช่นกัน คุณสามารถเปลี่ยนการแคชลงเป็นช่วงเวลาที่สั้นลง

  2. คุณสามารถควบคุมการแคชของเว็บเพจที่ลิงก์ไปยังไฟล์บน S3 และแก้ไขลิงก์ไปยังไฟล์ S3 เพื่อที่เนื้อหาของมันจะไม่ถูกใช้จากแคชเมื่อไฟล์นั้นเปลี่ยนแปลง โดยทั่วไปคุณสามารถใส่ ?version=1 ในตอนท้ายของ URL หากคุณเปลี่ยนเป็น ?version=2 (และอื่น ๆ ) เบราว์เซอร์จะไม่ใช้ไฟล์เวอร์ชันแคชเนื่องจาก URL นั้นไม่ตรงกัน

วิธีที่สองนี้ช่วยให้คุณใช้การแคชที่ก้าวร้าวในไฟล์ S3 และหลีกเลี่ยงการสูญเสียการถ่ายโอน แต่คุณต้องแก้ไขทุกเว็บเพจที่เชื่อมโยงไปยังไฟล์ทุกครั้งที่คุณเปลี่ยนเนื้อหาของไฟล์

ดู ลดค่า Amazon S3 Bill ของคุณ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเทคนิคทั้งสองแม้ว่าคุณจะพยายามได้ผลที่ตรงกันข้าม


1

ใช่. ฉันมีปัญหาเดียวกันแม้ว่าฉันจะไม่ได้ใช้ S3 เป็นที่เก็บข้อมูลก็ตาม ฉันมีแอพ Symfony2 ที่ให้บริการเนื้อหาของไฟล์ในเครื่องเพื่อดาวน์โหลด URL นั้นเหมือนกันเสมอเพราะฉันได้รับเนื้อหาของไฟล์ใน PHP และส่งไปยังเบราว์เซอร์ หากฉันแก้ไขเนื้อหาของไฟล์ในเครื่อง Firefox และ IE จะได้รับไฟล์เวอร์ชั่นล่าสุด แต่จะไม่เป็นโครเมียม ฉันพยายามตั้งค่าส่วนหัวควบคุมแคช แต่ไม่ได้ผล Chrome ก็ไม่สนใจ

แนวคิดบางส่วนของส่วนหัวที่ฉันใช้:

$response->headers->addCacheControlDirective('no-cache', true);
$response->headers->addCacheControlDirective('max-age', 0);
$response->headers->addCacheControlDirective('must-revalidate', true);
$response->headers->addCacheControlDirective('no-store', true);

หากฉันเพิ่มหมายเลขรุ่นสุ่มลงใน url (? version = randomIntByTime) Chrome จะบันทึกไฟล์เวอร์ชันล่าสุด มันน่าผิดหวังที่จะเขียนโค้ดพิเศษสำหรับ Chrome


0

ไม่ได้ แต่อาจเป็นไปได้ว่ามีอุปกรณ์แคชอื่นระหว่างคุณกับ S3 เช่นเดียวกับเซิร์ฟเวอร์ ISA ของ Microsoft ซึ่งมีแคชของการรับส่งข้อมูลทางเว็บและฉันเห็นว่ามันทำสิ่งนี้หลายครั้ง


ฉันกำลังเชื่อมต่อจากการเชื่อมต่อ DSL ที่บ้านของฉัน
thinkanotherone

ฉันเดาว่าคุณไม่มีเซิร์ฟเวอร์ ISA แล้ว! แต่คุณสามารถทดสอบทฤษฎีที่ Chrome กำลังแคชไว้โดยใช้ IE หรือ Firefox สำหรับคำขอเดียวกัน หรือเพียงแค่ล้างแคชของ Chrome
Coding Gorilla

ฉันทำ. แต่ฉันเดาว่าฉันหวังว่าจะมีใครบางคนที่รู้จักการทำงานภายใน
thinkanotherone
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.