2008-11-14 37 views
130

Trong quá trình phát triển, tôi phải "xóa bộ nhớ cache" trong Firefox mọi lúc để sử dụng phiên bản mới nhất của các tệp JavaScript.Làm cách nào để tắt bộ nhớ đệm trên Firefox?

Có một số loại cài đặt (about: config) để tắt hoàn toàn bộ nhớ đệm cho các tệp JavaScript không? Hoặc, nếu không, cho tất cả các tệp?

Trả lời

217

Enter "about: config" vào thanh địa chỉ của Firefox và thiết lập:

browser.cache.disk.enable = false 
browser.cache.memory.enable = false 

Nếu phát triển tại địa phương, hoặc sử dụng thuộc tính biểu hiện mới HTML5 của bạn cũng có thể đã thiết lập sau đây trong about: config -

browser.cache.offline.enable = false 
+0

ý của bạn là nhập about: config và set. Bạn có nghĩa là dán "about: config network.http.use-cache = false" vào thanh địa chỉ? – PositiveGuy

+1

@CoffeeAddict, bạn nhập "about: config" vào thanh địa chỉ. Từ đó bạn có thể tìm kiếm "network.http .use-cache "thiết lập và thay đổi giá trị của nó thành false –

+0

đã nhận được nó, cảm ơn rất nhiều – PositiveGuy

12

Bạn đã cố gắng sử dụng CTRL - F5 để cập nhật trang?

+5

Tôi thực sự nghi ngờ rằng điều này hoạt động đáng tin cậy, ít nhất là trong sự hiện diện của iframe và bộ khung. – Thilo

+2

chính xác, không phải lúc nào cũng tải lại JS/CSS trong khung nội tuyến, nhưng trong Firefox, bạn có thể ít nhất bật khung đó vào một tab mới và tải lại ở đó. – scunliffe

+4

Ctrl-F5 không hoạt động đáng tin cậy. – Haozhun

3

Bạn có thể sử dụng tổ hợp phím CTRL - F5 để tải lại bỏ qua bộ nhớ cache.

Bạn có thể thiết lập các ưu đãi trong firefox không sử dụng bộ nhớ cache

network.http.use-cache = false 

Bạn có thể thiết lập máy chủ web bạn để gửi một no-cache/Expires/Cache-Control tiêu đề cho các tập tin js.

Đây là một example dành cho máy chủ web apache.

+0

là shift-f5 hoặc ctrl-f5? – Thilo

+0

+1 cho liên kết Apache – Pascal

3

Chiến lược tốt nhất là thiết kế trang web của bạn để tạo URL duy nhất cho các tệp JS của bạn, được đặt lại mỗi khi có thay đổi. Bằng cách đó, nó lưu trữ khi không có thay đổi, nhưng tải lại một cách im lặng khi có thay đổi xảy ra.

Bạn cần điều chỉnh cho các công cụ môi trường cụ thể của mình, nhưng nếu bạn đang sử dụng PHP/Apache, đây là giải pháp tuyệt vời cho cả bạn và người dùng cuối.

http://verens.com/archives/2008/04/09/javascript-cache-problem-solved/

7

Nếu bạn đang làm việc với mã phía máy chủ, bạn có thể tạo ra một số ngẫu nhiên và gắn nó vào cuối src theo cách sau đây ....

src = "yourJavascriptFile. js? randomNumber = 434534 "

với randomNumber được tạo ngẫu nhiên mỗi lần.

+0

Đây là giải pháp duy nhất đã hoạt động đối với tôi ngoài việc xóa bộ nhớ cache của trình duyệt theo cách thủ công mỗi khi tôi làm mới. – Curtis

61

Web Developer Toolbar có tùy chọn tắt bộ nhớ đệm giúp bạn dễ dàng bật và tắt tính năng này khi cần.

+1

CTRL-F5 hoặc giữ phím shift trong khi nhấp vào nút Tải lại là những gì tôi đã làm trong quá khứ, nhưng tính năng "Tắt bộ nhớ cache" của Thanh công cụ dành cho nhà phát triển web là một cách tuyệt vời để thực hiện điều đó. Bạn không phải hoàn toàn vô hiệu hóa bộ nhớ cache của firefox theo cách đó. –

+1

Bạn nên nhớ bật bộ nhớ cache sau khi thử nghiệm. ;) – neurolabs

+1

