From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- files/ja/web/api/cache/match/index.html | 102 ++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 files/ja/web/api/cache/match/index.html (limited to 'files/ja/web/api/cache/match') diff --git a/files/ja/web/api/cache/match/index.html b/files/ja/web/api/cache/match/index.html new file mode 100644 index 0000000000..755c14f2ce --- /dev/null +++ b/files/ja/web/api/cache/match/index.html @@ -0,0 +1,102 @@ +--- +title: Cache.match() +slug: Web/API/Cache/match +tags: + - API + - Cache + - Method + - Reference + - Service Workers + - Service worker API + - ServiceWorker + - match +translation_of: Web/API/Cache/match +--- +

{{APIRef("Service Workers API")}}

+ +

{{domxref("Cache")}} インターフェイスの match() メソッドは、{{domxref("Cache")}} オブジェクトで最初に一致したリクエストに関連付けられた {{domxref("Response")}} に解決される {{jsxref("Promise")}} を返します。 一致が見つからない場合、{{jsxref("Promise")}} は {{jsxref("undefined")}} に解決されます。

+ +

構文

+ +
cache.match(request, {options}).then(function(response) {
+  // レスポンスで何かをします
+});
+
+ +

パラメーター

+ +
+
request
+
{{domxref("Cache")}} 内でレスポンスを見つけようとしている {{domxref("Request")}}。 これは、{{domxref("Request")}} オブジェクトまたは URL です。
+
options {{optional_inline}}
+
match 操作のオプションを設定するオブジェクト。 使用可能なオプションは次のとおりです。 +
    +
  • ignoreSearch: URL のクエリ文字列を無視するかどうかを指定する {{jsxref("Boolean")}}。 例えば、true に設定すると、http://foo.com/?value=bar?value=bar の部分は、照合の実行時に無視されます。 デフォルトは false です。
  • +
  • ignoreMethod: true に設定すると、照合操作が {{domxref("Request")}} HTTP メソッドを検証しないようにする {{jsxref("Boolean")}}(通常、GET および HEAD のみが許可されます)。 デフォルトは false です。
  • +
  • ignoreVary: true に設定すると、VARY ヘッダーの照合を実行しないように照合操作に指示する {{jsxref("Boolean")}}。 つまり、URL が一致する場合、{{domxref("Response")}} オブジェクトに VARY ヘッダーがあるかどうかに関係なく一致します。 デフォルトは false です。
  • +
+
+
+ +

戻り値

+ +

リクエストに一致する最初の {{domxref("Response")}} に解決する、または一致が見つからない場合は {{jsxref("undefined")}} に解決する {{jsxref("Promise")}}。

+ +
+

: Cache.match() は、一致するすべてのレスポンスの配列で解決するのではなく、最初に一致するレスポンスのみ(つまり、response[0])で解決することを除いて、基本的に {{domxref("Cache.matchAll()")}} と同じです。

+
+ +

+ +

この例は、カスタムオフラインページの例(ライブデモ)からの引用です。 リクエストが失敗した場合、キャッシュを使用して選択したデータを提供します。 catch() 句は、fetch() の呼び出しが例外をスローしたときにトリガーされます。 catch() 句の内部では、 match() を使用して正しいレスポンスを返します。

+ +

この例では、GET HTTP 動詞で取得された HTML 文書のみがキャッシュされます。 if() 条件が false の場合、このフェッチハンドラーはリクエストをインターセプトしません。 他のフェッチハンドラーが登録されている場合、それらは event.respondWith() を呼び出す機会を得ます。 フェッチハンドラーが event.respondWith() を呼び出さない場合、リクエストはブラウザーによって処理され、サービスワーカーが関与していないかのように処理されます。 fetch() が 4xx または 5xx の範囲のレスポンスコードで有効な HTTP レスポンスを返す場合、catch() は呼び出されません。

+ +
self.addEventListener('fetch', function(event) {
+  // これが HTML 文書に対する GET リクエストである場合のみ、event.respondWith() を呼び出します。
+  if (event.request.method === 'GET' &&
+      event.request.headers.get('accept').indexOf('text/html') !== -1) {
+    console.log('フェッチイベントの処理: ', event.request.url);
+    event.respondWith(
+      fetch(event.request).catch(function(e) {
+        console.error('フェッチ失敗、代わりにオフラインページに戻ります。', e);
+        return caches.open(OFFLINE_CACHE).then(function(cache) {
+          return cache.match(OFFLINE_URL);
+        });
+      })
+    );
+  }
+});
+ +

仕様

+ + + + + + + + + + + + + + +
仕様状態コメント
{{SpecName('Service Workers', '#dom-cache-match', 'Cache match')}}{{Spec2('Service Workers')}}初期定義
+ +

ブラウザーの互換性

+ +
+ + +

{{Compat("api.Cache.match")}}

+
+ +

関連情報

+ + -- cgit v1.2.3-54-g00ecf