2012-08-25 24 views
9

Nếu tôi chỉnh sửa tập lệnh của nhân viên web và làm mới trang, tập lệnh web worker là phiên bản được lưu trong bộ nhớ cache. Tôi khá tự tin rằng nó không phải là máy chủ web của tôi, bởi vì tôi có thể tải ngay các bản sao mới nhất của tất cả các tệp khác và thậm chí khởi động lại máy chủ web không khắc phục được sự cố. Nó chỉ tải phiên bản mới nhất của tập lệnh web worker nếu tôi khởi động lại chrome, điều này rất không hiệu quả, không cần phải nói! Nó không sửa chữa nó ngay cả khi tôi khởi động lại chrome. Tôi có thể làm gì để giải quyết vấn đề này không?Chrome không tải phiên bản mới nhất của tập lệnh web worker (chạy phiên bản đã lưu trong bộ nhớ cache)

Trả lời

7

Máy chủ web của bạn xác định cách một tài nguyên web cụ thể có thể lưu vào bộ nhớ cache và trình duyệt cố gắng tôn trọng các cài đặt đó, tài nguyên lưu trong bộ nhớ cache mà máy chủ web cho biết là không thể lưu vào bộ nhớ cache.

Nếu bạn muốn thay đổi điều đó, bạn có các tùy chọn này:

  1. Xóa cache trình duyệt bằng tay
  2. Tạm thời tắt bộ nhớ đệm của trình duyệt.
  3. Tạm thời thay đổi các thiết lập trên máy chủ web của bạn để hướng dẫn trình duyệt không để cache
  4. Override bộ nhớ cache cho chỉ này một trang web (shift-F5 trong một số trình duyệt) để buộc một tải lại nội dung mới
  5. Thêm tham số truy vấn đến URL của tập lệnh web worker mà bạn thay đổi mỗi khi bạn muốn nó tải phiên bản mới.
+2

Làm mới khó của Chrome không làm mới nhân viên và vẫn sử dụng phiên bản được lưu trong bộ nhớ cache. – riv

+0

Nếu bạn vẫn thấy rằng với câu trả lời này, serviceworker của bạn không được cập nhật, hãy kiểm tra xem nó có chứa lỗi hay không. Vì nếu serviceworker chứa lỗi javascript và không cài đặt được, phiên bản cũ sẽ vẫn được sử dụng. –

+0

@BasGoossen - Trong trường hợp bạn không nhận ra, câu hỏi này là về công nhân web (tập lệnh chạy trong một chủ đề khác trong trang web), không phải nhân viên phục vụ (những thứ khác nhau). – jfriend00

3

Bạn đã thử làm mới khó? Ctrl-r?

+0

Ctrl + R thường xuyên làm mới, tôi nghĩ ... Ctrl + Shift + R, có thể? – Ryan

8

Trên Linux Chrome của tôi, tôi phải click chuột phải (hoặc nhấp chuột dài) vào nút tải lại và chọn "Empty Cache và tải lại cứng" để có được phiên bản mới nhất

+0

nhấp chuột dài là gì? –

+0

Để bấm lâu, giữ nút chuột cho đến khi menu mở ra. @ Brian: Tôi thậm chí còn không biết điều đó ở đó. Ctrl + F5 không hoạt động vì một lý do nào đó, nhưng điều này hoạt động hoàn hảo. –

+0

Cảm ơn rất nhiều @ Brian, điều này giải quyết nó cho tôi! –

0

Trong trường hợp install của bạn, trước khi cuộc gọi đến event.waitUntil add:

if (self.skipWaiting) { self.skipWaiting(); } 

Source

Ngoài ra, bạn có thể làm theo quy trình làm việc phát triển này:

  1. Cấu hình máy chủ của bạn để phục vụ kịch bản Dịch vụ lao động của bạn như là non-cacheable (Cache-control: no-cache)
  2. Sau khi bạn thực hiện thay đổi để người lao động kịch bản dịch vụ của bạn:
    1. đóng tất cả nhưng một trong những tab chỉ để ứng dụng web của bạn
    2. hit shift-tải lại để bỏ qua các nhân viên dịch vụ để đảm bảo rằng các tab còn lại không phải là dưới sự kiểm soát của một nhân viên dịch vụ
    3. hit tải lại để cho các phiên bản mới hơn của Nhân viên dịch vụ c ontrol trang.

Source

1

Thêm <script src="your_worker_path"></scripts> vào đầu trang của bạn để buộc cập nhật bộ nhớ cache.
Bao gồm mã của nhân viên của bạn trong if(typeof window == "undefined"){...} để tránh mã bắt đầu khi tải lại trang

0

Bạn phải đóng tất cả các tab mở trang này. Chỉ mở một lần 1 rồi nhấn Ctrl + Shift + R để làm mới thì bộ nhớ cache sẽ rõ ràng.

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