@Shanimal, Nó hoạt động cho tôi trong 14.0.1, bạn có thể muốn gỡ bỏ cài đặt/cài đặt lại hoặc một cái gì đó. – Lucas

1

tôi sử dụng CTRL - SHIFT - DELETE đó kích hoạt tính năng bảo mật, cho phép bạn xóa bộ nhớ cache của bạn, đặt lại cookie, vv, tất cả cùng một lúc. Bạn thậm chí có thể cấu hình nó để nó chỉ làm nó, thay vì bật lên một hộp thoại yêu cầu bạn xác nhận.

4

Tôi biết tôi đang hồi sinh một câu hỏi cổ, nhưng hôm nay tôi đã cố gắng giải quyết vấn đề này và có giải pháp thay thế. Toggling bộ nhớ đệm khi tôi muốn thử nghiệm đã không thực sự chấp nhận được đối với tôi, và như những người khác đã đề cập, làm mới khó khăn (ctrl + shift + r) không phải lúc nào cũng hoạt động.

Thay vào đó, tôi đã lựa chọn để đặt sau đây trong tập tin vhost.conf của tôi (cũng có thể được thực hiện trong .htaccess) trên môi trường dev của tôi:

<FilesMatch "\.(js|css)$"> 
FileETag None 
<IfModule mod_headers.c> 
Header unset ETag 
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate" 
Header set Pragma "no-cache" 
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT" 
</IfModule> 
</FilesMatch> 

Về môi trường dev của tôi, điều này đảm bảo rằng js và css luôn được truy xuất. Ngoài ra nó không ảnh hưởng đến phần còn lại của trình duyệt của tôi, và nó cũng làm việc cho tất cả các trình duyệt, do đó, thử nghiệm trong chrome/tức là vv cũng dễ dàng.

Tìm thấy đoạn mã ở đây, một số thủ thuật apache tiện dụng khác như: http://www.askapache.com/htaccess/using-http-headers-with-htaccess.html#prevent-caching-with-htaccess

Để chắc chắn rằng khách hàng của tôi luôn luôn nhìn thấy phiên bản mới nhất về sản xuất, chúng tôi tăng chuỗi truy vấn trên js bao gồm trên mỗi lần cập nhật, tức là

jquery.somefile.js?v=0.5 

Điều này buộc các trình duyệt khách hàng của tôi để cập nhật bộ nhớ cache của địa phương khi họ nhìn thấy một chuỗi truy vấn mới, nhưng sau đó lưu trữ các bản sao mới cho đến khi các tập tin được cập nhật một lần nữa

0

Sau 2 giờ duyệt cho v lựa chọn thay thế đáng lo ngại, đây là một cái gì đó đã làm việc cho tôi.

Yêu cầu của tôi là vô hiệu hóa bộ nhớ đệm của tệp js và css trong ứng dụng web bảo mật vào mùa xuân của tôi. Nhưng đồng thời bộ nhớ đệm những tập tin này "trong" một phiên cụ thể.

Chuyển một id duy nhất với mọi yêu cầu là một trong những cách tiếp cận được khuyên dùng.

Và đây là những gì tôi đã làm: - Thay vì

<script language="javascript" src="js/home.js"></script> 

tôi đã sử dụng

<script language="javascript" src="js/home.js?id=${pageContext.session.id}"></script> 

Bất kỳ nhược điểm với phương pháp trên đều được chào đón. Vân đê bảo mật ?

1

Có ưu và khuyết điểm đối với hai giải pháp cuối cùng được đăng, nhưng cả hai đều là giải pháp tuyệt vời của IMHO.

  1. Bạn có thể hoặc không muốn ID phiên của bạn được nhúng trong url của bạn như thế để bảo mật chặt chẽ hơn. Nhưng trong quá trình phát triển không quan trọng, nhưng nếu bạn quên loại bỏ nó thì sao? Cũng có thực sự làm việc? Bạn sẽ không cần một cái gì đó giống như một máy phát điện số tuần tự (số lần truy cập được lưu trữ trong phiên, hoặc thậm chí có thể chỉ khi 1 thì 0, nếu 0 thì 1)?

  2. Thêm id phiên (hoặc bất kỳ trình tự tuần tự nào) có nghĩa là bạn cần nhớ thêm nó vào mọi tài nguyên bạn không muốn lưu trong bộ nhớ cache. Một mặt là tốt hơn bởi vì bạn chỉ có thể bao gồm id phiên của bạn chỉ với tài nguyên mà bạn đang tích cực phát triển và thử nghiệm. Mặt khác, nó có nghĩa là bạn phải làm điều đó và bạn phải nhớ loại bỏ nó để sản xuất.

  3. Sửa đổi tệp vhost.conf hoặc tệp .htaccess thực hiện thủ thuật độc đáo mà không cần nhớ thêm và xóa id phiên. Nhưng nhược điểm là hiệu suất của tất cả các tài nguyên js và css sẽ bị ảnh hưởng, và nếu bạn có các tệp lớn, điều đó sẽ làm chậm bạn xuống.

