2012-03-08 16 views
12

Tôi đang sử dụng RequireJS (phiên bản jQuery) và tôi muốn nối thêm các tham số GET vào tập lệnh của mình để ngăn không cho bộ nhớ đệm không mong muốn.Tham số chặn truy xuất bộ nhớ cache URL với RequireJS?

Tôi đang sử dụng the urlArgs parameter, như được đề xuất trong tài liệu. Đây là app-build.js tập tin của tôi:

({ 
    appDir: "../", 
    baseUrl: "scripts/", 
    urlArgs: "cache=v2", 
    ... 

Sau đó, tôi xây dựng dự án như sau:

$ node ../../r.js -o app.build.js 

Sản lượng trong app-xây dựng thư mục bây giờ chứa cả require-jquery.js, đó là cùng một tập tin như trước đây, và require-jquery.js?cache=v2 , trống.

Tệp index.html dường như không có bất kỳ tham chiếu nào đến cache=v2. Và khi tôi tải trang trong trình duyệt, tôi không thấy bất kỳ thông số cache=v2 nào được thêm vào bất kỳ tập lệnh nào.

Tôi có làm gì sai không?

Trả lời

0

Tôi sẽ thử sử dụng tệp build.js khác cho trình tối ưu hóa so với tệp build.js mà bạn sử dụng đang chạy ứng dụng trực tiếp. Dựa trên mô tả của bạn, tập lệnh trình tối ưu hóa dường như không xử lý đúng tham số urlArgs (vì nó xuất ra một tệp có tên require-jquery.js? Cache = v2).

Tôi không mong đợi cache = v2 hiển thị trong index.html (tại sao phải không?), Nhưng bạn có quyền mong đợi nó trong nhật ký hoạt động mạng.

1

Các tài liệu trên urlArgs:

“Trong thời gian phát triển nó có thể hữu ích để sử dụng này, tuy nhiên hãy chắc chắn để xoá bỏ nó trước khi triển khai mã của bạn”

this issue from Github, James Burke: “không cố gắng sử dụng urlArgs trong khi xây dựng ”

1

Tham số urlArgs có nhiều cấu hình thời gian chạy hơn (chỉ được hiểu bởi RequireJS, không phải trình tối ưu hóa r.js), dường như do tác giả của nó là stated tin tưởng rằng nó chỉ phù hợp với sự phát triển (và B quảng cáo "máy chủ dev không gửi tiêu đề thích hợp). Vì vậy, bạn cần phải định cấu hình nó trong cuộc gọi require.config của mình (trong tệp .js được tải bởi require.js, thường là main.js hoặc config.js):

require.config({ 
    // other config, like paths and shim 

    urlArgs: "cache=v2" 
}); 

Hoặc, theo SO khác answer, bạn sẽ xác định nó trực tiếp trong khối <script> trước khi tải require.js.

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