จะบังคับให้ดีบักเกอร์สคริปต์ของ Chrome โหลด javascript ได้อย่างไร


244

ฉันชอบความสามารถในการแก้ไขจาวาสคริปต์ในตัวแก้ไขข้อบกพร่องของ Chrome แต่ฉันพบว่าอาจเป็นปัญหาจริง ๆ ที่การดีบักเกอร์จะเรียก JavaScript จากเซิร์ฟเวอร์อีกครั้ง

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

(NB. ไม่มีการแคชสคริปต์โดยเว็บเซิร์ฟเวอร์)

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


1
บางครั้งฉันต้องรีสตาร์ท IIS Express เพื่อให้สามารถโหลดซ้ำได้อย่างถูกต้อง
Chris O

คำตอบ:


330

ขณะที่คุณพัฒนาสคริปต์ลองปิดการใช้งานแคช Chrome

เมื่อคุณโหลดหน้านี้ใหม่ JavaScript ควรได้รับการรีเฟรช


Chrome ประมาณปี 2011

เปิดการตั้งค่า ปิดใช้งานแคช


Chrome ประมาณปี 2018

เปิดการตั้งค่า ปิดใช้งานแคช

คุณยังสามารถเข้าถึงได้บนแท็บเครือข่าย:

แท็บเครือข่าย


8
ดังนั้นสิ่งนี้จะใช้ตลอดเวลาหรือเฉพาะเมื่อดีบักเกอร์เปิดอยู่
PilotBob

7
เฉพาะเมื่อมีการเปิดเครื่องมือ Dev
Karolis

11
ฉันได้ตั้งค่าที่พร้อมและตอนนี้ทั้งหมดฉันติดอยู่กับไฟล์บางอย่าง ใครหาวิธีแก้ปัญหา?
IronicMuffin

5
นี่เพิ่งเพิ่มบางปีในชีวิตของฉัน ฉันลองใช้ CMD + SHIFT + R แต่ก็ไม่ได้ทำ ขอบคุณ
Kevin Zych

7
สำหรับผู้ที่จะมาที่คำถามนี้เมื่อเร็ว ๆ นี้โปรดทราบว่าเมนูการตั้งค่าอยู่นอกเมนูจุดสามแนวตั้งในเครื่องมือสำหรับนักพัฒนา คุณจะสามารถทำเครื่องหมายที่ช่องเพื่อปิดใช้งานแคช
Scott C Wilson

136

ป้อนคำอธิบายรูปภาพที่นี่

เมนูบริบทที่แสดงด้านบนสามารถเข้าถึงได้โดยการคลิกขวา /กดปุ่ม "reload" ค้างไว้ขณะที่Chrome Dev Tools เปิดขึ้น

แคชที่ว่างเปล่าและการโหลดซ้ำแบบหนักเหมาะกับฉัน

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


5
อันนั้นมีประโยชน์โดยเฉพาะอย่างยิ่งเพราะมันง่ายที่จะอธิบาย ฉันประสบปัญหากับลูกค้าที่ไม่เห็นการเปลี่ยนแปลงที่เกิดขึ้นบนเว็บไซต์ของเขา กด F12 จากนั้นคลิกขวาที่ปุ่มโหลดเลือก Empty Cache และ Hard Reload ฉันทำเสร็จแล้วไปที่ความคิดเห็นนั้น :-)
Gull_Code

มันเป็นคุณสมบัติโครเมี่ยมที่ดีที่สุด :) ทุกที่ทุกเวลาเพื่อน
Bishoy Hanna

1
ขอบคุณ! ฉันพยายามหาสาเหตุว่าทำไมปุ่มรีโหลดจึงให้เมนูและบางครั้งก็ทำไม่ได้
iconoclast

1
ฉันไม่มีปัญหากับ Ctrl + Shift + R เมื่อทำการโหลดไฟล์ Javascript ใหม่ แต่สิ่งนี้จะไม่นำเนื้อหาที่อัปเดตกลับมาซึ่งให้บริการในไฟล์ HTML กลับมา แคชเปล่าและโหลดซ้ำไม่ได้ทำเพื่อสิ่งนั้น
S. Baggy

วิธีที่ดีที่สุดในการทำเช่นนี้ใช้แคชเปล่านี้และโหลดซ้ำอย่างหนัก
2560

34

คุณสามารถล้างไฟล์ที่ระบุได้ตลอดเวลาโดยทำดังต่อไปนี้:

  1. เปิดเครื่องมือ Dev
  2. คลิกที่แท็บแหล่งที่มา
  3. ค้นหาสคริปต์ / ภาพ / ไฟล์ของคุณ
  4. ตรวจสอบพาเนลที่ถูกต้องเพื่อดูว่าไฟล์ของคุณทันสมัยหรือไม่