Cả hai có vẻ như các giải pháp tuyệt vời, thanh lịch - tùy thuộc vào nhu cầu của bạn.

10

Không có tùy chọn cụ thể để tắt bộ nhớ đệm chỉ dành cho JavaScript, bạn sẽ phải tắt hoàn toàn bộ nhớ đệm.

FireBug có tùy chọn tắt bộ nhớ cache của trình duyệt trên menu thả xuống của tab Mạng.

1

Trong phiên bản Firefox cao hơn, như Nightly, có một tùy chọn có tên là "disable cache", bạn có thể tìm thấy nó bằng cách nhấp vào bánh răng. Và các tùy chọn đó chỉ hoạt động trong phiên hiện tại, có nghĩa là khi bạn đóng thanh tra và khởi động lại nó, bạn phải kiểm tra lại nếu bạn muốn bắt bị vô hiệu hóa.

+0

Tôi muốn có một cách để vô hiệu hóa bộ nhớ cache trên toàn cầu. Nó rất khó chịu phải kiểm tra nó mỗi khi tôi mở thanh tra. –

8

Trên trang cùng bạn muốn vô hiệu hóa bộ nhớ đệm làm điều này: FYI: phiên bản đang làm việc trên là 30,0

Bạn có thể:

open webdeveloper toolbar open web developer

and pick disable cache

Sau đó, nó sẽ tải lại trang của riêng bạn (bạn đang ở trên) và mọi thứ được recached và bất kỳ yêu cầu furthure được recahed mỗi thời gian quá và bạn có thể giữ cho nhà phát triển web luôn mở để giữ một mắt và chắc chắn rằng nó luôn luôn trên (kiểm tra).

3

Nếu bạn sử dụng FireBug, trên trình đơn thả xuống của tab Mạng, có một tùy chọn sẽ tắt bộ nhớ cache của trình duyệt.

enter image description here

0

Trong firefox 45, tùy chọn bộ nhớ cache đĩa có thể được thiết lập bằng cách thay đổi giá trị của: browser.cache.disk.enable

Giá trị có thể được đặt trên: Trang "về cấu hình" .

On http://kb.mozillazine.org/About:config_entries#Browser tôi thấy mô tả sau đây cho "browser.cache.disk.enable":

True (mặc định): Sử dụng bộ nhớ cache đĩa, dung lượng tối đa quy định tại browser.cache.disk.capacity False: bộ nhớ cache đĩa Disable (giống như hiệu ứng thiết lập browser.cache.disk.capacity để 0)

5

Firefox 48 Developer Tools

cho phép bạn tắt bộ nhớ cache chỉ khi hộp công cụ mở cửa, đó là hoàn hảo cho phát triển web :

  • F12
  • hộp số ở góc trên bên phải
  • cuộn xuống Advanced settings đầu
  • kiểm tra "Disable Cache (khi hộp công cụ mở cửa)"

enter image description here

https://stackoverflow.com/a/27397425/895245 có tương tự nội dung, nhưng vị trí đã thay đổi một chút kể từ đó.

+0

Cảm ơn ... có thông tin ngoài đó (và trong chủ đề này) về việc thiết lập network.http.use-cache thành false ... nhưng trong phiên bản FF của tôi (53) thiết lập đó không còn tồn tại ... Kỹ thuật này còn xa cao cấp. –

0

Trước hết, điều này có thể dễ dàng thực hiện, ví dụ: bằng PHP để buộc trình duyệt gia hạn các tệp dựa trên ngày bộ nhớ cache (thời gian hết hạn).Nếu bạn chỉ cần nó cho nhu cầu thử nghiệm, sau đó cố gắng sử dụng ctrl + shift + del để xóa tất cả bộ nhớ cache cùng một lúc bên trong trình duyệt Firefox. Giải pháp thứ ba là sử dụng nhiều add-on thoát cho Firefox để xóa cache dựa trên các dòng thời gian.

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