CacheStorage: phương thức match()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2018.
Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.
Note: This feature is available in Web Workers.
Phương thức match() của giao diện CacheStorage kiểm tra xem một Request hoặc chuỗi URL cho trước có phải là khóa cho một Response đã lưu hay không.
Phương thức này trả về một Promise cho một Response, hoặc một Promise phân giải thành undefined nếu không tìm thấy kết quả khớp.
Bạn có thể truy cập CacheStorage thông qua thuộc tính Window.caches trong cửa sổ hoặc thông qua thuộc tính WorkerGlobalScope.caches trong worker.
Các đối tượng Cache được tìm kiếm theo thứ tự tạo.
Note:
caches.match() là một phương thức tiện lợi.
Chức năng tương đương là gọi cache.match() trên từng bộ nhớ đệm (theo thứ tự trả về bởi caches.keys()) cho đến khi một Response được trả về.
Cú pháp
match(request)
match(request, options)
Tham số
request-
Requestbạn muốn so khớp. Đây có thể là một đối tượngRequesthoặc một chuỗi URL. optionsOptional-
Một đối tượng có các thuộc tính kiểm soát cách so khớp được thực hiện trong thao tác
match. Các tùy chọn có sẵn là:ignoreSearch-
Một giá trị boolean chỉ định xem quá trình so khớp có nên bỏ qua chuỗi truy vấn trong URL hay không. Ví dụ: nếu đặt thành
true, phần?value=barcủahttps://example.com/?value=barsẽ bị bỏ qua khi thực hiện so khớp. Giá trị mặc định làfalse. ignoreMethod-
Một giá trị boolean, khi đặt thành
true, ngăn các thao tác so khớp xác thực phương thứcRequesthttp(thường chỉGETvàHEADđược cho phép). Giá trị mặc định làfalse. ignoreVary-
Một giá trị boolean, khi đặt thành
true, yêu cầu thao tác so khớp không thực hiện so khớp tiêu đềVARY. Nói cách khác, nếu URL khớp bạn sẽ nhận được kết quả bất kể đối tượngResponsecó tiêu đềVARYhay không. Giá trị mặc định làfalse. cacheName-
Một chuỗi biểu diễn một bộ nhớ đệm cụ thể để tìm kiếm trong đó.
Giá trị trả về
Một Promise phân giải thành Response khớp. Nếu
không tìm thấy phản hồi nào khớp với yêu cầu được chỉ định, promise phân giải
thành undefined.
Ví dụ
Ví dụ này lấy từ ví dụ service worker đơn giản của MDN (xem bản chạy trực tiếp của service worker đơn giản).
Ở đây chúng ta chờ một FetchEvent xảy ra. Chúng ta tạo một phản hồi tùy biến
như sau:
- Kiểm tra xem có tìm thấy mục khớp với yêu cầu trong
CacheStoragebằngCacheStorage.match()hay không. Nếu có, phục vụ mục đó. - Nếu không, mở bộ nhớ đệm
v1bằngopen(), đặt yêu cầu mạng mặc định vào bộ nhớ đệm bằngCache.put()và trả về một bản sao của yêu cầu mạng mặc định bằngreturn response.clone(). Điều cuối cùng này là cần thiết vìput()tiêu thụ phần thân phản hồi. - Nếu việc này thất bại (ví dụ do mạng bị ngắt), trả về một phản hồi dự phòng.
self.addEventListener("fetch", (event) => {
event.respondWith(
caches.match(event.request).then((response) => {
// caches.match() luôn phân giải
// nhưng nếu thành công thì response sẽ có giá trị
if (response !== undefined) {
return response;
}
return fetch(event.request)
.then((response) => {
// response chỉ có thể được dùng một lần
// cần lưu bản sao để đặt một bản vào cache
// và phục vụ bản còn lại
let responseClone = response.clone();
caches
.open("v1")
.then((cache) => cache.put(event.request, responseClone));
return response;
})
.catch(() => caches.match("/gallery/myLittleVader.jpg"));
}),
);
});
Thông số kỹ thuật
| Specification |
|---|
| Service Workers Nightly> # cache-storage-match> |