2011-01-12 31 views
21

Tôi đang làm việc trên JavaScript cho một trang web, phát triển với Firefox và khi tôi làm mới trang, tôi không thấy các thay đổi của mình. Tệp JavaScript nằm trong tệp bên ngoài. Tôi đã tải lại và làm mới trang nhiều lần, nhưng tệp JavaScript cũ vẫn được lưu trong bộ nhớ cache. Cuối cùng, tôi đã tải trang JavaScript trực tiếp trên trình duyệt, xem tập lệnh cũ, nhấn 'tải lại' và thấy các thay đổi của tôi.JavaScript được lưu trong bộ nhớ cache rõ ràng bao gồm trong Firefox

Làm cách nào để xóa các tệp JavaScript bên ngoài được lưu trong bộ nhớ cache? Tôi cũng cần phải biết điều này khi tôi nói với khách hàng rằng các thay đổi được thực hiện, để họ không nhìn thấy chức năng được lưu trong bộ nhớ cache cũ.

Trả lời

14

Trong Firefox, bạn có thể cài đặt một plugin gọi Web Developer Toolbar trong đó có một lệnh appcache clear

Tôi nghĩ rằng không có cách nào để làm điều đó bằng chương trình nhưng bạn có thể đưa ra một gợi ý để trình duyệt sử dụng một cái gì đó giống như

<script type="text/javascript" src='js/my.js?x=<?php echo rand(0,100) ?>'></script> 
+3

Đôi khi tôi cũng sử dụng điều này, khi tôi muốn tất cả người dùng hiện tại nhận nội dung mới. Tuy nhiên, tôi khuyên bạn nên sử dụng 'filemtime ('js/my.js')' thay vì chỉ giá trị ngẫu nhiên. – Thai

+2

Tôi thấy rằng tùy chọn 'tắt bộ nhớ đệm' trên Thanh công cụ dành cho nhà phát triển web hoạt động cho tôi :) – user151841

+0

Ví dụ này là để kiểm tra nhanh. Bạn có thể làm mới tệp JS thông qua thanh địa chỉ trình duyệt web. Ví dụ:

1. Giả sử bạn đang ở trang web www.foo.com 2. Tệp JS, bar.js, được bao gồm và lưu trữ tại thư mục gốc 3. Trang web đang lưu vào bộ nhớ cache phiên bản cũ của site 4. Hiển thị tệp JS trực tiếp trong trình duyệt bằng chuỗi truy vấn ngẫu nhiên (ví dụ: www.goo.com/bar.js?random=random) 5. Trình duyệt hiện đang sử dụng phiên bản cập nhật của tệp JS. –

9

Trình duyệt có các tiện ích hướng đến người dùng để xóa bộ nhớ cache. Thông thường nó là một tùy chọn menu ở đâu đó. Bạn không thể buộc bộ nhớ cache bị xóa.

gì bạn thể làm là sắp xếp cho các kịch bản của bạn được nạp từ các URL khác nhau tùy theo số phiên bản (hoặc bất kỳ):

<script src='http://your.site.com/js/big_script.js?version=2'></script> 

Bây giờ khi bạn cập nhật mã, bạn nên cập nhật các trang sử dụng nó:

<script src='http://your.site.com/js/big_script.js?version=3'></script> 

Đó là một URL khác và URL sẽ không nằm trong bộ nhớ cache.

+0

+1 cho giải pháp giúp người dùng cuối của bạn không nhận được Javascript cũ. – hangtwenty

6

Kỹ thuật rất phổ biến là sử dụng thông số chuỗi truy vấn. Có thể trông giống như

<script src="http://www.somedomain.com/foobar.js?v=1></script> 

Nếu bạn thay đổi dòng này thành v=2, trình duyệt sẽ tải lại tập lệnh nếu được lưu trong bộ nhớ cache trước đó.

1

Shift-tải lại thường xóa bộ nhớ cache tích cực hơn. Tuy nhiên, bạn thực sự không muốn dựa vào điều này. Một kỹ thuật tốt là phiên bản tên tệp của Javascript bên ngoài của bạn và cập nhật HTML đề cập đến chúng khi bạn rev. Bằng cách đó, bạn cũng có thể dựa vào bộ nhớ đệm tốt hơn (ví dụ: đặt tiêu đề bộ nhớ cache thành "công khai" trong máy chủ web của bạn và cũng chỉ định thời gian hết hạn dài).

13
  • web developer toolbar add-on có tùy chọn cho phép bạn tắt bộ nhớ đệm.
  • Firebug cũng thực hiện việc này. Nó nằm trong menu của bảng điều khiển Net và được gọi là Tắt bộ nhớ cache của trình duyệt.

Để nhớ cache bỏ qua cho một lần trong Firefox:

  • Nhấp vào nút tải lại trong khi giữ shift then chốt.
  • Ctrl +F5
  • Ctrl +phím Shift +R hoặc Cmd + phím Shift +R
  • for other browsers

dịch vụ lưu trữ web Một số làm cache trang phía máy chủ. Khi bỏ qua bộ nhớ cache, các trình duyệt web sẽ gửi một tiêu đề để báo cho máy chủ biết rằng nó sẽ không phản hồi với dữ liệu được lưu trong bộ nhớ cache.

Các vấn đề liên quan