2012-01-11 34 views
8

Tôi thiết lập bộ nhớ cache của ứng dụng trên một trang web và ngay sau đó nhận ra cách tích cực hơn mà tôi nhận ra. Tôi muốn loại bỏ nó. Vĩnh viễn.Xóa Tệp kê khai ứng dụng HTML5, Vĩnh viễn

Tôi đã đọc rằng chuyển tệp kê khai đã thay đổi, hoàn toàn trống, với MIMETYPE đúng sẽ xóa bộ nhớ cache. Chỉnh sửa: Xem bên dưới. Câu trả lời của Maurice là bản sửa lỗi nhất quán duy nhất.

Đây có phải là giải pháp nhanh nhất, hiệu quả nhất không? Có cách nào tốt hơn?

Và nếu bạn có thể xác định liệu bạn có thực sự sử dụng chức năng này trước câu trả lời của mình hay không. Tôi thực sự đánh giá cao nó - tài liệu mơ hồ và kỳ quặc không hiển thị trong khi thử nghiệm.

Trả lời

16

Bí quyết là trước tiên hãy thay đổi URL tệp kê khai trong trang HTML của bạn thành trang không hợp lệ để trình duyệt sẽ nhận được 404 khi tải xuống. Đảm bảo cũng thay đổi tệp kê khai ban đầu nếu không trang HTML mới không bao giờ được tải xuống. Sau khi trình duyệt không tải xuống được URL tệp kê khai mới, bạn hoàn toàn có thể xóa cài đặt tệp kê khai khỏi trang HTML.

Loại lập dị nhưng dường như đó là cách đáng tin cậy duy nhất để xóa tham chiếu tệp kê khai hiện có.

+0

Vì vậy, tôi thực sự muốn đặt , không xóa thuộc tính? –

+1

Thực hiện việc đó trước và thực hiện thay đổi đối với tệp kê khai gốc hoặc trang sẽ không được tải xuống và làm mới trang.Điều đó sẽ phá vỡ liên kết tệp kê khai và sau đó bạn có thể xóa hoàn toàn thuộc tính tệp kê khai. – Maurice

+0

OK. Cám ơn rất nhiều về sự giúp đỡ của bạn. –

2

Tôi đã gặp sự cố tương tự khi tôi cần đặt lại appcache sau khi cập nhật không thành công (nghĩa là loại bỏ hoàn toàn appcache sao cho nó có thể được xây dựng lại từ đầu).

Xây dựng dựa trên câu trả lời của Maurice Tôi trình bày cho người dùng liên kết ẩn thường mở trang không được lưu trong bộ nhớ cache, trang này chỉ viết cookie và trả người dùng về chế độ xem trước đó. Cookie này yêu cầu máy chủ trả về 404 vào lần tiếp theo yêu cầu appcache và sau đó người dùng được thực hiện thông qua quá trình đăng nhập thông thường. Khi ứng dụng tiếp theo chạy thành công nó sẽ xóa cookie và bộ nhớ đệm sẽ tiếp tục như bình thường.

Sử dụng cookie theo cách này sẽ khắc phục các sự cố trong đó phiên bản chính của chế độ xem bị kẹt trong appcache, khiến việc chèn url ngắt vào tệp manifest = "" nghĩa là URL tệp kê khai vẫn giữ nguyên, nhưng máy chủ trả lời bằng 404 cho đến khi được nói khác đi.

+0

Thú vị. Mặc dù nếu cuối cùng bạn muốn giữ appcache, bạn chỉ có thể thay đổi tệp kê khai, điều này sẽ khiến trình duyệt tải lại tất cả các nội dung như thể nó bắt đầu lại. Để loại bỏ tệp kê khai vĩnh viễn, Maurice đã chính xác. –

+0

Đề xuất của tôi thực sự chỉ dành cho các ứng dụng đằng sau thông tin đăng nhập, nơi bạn có thể gặp khó khăn trong việc kích hoạt cập nhật thành công bằng cách sử dụng quy trình bình thường (thay đổi tệp kê khai, v.v.). – notreadbyhumans

1

Nếu bạn chỉ muốn xóa nội dung đó khỏi phía bạn, bạn có thể thực hiện điều đó từ Trình duyệt. Tôi chỉ có thể nhớ cách thực hiện trong Chrome. Truy cập chrome: // appcache-internals/& xóa (các) tệp mong muốn. Bạn cũng có thể xóa bộ nhớ cache & cookie & sẽ hoạt động. Tuy nhiên, tôi chỉ thử nghiệm điều đó trong Chrome.

Nếu bạn muốn xóa nó cho tất cả người xem, tôi biết không có cách nào để phát hiện xem họ có phiên bản được lưu trong bộ nhớ cache cũ hay không, nhưng tôi biết rằng việc giữ thuộc tính bằng liên kết sai, như Maurice đã đề xuất mà tôi sẽ biết; mặc dù, tôi chắc chắn có một cách khác, rất có thể với jQuery.

5

Kể từ ngày 6/25/2015 tôi tìm thấy trả lại 404 sẽ không xóa appcache hiện có cho Firefox và trả về một appcache trống sẽ không xóa appcache hiện có cho Chrome. Việc trả lại appcache sau dường như hoạt động trong IE, Chrome, Safari và Firefox, mặc dù không rõ ràng về cơ chế nào mà việc vô hiệu hóa bộ nhớ đệm 'ngầm' của index.html được thực hiện.

NETWORK: 
* 

CACHE: 
FALLBACK: 
+0

Điều này phải được chấp nhận làm câu trả lời đúng. Cảm ơn bạn đã chia sẻ điều này! – raphael

+0

Bộ nhớ cache * phải * bắt đầu bằng 'CACHE MANIFEST' và sau đó một dòng mới sẽ được tuân thủ đặc tả. Đối với "vô hiệu hóa 'ẩn bộ nhớ đệm' của index.html", giải pháp duy nhất tôi biết là bao gồm iframe ẩn và khai báo tệp kê khai trong khung nội tuyến (sau đó trang trong khung nội tuyến sẽ được lưu trong bộ nhớ cache). Tôi đã không thực sự cố gắng này, nhưng tôi đọc nó như một giải pháp. – Nateowami

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