2015-01-12 20 views
5

Tôi có chú thích @JavaScript trong ứng dụng của mình để tải tệp .js từ đường dẫn lớp.Vaadin @Javascript: xóa bộ nhớ cache cho tệp JS được cập nhật

Bây giờ tôi đã cập nhật tệp và triển khai lại (cục bộ), nhưng tôi luôn lấy lại phiên bản cũ. Tôi đã thử tải lại tất cả mọi thứ (ctrl + R, ctrl + F5) nhưng điều đó không làm việc và tôi cũng sẽ không muốn người dùng phải làm điều đó.

Bí quyết tôi đã sử dụng trong quá khứ (không có Vaadin) là thêm thông số yêu cầu với phiên bản (ví dụ: phiên bản = 1) và cập nhật để URL thay đổi. Nhưng rõ ràng là không được phép cho chú thích @JavaScript (Vaadin thậm chí không cố gắng tải tệp).

+0

Có thể ứng dụng của bạn đang sử dụng chú thích @PreserveOnRefresh trên đối tượng giao diện người dùng? Điều này có thể ngăn Vaadin tải lại bất kỳ JS nào. –

+0

Không, tôi không sử dụng @PreserveOnRefresh. Bên cạnh đó, tôi đã khởi động lại máy chủ để không có sự khác biệt. Tôi vừa mới thay đổi tên tệp (thêm _vxxx trong đó xxx là một số) và nó hoạt động. – herman

+0

vì vậy bạn đang nói, rằng ngay cả một máy chủ khởi động lại giữ tập tin "cũ"? bạn có thể làm một 'tìm' cho các tập tin trong mục tiêu-dir của bạn? có thể, rằng nó có nhiều lần (ví dụ: một lần từ ide của bạn và một lần từ công cụ xây dựng của bạn). nếu cả hai đều ở trong classpath thì chỉ có một người được chọn. – cfrick

Trả lời

2

tôi đã khắc phục điều này bằng cách sử dụng resourceCacheTime tham số của cấu hình servlet Vaadin:

@VaadinServletConfiguration(ui = MyUI.class, resourceCacheTime = 0) 

Mặc dù nó có giới hạn của nó như được mô tả trong câu trả lời của tôi để another question here.

1

Đây là tính năng trình duyệt cho tệp JS bộ nhớ cache localy, không liên quan gì đến Vaadin.

Khi bạn tự tìm ra: Nếu bạn muốn đảm bảo người dùng có phiên bản JS mới nhất, bạn nên đổi tên tên tệp JS thành: script_buildNumber.js.

+0

Tôi không đồng ý rằng điều này không liên quan gì đến Vaadin: có nhiều cách để ứng dụng web thông báo cho trình duyệt, ví dụ: không được lưu trữ một số tài nguyên nhất định. Tôi đã đưa ra câu trả lời đổi tên tập tin bản thân mình nhưng đó thực sự là một hack. Ít nhất việc có thể thêm tham số yêu cầu sẽ ngăn không cho tôi phải thay đổi tên thực của tệp trong điều khiển phiên bản. – herman

+0

sau khi khởi động lại vùng chứa, tệp mới được tải xuống định kỳ mới từ đĩa và tải lại CTRL-F5 ít nhất trong Fx trong cấu hình mặc định sẽ kéo tệp mới. – cfrick

0

Sử dụng tính năng ẩn danh của Chrome (và không sử dụng tính năng này khi truy cập các trang web cay/khó chịu).

Chỉ cần mở trình duyệt của bạn ở chế độ Ẩn danh https://support.google.com/chrome/answer/95464?hl=en và trình duyệt sẽ không lưu vào bộ nhớ cache.

Các trình duyệt khác cũng có tính năng này (Opera, IE, Firefox, Safari).

+0

Tôi không muốn người dùng phải truy cập vào ứng dụng web của mình ở chế độ ẩn danh để đảm bảo họ có tệp javascript mới nhất. Vaadin sẽ cung cấp một cách để yêu cầu trình duyệt không lưu trữ chúng hoặc hỗ trợ thêm các tham số yêu cầu vào tên để các tệp không phải được đổi tên vật lý. – herman

+0

Chắc chắn, tôi đồng ý với bạn, tôi nghĩ bạn chỉ cần nó để phát triển. – tonix

0

Như tôi đã lưu ý trong nhận xét của mình về câu hỏi vào ngày 12 tháng 1, hãy đổi tên tệp đã làm việc. Điều này có vẻ là cách duy nhất, mặc dù nó xa lý tưởng.

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