Không thể cập nhật ảnh khi đổi ảnh đại diện do cache

Em đang làm 1 cái web đăng ký serviceWorker để có thể cài đặt dưói dạng PWA, nhưng giờ em lại vướng phần cache khi người dùng đổi ảnh đại diện. Phần cache cũ nó sống dai quá, dù reload bao nhiêu lần thì nó vẫn cứ giữ nguyên ảnh cũ.

Em đã thử xóa cache bằng cách chạy

caches.keys().then(function(names) {
    for (let name of names)
        caches.delete(name);
    });

Thế nhưng hình như nó không có chút tác dụng nào.
Ở trên chrome mobile nếu em vào cài đặt và chỉ xóa cache mà không xóa phần “Cookie và dữ liệu trang web” thì cache của web em nó vẫn sống luôn, sống dai quá :cry:

Có cách nào để xóa 1 phần hoặc xóa toàn bộ cache khi cần cập nhật gì đó không ạ

gọi api kiểm tra phiên bản, nếu không phải lastest thì force update

3 Likes

Thật khá khen cho kiểu xoá cache của bạn. Không biết đoạn code trên được copy ở đâu vậy. Vấn đề là trình duyệt nó cache ảnh của user rồi. Nếu vẫn dùng url cũ thì trừ khi server báo cho trình duyệt biết còn không thì sẽ bị cache hơi lâu đấy. Có 1 cách khác là nếu đổi avatar thì gen 1 url mới, auto xoá cache

8 Likes

Hôm nay xem lại thớt này thì em đã có câu trả lời rồi. Những thông tin cần cập nhật thường xuyên thì sẽ đi kèm với header Cache-Control là no-cache. Với header này thì cache sẽ được yêu cầu xác thực lại với máy chủ trước khi tái sử dụng, đảm bảo rằng tài nguyên đã được cache ở phiên bản mới nhất. Vậy nên trong trường hợp của em thì ảnh đại diện nên được đặt một header no-cache để đảm bảo khi một ảnh mới được cập nhật tại máy chủ thì nó sẽ được cache lại ở máy khách :sweat_smile:

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?