2010-12-29 13 views
7

Tôi có một ứng dụng HTML5 sử dụng bộ đệm ẩn ngoại tuyến với tệp kê khai. Cách duy nhất kích hoạt cập nhật bộ đệm là một thay đổi trong tệp kê khai trên máy chủ. Tôi đang tìm một cách có lập trình hết hạn bộ nhớ cache và thực thi cập nhật.HTML5 bộ nhớ cache ngoại tuyến hết hạn có lập trình

Tôi đã đi qua spec, tìm kiếm một số phương pháp trên window.applicationCache để hết hạn bộ nhớ cache. Nhưng không tìm thấy gì cả. Có phương thức update() nhưng sẽ chỉ cập nhật nếu bộ nhớ cache hết hạn (nghĩa là có thay đổi trong tệp kê khai). Vì vậy, điều đó không giúp được gì.

Bất kỳ ai biết cách lập trình hết hạn bộ nhớ cache của ứng dụng và buộc phải tải xuống?

+0

Cách lập trình * phía máy chủ là để máy chủ '404' cho tệp kê khai cũ. Bạn nên sử dụng tên tệp kê khai có chứa chuỗi phiên bản để bạn có khả năng hết hạn phiên bản cũ của tệp kê khai. – meagar

Trả lời

2

AFAIK, manifest là phương tiện duy nhất để bắt đầu cập nhật. Trang web HTML5 Rocks có bài viết thảo luận về cập nhật bộ nhớ cache theo chương trình (sau khi cập nhật manifest) bằng cách gọi ngay applicationCache.swapCache() sau khi nghe trạng thái UPDATEREADY trong appCache.status.

Tôi không chắc chắn nếu điều đó sẽ là đủ, nhưng một đọc tốt của nó (di chuyển xuống "Cập nhật Cache") - http://www.html5rocks.com/tutorials/appcache/beginner/

2

Đúng là một bản cập nhật được kích hoạt chỉ bằng một "cập nhật" manifest tập tin. Nhưng một số trình duyệt (FF, chrome) không kiểm tra tất cả các tệp được tệp kê khai tham chiếu. Ví dụ: jpg sẽ không kiểm tra xem máy chủ có mới hơn hay không. Dường như chính sách bộ nhớ đệm chung của trình duyệt ảnh hưởng đến quá trình cập nhật. Để buộc trình duyệt kiểm tra tất cả hoặc một số tệp tin trong tệp kê khai bộ nhớ cache, bạn phải gắn thẻ tệp này bằng "Cache-Control: no-cache" trong tiêu đề HTTP.

Bạn có thể kiểm soát hoạt động cập nhật bằng cách sử dụng cookie. Nếu bạn có một kịch bản serveride mà thông dịch các lệnh cookie, bạn có thể buộc trình duyệt để lỗi thời nội dung bộ nhớ cache thông qua javascript. Ví dụ: nếu ứng dụng khách thực hiện cache.update() có bộ cookie "cache_clear", máy chủ có thể trả lời bằng mã phản hồi 404 khiến trình duyệt lỗi thời nội dung bộ nhớ cache của ứng dụng.