แคชหน่วยความจำ Chrome เทียบกับแคชดิสก์


103

ฉันสนใจแคชหน่วยความจำ Chrome เทียบกับดิสก์แคชหรือไม่ ฉันใช้ webpack ซึ่งเป็นปลั๊กอินส่วนใหญ่และสร้างไฟล์ทั้งหมดของฉันด้วย chunkhash

หน่วยความจำแตกต่างจากดิสก์แคชอย่างไร เมื่อฉันโหลดหน้าของฉันใหม่ไฟล์บางไฟล์จะถูกโหลดจากแคชหน่วยความจำและบางไฟล์จากแคชของดิสก์ (bundle.js และ image.jpg จากแคชหน่วยความจำและ css จากดิสก์แคช) บางครั้งมันก็แตกต่างกัน เราควบคุมได้ไหมเลือกสิ่งที่โหลดจากที่ไหน แคชหน่วยความจำดูเหมือนจะเร็วกว่าแคชของดิสก์


1
สวัสดี Igor สิ่งนี้ทำให้เกิดปัญหาในการโหลดกับ webpack หรือไม่? คุณแก้ปัญหานั้นอย่างไร?
เพลิดเพลินไปกับ

1
ไม่มีปัญหาใด ๆ นี่เป็นเพียงฟังก์ชันแคชของเบราว์เซอร์ที่แคชไฟล์มัดของเว็บแพ็ก
Igor-Vuk

สวัสดี Igor ฉันเห็นว่านี่เป็นปัญหาเมื่อไฟล์ที่แถมมาบางไฟล์ถูกโหลดจากดิสก์และบางไฟล์จากหน่วยความจำ มันแสดงข้อผิดพลาด JSONP เมื่อสิ่งนั้นเกิดขึ้น สิ่งนี้เกิดขึ้นในบางกรณีเท่านั้น
เพลิดเพลิน

คำตอบ:


84

เช่นเดียวกับชื่อของพวกเขากล่าวว่า:

"แคชหน่วยความจำ" จัดเก็บและโหลดทรัพยากรเข้าและออกจากหน่วยความจำ (RAM) ดังนั้นนี่จึงเร็วกว่ามาก แต่ไม่ถาวร เนื้อหาสามารถใช้ได้จนกว่าคุณจะปิดเบราว์เซอร์

"Disk Cache" ยังคงอยู่ ทรัพยากรที่แคชจะถูกจัดเก็บและโหลดเข้าและออกจากดิสก์

การทดสอบอย่างง่าย: เปิด Chrome Developper Tools / Network โหลดหน้าซ้ำหลาย ๆ ครั้ง คอลัมน์ของตาราง "ขนาด" จะบอกคุณว่าไฟล์บางไฟล์ถูกโหลด "จากแคชหน่วยความจำ" ตอนนี้ปิดเบราว์เซอร์เปิด Developper Tools / Network อีกครั้งและโหลดหน้านั้นอีกครั้ง ไฟล์แคชทั้งหมดจะถูกโหลด "จากดิสก์แคช" ในขณะนี้เนื่องจากแคชหน่วยความจำของคุณว่างเปล่า


4
ฉันไม่รู้ว่ามันง่ายขนาดนั้น
Faizan Anwer Ali Rupani

31
เบราว์เซอร์กำหนดสินทรัพย์ที่จะจัดเก็บใน Memory Cache เทียบกับ Disk Cache ได้อย่างไร
chharvey

12
เรากำหนดค่าสิ่งที่ควรแคชในหน่วยความจำแคชได้ไหม
Igor-Vuk

1
ฉันมีไอเทนบางตัวในแอพเชิงมุมของฉันที่โหลดจากดิสก์เมื่อฉันเรียกใช้ภายในเครื่องไฟล์เหล่านี้จะไม่ถูกแคชเลย เฉพาะแคชจากหน่วยความจำเท่านั้นที่ทำงานบนสภาพแวดล้อมการผลิต พวกคุณรู้หรือไม่ว่าอะไรเป็นสาเหตุของมัน?
Rafael Andrade

@RafaelAndrade โปรดทราบว่าเชิงมุมมีหลายสภาพแวดล้อม (ใน src / สภาพแวดล้อม / *. ts) environment.prod.ts กำหนดสภาพแวดล้อมการสร้าง productiv ของคุณโดยที่ environment.ts กำหนด env การพัฒนาโลคัลของคุณ ในการพัฒนาท้องถิ่นโดยส่วนใหญ่คุณไม่ต้องการไฟล์แคชเพื่อให้การเปลี่ยนแปลงในเครื่องของคุณมีผลกับแอปของคุณเสมอ
Ruwen

18

Chrome ใช้แคชในหลายระดับของนามธรรม ที่แกนกลางมีแคช HTTP (เบราว์เซอร์) ซึ่งเป็นแบ็กเอนด์สำหรับกลไกการแคชอื่น ๆ โดยทั่วไปแคชสามารถแบ่งออกเป็น:

  • แคช HTTP
  • แคชพนักงานบริการ
  • กะพริบแคช

แคช HTTP

ขอทุกที่ทำผ่านเครือข่ายเป็นพร็อกซี HTTP แคชยึดมั่นในRFC เมื่อถูกร้องขอในครั้งแรกแคชจะถูกเขียนทับ ทรัพยากรจะถูกคีย์โดย URL ต้นทาง

แคชผู้ปฏิบัติงานบริการ

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

กะพริบแคช

Blink ใช้ Http Cache เป็นแบ็กเอนด์ในสองโหมดการสร้าง - ในหน่วยความจำและแบบง่าย (ระบบไฟล์) จะใช้อันไหนขึ้นอยู่กับการ จำกัด ที่ตั้งไว้ทั่วโลกสำหรับแคชว่าสามารถใช้หน่วยความจำได้เท่าใด นอกจากนี้แคชของเรนเดอร์ปัจจุบันยังได้รับการแชร์มากที่สุด สิ่งที่แคชคือฟอนต์รูปภาพและสคริปต์ หากการใช้งานหน่วยความจำส่วนกลางถึงขีด จำกัด ที่ระบุระบบไฟล์แบ็กเอนด์จะถูกใช้

บังคับในแคชหน่วยความจำ

หากคุณต้องการให้ไฟล์ของคุณได้รับการบริการจากกลไกเริ่มต้นที่แทนที่หน่วยความจำคุณสามารถใช้ Service Worker ของคุณเองได้ การใช้ File Api สามารถอ่านและจัดเก็บทรัพยากรลงในวัตถุในหน่วยความจำได้ จากนั้นการลบล้างเหตุการณ์การดึงข้อมูลจะระงับเครือข่ายและไฟล์ที่อ่านด้วยเนื้อหาที่มาจากอ็อบเจ็กต์ส่วนกลางนี้

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