2012-02-13 37 views
19

Sử dụng require.js Tôi nhận thấy rằng các phụ thuộc thường được trình duyệt lưu vào bộ nhớ cache và không được cập nhật ngay cả khi tôi buộc trang tải lại hoàn toàn (lệnh + shift + R).Gỡ lỗi khi sử dụng bộ nhớ cache require.js

Để luôn có tệp được cập nhật, tôi đã yêu cầu require.js yêu cầu các tệp thêm '? Datestamp' sau url. Vấn đề duy nhất với cách tiếp cận này là các điểm ngắt không tồn tại trong chrome hoặc firebug sau khi tải lại, làm cho việc gỡ lỗi trở nên đau đớn.

Bạn có đề xuất nào không?

+0

Bạn có quyền truy cập vào cấu hình máy chủ web hoặc máy chủ ứng dụng của mình hoặc hiểu máy chủ web '.htaccess' không? – fyr

+0

Tôi có thể chạy Apache trên máy cục bộ khi gỡ lỗi – Ghigo

Trả lời

16

Thực tế có một số việc bạn có thể làm:

Hoặc bạn tắt hoàn toàn bộ nhớ cache của trình duyệt để kiểm tra. Một cách dễ dàng trong ví dụ: Chrome đang mở một cửa sổ ẩn danh (CTRL + SHIFT + N) tương tự như chế độ Duyệt web riêng tư trong Firefox. Tuy nhiên, giải pháp lý tưởng hơn cho bạn nên được liệt kê ở đây: Disabling Chrome cache for website development

Hoặc bạn hướng dẫn máy chủ web của mình không gửi tiêu đề bộ nhớ cache cho javascript hoặc một số tệp javascript. Một khả năng là sử dụng mod_expires với apache.

+0

Chế độ Ẩn danh có thể hoạt động cho các dự án đơn giản nhưng không hoạt động được. Vô hiệu hóa bộ nhớ cache hoặc chỉnh sửa .htaccess thực sự là một giải pháp tốt hơn. Cảm ơn bạn. – Ghigo

3

Tôi nghĩ rằng bạn có thể sử dụng urlArgs trên required.config

trích dẫn từ http://requirejs.org/docs/api.html#packages urlArgs: tắm truy vấn đối số chuỗi nối vào URL RequireJS sử dụng để lấy tài nguyên. Hữu ích nhất để cache bust khi trình duyệt hoặc máy chủ không được cấu hình đúng. Ví dụ thiết lập bộ nhớ cache ngực cho urla

+3

Như tôi đã viết trong câu hỏi, giải pháp này sẽ làm cho việc gỡ lỗi đau đớn. – Ghigo

9

tôi đã sử dụng

require.config({ urlArgs: "v=" + (new Date()).getTime() }); 

này giải quyết vấn đề của tôi, nhưng bạn cần phải nhớ để xoá bỏ nó, trước khi bạn goto sản xuất.

+0

Tuyệt vời! Có thể là 'app.myDevModeVariable && require.config ({urlArgs:" v = "+ (ngày mới()). GetTime()});' – zsitro

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