บังคับเฉพาะไฟล์ JavaScript ที่ให้ความสดชื่นใน Firefox และ Chrome


64

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

ฉันจะล้าง / รีเฟรชไฟล์ JavaScript ที่โหลดลงในเบราว์เซอร์ของฉันโดยไม่ต้องล้างไฟล์อื่น ๆ ได้อย่างไร?

คำตอบ:


42

ฉันทำสิ่งนี้เพื่อการพัฒนา ผมใช้+Ctrl F5มันเหมือนกำลังรีเฟรช การรีเฟรชหน้านี้รวมถึงการดาวน์โหลดไฟล์ JavaScript หรือไฟล์ CSS ที่อ้างอิงถึงแม้ว่าจะถูกแคช

จะไม่ล้างสิ่งใด ๆ เช่นประวัติการเข้าชมของคุณ

แต่โปรดทราบว่าแม้ว่าฉันจะรู้ว่ามันใช้งานได้ใน Firefox และอาจเป็น Internet Explorer แต่ฉันไม่แน่ใจว่าCtrl+ F5ทำงานใน Chrome ด้วยวิธีเดียวกันหรือไม่

นอกจากนี้iegikพูดว่า:

ในบางเบราว์เซอร์คุณสามารถใช้ ` Ctrl+ Shift+ Rเพื่อทำงานเดียวกัน


ที่ดี! ฉันจะเปลี่ยนคำตอบที่ได้รับการยอมรับกับคุณเพราะคุณเป็นวิธีการแก้ปัญหาที่ง่าย
Graviton

ฉันขอบคุณที่ ... แต่โปรดทราบว่าแม้ว่าฉันจะรู้ว่างานนี้ใน Firefox และอาจเป็น IE ฉันไม่แน่ใจว่า CTRL-F5 ทำงานในลักษณะเดียวกันกับ Chrome หรือไม่
7wp

2
เช่นเดียวกันกับ Chrome 21 เบต้าใน Win7 การรีเฟรชหน้าด้วย ctrl-f5 ไม่ได้ร้องขอไฟล์ JS อีกครั้ง (ฉันใช้ Charles เพื่อยืนยันซ้ำอีกครั้ง)
Artem Russakovskii

1
จริง ๆ แล้วโครเมียมถือว่า ctrl + f5 แรกเป็นรีเฟรชปกติโดยการออกแบบ ctrl + f5 ที่ตามมา (มากกว่าหนึ่ง) ในระยะเวลาอันสั้นจะบังคับให้โหลดแหล่งที่มาทั้งหมด
Zeela

1
สำหรับ Chrome, F12 และคลิกขวาที่ปุ่มโหลดใหม่ superuser.com/questions/220179/…
Cees Timmerman

50

ด้วย Chrome:

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

ปิดใช้งานแคชใน Chrome 15 ขึ้นไป

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


ขอบคุณสำหรับเคล็ดลับ - ฉันเพิ่งตรวจสอบและตัวเลือกนั้นอยู่ใน Chrome 14 ด้วย
keybits

Genius! นั่นเป็นการค้นพบที่ยอดเยี่ยม
Randomblue

ยอดเยี่ยมฉันกำลังมองหาสิ่งนี้
Artem Russakovskii

... และอย่าลืมยกเลิกการเลือกตัวเลือกหลังจากคุณทำเสร็จแล้ว
Halil Özgür

ครั้งที่สองดูเหมือนว่าตัวเลือกเหล่านี้จะใช้งานได้เฉพาะเมื่อมองเห็น devtools: twitter.com/ChromiumDev/status/227356682890670080 (จากstackoverflow.com/a/7000899/372654 )
Halil Özgür

8

ฉันไม่เห็นด้วยกับ @ 7wp เนื่องจากผู้ใช้ของคุณบางคนไม่คุ้นเคยกับฟังก์ชั่นCtrl+ F5และบางคนไม่ได้ตระหนักถึงความแตกต่างระหว่างเบราว์เซอร์และแม้แต่การมีอยู่ของเบราว์เซอร์อื่น ๆ (เช่นผู้สูงอายุ) คุณควรบังคับให้เบราว์เซอร์ดาวน์โหลดสำเนาใหม่ ไฟล์ JS / CSS

ทางออกที่ดีที่สุดที่นี่คือการเพิ่มการประทับเวลาในตอนท้ายของ. js / .css ชื่อไฟล์หรือเพิ่มรุ่น svn ซึ่งเป็นความคิดที่ดีเช่นกัน

<script src="js/myfile.js?t=<?=time()?>" type="text/javascript"></script>

5

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

ใน Firefox 3.5 ไปที่

เครื่องมือ»ล้างประวัติล่าสุด ...

จากนั้นตรวจสอบให้แน่ใจว่าได้เลือกเฉพาะ "แคช" ก่อนเลือก "ล้างทันที"

ใน Chrome (ไม่รู้ว่าคุณกำลังใช้รุ่นใดโดยเฉพาะเมื่อฉันใช้ dev builds) ไปที่

ไอคอนเครื่องมือ (เครื่องมือ) »ตัวเลือก»แท็บรายการส่วนตัว»ล้างข้อมูลการท่องเว็บ ...

ตรวจสอบอีกครั้งว่า "ล้างแคช" เท่านั้น

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


โหมดไม่ระบุตัวตนน่าจะเป็นวิธีในการใช้ Chrome
mdoar

1

ฉันได้ใช้เคล็ดลับเล็ก ๆ น้อย ๆ ในเว็บไซต์ที่ฉันกำลังทำงาน ... ด้วยเหตุผลเดียวกับคุณ ฉันทำการเปลี่ยนแปลงเล็กน้อยและมีรหัส JavaScript โหลดโดยรหัส JavaScript และต้องการตรวจสอบให้แน่ใจว่าฉันทำงานกับสคริปต์ปัจจุบัน (ไม่ใช่แคช) เสมอ

ลองสร้างโค้ด JavaScript ที่คุณกำลังโหลดลงในไฟล์ PHP ... เพียงแค่ใส่<?php ?>ที่จุดเริ่มต้นและใส่ส่วนขยายของ. php

var fileref = document.createElement('script');
fileref.setAttribute("type", "text/javascript");

// The Date added to the file doesn't effect the results but
// helps Internet Explorer be sure to refresh the data and
// not use cache

var d = new Date();

var t = d.getTime();

fileref.setAttribute("src", filename + ".php?date=" + t);

fileref.setAttribute("id", filename);

เนื่องจากการเปลี่ยนชื่อ Internet Explorer คิดว่าเป็นไฟล์ใหม่;)


1
ไม่จำเป็นต้องเปลี่ยนชื่อเป็น '.php' หากคุณใส่ 'filename.js? t =' + t ผลลัพธ์จะเหมือนกัน คุณสามารถทำได้ด้วย '.css' ด้วย ระบบการผลิตทั้งหมดของเราใช้เคล็ดลับนี้เพื่อรับรองว่าลูกค้าใช้ไฟล์เนื้อหาที่ถูกต้อง
Leonel Martins

1
ตามที่ทราบเรามักจะใช้หมายเลขการแก้ไข SVN แทนวันที่ / เวลา ด้วยวิธีนี้เราจะได้รับประโยชน์แคชและรีเฟรชเฉพาะเมื่อเรากระทำจริง
Groo

ขอบคุณมาก! เคล็ดลับนี้ทำให้ฉันหมดใจ ฉันต่อสู้กับปัญหานี้มาหลายวันแล้วและมันจะทำเพื่อฉัน ฉันเพิ่งวางส่วนท้ายของ url: "? <? php echo time ()?>"
thrashr888

1

ใน Chrome คุณสามารถกดCtrlและคลิกปุ่มรีเฟรช ฉันค้นพบสิ่งนี้โดยบังเอิญ


นี่เป็นการรีเฟรชทั้งหน้าอย่างหนักฉันไม่คิดว่าจะรีเฟรช Javascript เท่านั้น
Ivo Flipse

1

ฉันเปิดไฟล์ JavaScript ในแท็บแยกต่างหาก, Shift+ รีเฟรช, ตรวจสอบว่าฉันเห็นการเปลี่ยนแปลงล่าสุดแล้ว, Shift+ รีเฟรชหน้าจริง (ในกรณีของฉัน, เฟรมในเฟรมเซต, ซึ่งดูเหมือนจะทำให้เรื่องแย่ลง) ใช้งานได้เกือบตลอดเวลา


0

ฉันไม่ได้ใช้ด้วยตัวเอง แต่ Firefox "Add Cache Button"อาจใช้งานได้ ฉันอ่านเอกสารของพวกเขาดังนั้นฉันไม่แน่ใจว่ามันล้างประวัติการเข้าชมของคุณด้วยหรือไม่


0

ไปที่การตั้งค่าเนื้อหาใน Chrome ปิดการใช้งาน JavaScript และบันทึก

จากนั้นเปิดใช้งาน JavaScript อีกครั้ง


0

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


ยินดีต้อนรับสู่ Super User! โปรดอ่านคำถามอีกครั้งอย่างระมัดระวัง คำตอบของคุณไม่ตอบคำถามเดิม
DavidPostill


0

เพิ่มฟังก์ชั่นวันที่แบบไดนามิกในตอนท้ายของไฟล์ JavaScript ของคุณ มันจะบังคับให้เบราว์เซอร์โหลดไฟล์ JavaScript ที่อัปเดต หมายความว่าเมื่อรวมไฟล์. js คุณสามารถเพิ่ม .... xyz.js?

< ? php echo date('l jS \of F Y h:i:s A') ? >

แน่นอนว่าสิ่งนี้อาจถูกลบออกเมื่อการดีบักเสร็จสิ้นและพร้อมใช้งานจริง


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