2012-02-15 39 views
6

Sử dụng văn bản! plugin, có cách nào để buộc RequireJS tải lại tệp thay vì trả về dữ liệu được lưu trong bộ nhớ cache không?buộc văn bản RequireJS! để tải lại

+0

Bạn có thể cung cấp liên kết tới trình cắm không? Bạn đã thử bất cứ điều gì? Nó đã thất bại, bằng cách nào đó? –

+0

plugin là http://requirejs.org/docs/api.html#text – nicholas

+3

Không, không có gì là không thành công, thực tế là như vậy. Nếu bạn tải một tệp văn bản, mọi yêu cầu tiếp theo cho tệp đó sẽ trả lại dữ liệu đã tải ban đầu. Những gì tôi đang tìm kiếm là trường hợp kỳ lạ mà tập tin đó có thể đã thay đổi và nên được làm mới. – nicholas

Trả lời

1

RequireJS sẽ chỉ lưu trữ tệp theo yêu cầu. Tải lại trang sẽ tìm nạp lại. Nếu bạn thấy điều gì đó khác biệt, đó là vì:

  • Hoặc bạn có bộ nhớ đệm trên máy chủ của mình.
  • hoặc trình duyệt của bạn lưu trữ yêu cầu. Bạn có thể vô hiệu hóa điều này trên trình duyệt của bạn.

Nếu bạn muốn trình duyệt tìm nạp tệp sạch mỗi lần, bạn nên có tiêu đề không có bộ nhớ cache cho các tài nguyên này trên máy chủ của mình.

+1

để thực thi các tệp tải trình duyệt từ máy chủ có thể thử gọi chúng bằng chuỗi truy vấn được tạo ngẫu nhiên - như /Some-path-to-file/MyJSfile.js?v=TIMESTAMP – shershen

+0

@shershen Don ' Nếu bạn nghĩ rằng bạn có thể làm điều đó với require.js – ggozad

+1

@ggozad, bạn có thể thêm tham số GET vào tất cả các yêu cầu mô đun được thực hiện với requirejs bằng requirejs.config ({urlArgs: 'getparam'}) - điều này có thể được sử dụng để xóa bộ nhớ đệm của trình duyệt –

0

Tôi nghĩ rằng bạn có thể thêm tính năng html5 bộ nhớ cache mới bằng cách cung cấp một biểu hiện cache: http://www.html5rocks.com/en/tutorials/appcache/beginner/

sau đó bạn có thể sử dụng requirejs "domReady" để có được những sự kiện tải thích hợp: http://requirejs.org/docs/api.html#pageload

và sau đó lắng nghe những sự kiện thích hợp (mã lấy từ liên kết đầu tiên):

window.applicationCache.addEventListener('updateready', function(e) { 
if (window.applicationCache.status == window.applicationCache.UPDATEREADY) { 
    // Browser downloaded a new app cache. 
    if (confirm('A new version of this site is available. Load it?')) { 
    window.location.reload(); 
    } 
} else { 
    // Manifest didn't changed. Nothing new to server. 
}}, false); 

vào thời điểm này bất cứ khi nào bạn cập nhật urlArgs bạn sẽ nhận được các tập tin js mới và với manifest bộ nhớ cache f bạn sẽ nhận được các tệp html mới

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