ถ้าไม่:

  1. คลิกขวาที่ทรัพยากรในแผงด้านซ้ายและเลือก 'เปิดลิงก์ในแท็บใหม่'
  2. บังคับให้โหลดทรัพยากรซ้ำโดยใช้วิธีการข้างต้น (ดูตัวอย่างของ @Bishoy Hanna)

สิ่งนี้มีประโยชน์มากหากคุณมีทรัพยากรที่อยู่ในกรอบและCTRL+F5ไม่บังคับให้รีเฟรช


1
จริง กด CTRL + F5 = ล้างหน้าปัจจุบันของการรีเฟรชแคช
STEEL

ฉันไม่มีแท็บทรัพยากร
Mike W

@MikeW ได้รับการเปลี่ยนชื่อเป็น Sources - ฉันได้อัปเดตคำตอบแล้ว
Steve Tauber

12

Shift+ F5ล้างแคชอย่างรวดเร็ว


18
ctrl-f5 ไม่ตัดมัสตาร์ดที่ฉันกลัว ไฟล์จาวาสคริปต์เก่ายังคงอยู่ในตัวดีบั๊ก
Chris Fewtrell

9

สำหรับ Google Chrome มันไม่ได้เป็น+Ctrl F5มันShift+ F5เพื่อล้างแคชปัจจุบัน! มันใช้งานได้สำหรับฉัน!


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

2
ผู้ถามไม่ได้พูดถึง ณ จุดใด ๆCtrl-F5ดังนั้นโดยนิยามคำตอบของคุณไม่ใช่คำตอบสำหรับคำถามที่ถามโดยผู้ถามความคิดเห็นมันเป็นการแก้ไขคำตอบของคนอื่น ๆ และควรได้รับการปฏิบัติเช่นนั้น
Edward

9

นี่คือทางลัดไปยัง DevTools:

  1. F12 เพื่อเปิด Chrome DevTools
  2. F1 เพื่อเปิดการตั้งค่า DevTools
  3. ทำเครื่องหมายที่Disable cache (ขณะที่ DevTools เปิดอยู่)ดังแสดงด้านล่าง:

ป้อนคำอธิบายรูปภาพที่นี่

หมายเหตุ: อัปเดตตามความคิดเห็นของ Dimi พวกเขามักจะย้ายมันดังนั้นแจ้งให้เราทราบหรืออัพเดทโพสต์หากคุณสังเกตเห็นว่ามันมีการเปลี่ยนแปลง



2

หากคุณทำการเปลี่ยนแปลงกับจาวาสคริปต์ในเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์คุณต้องแน่ใจว่าคุณปิดการเปลี่ยนแปลงเหล่านั้นก่อนที่จะโหลดหน้าซ้ำ

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


1

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

ฉันจะพิจารณาข้อผิดพลาดนี้ในโครเมี่ยม ฉันใช้เวอร์ชันเวอร์ชัน 46.0.2490.71 m

สิ่งเดียวที่ช่วยได้คือการรีสตาร์ท Chrome (ปิดเบราว์เซอร์ Chrome ทั้งหมด)


0

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

  1. ล้างแคชตามที่ทุกคนบอก

  2. หากคุณต้องการ Cache และต้องโหลดไฟล์ซ้ำคุณสามารถไปที่แท็บเครือข่ายของเครื่องมือ dev และล้างสิ่งที่โหลด ครั้งต่อไปมันจะไม่โหลดจากแคช คุณจะมีการเปลี่ยนแปลงล่าสุดของคุณ


0

หากคุณใช้เซิร์ฟเวอร์ท้องถิ่นบน Apache คุณจะได้รับสิ่งที่ดูเหมือนว่าปัญหาการแคช เรื่องนี้เกิดขึ้นกับฉันเมื่อฉันมีเซิร์ฟเวอร์ Apache ทำงานภายใต้ Vagrant (ในกล่องเสมือน)

เพียงเพิ่มบรรทัดต่อไปนี้ในไฟล์ปรับแต่งของคุณ ( /etc/httpd/conf/httpd.confหรือเทียบเท่า):

#Disable image serving for network mounted drive
EnableSendfile off

โปรดทราบว่ามันมีค่าในการค้นหาผ่านไฟล์ปรับแต่งเพื่อดูว่าEnableSendfileมีการตั้งค่าไว้onที่อื่นหรือไม่


0

นอกจากนี้ยังมีวิธีแก้ไข 2 (ด่วน):

  1. ใช้การดีบักโหมดไม่ระบุตัวตนในการดีบั๊กปิดหน้าต่างและเปิดใหม่
  2. ลบประวัติการเข้าชมของคุณ


0

ในความคิดของฉันง่ายที่สุดในการทำงานใน 'เซสชันการเรียกดูส่วนตัว' ของ chrome เพื่อให้แน่ใจว่าไฟล์จาวาสคริปต์ของคุณไม่ได้มาจากแคช


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