OCAPI キャッシング 23.1

REST API は HTTP に基づいているため、Open Commerce API によってデベロッパーはクライアントアプリケーションキャッシュを作成するか、プロキシキャッシュを利用できるようになります。API は標準の HTTP キャッシュヘッダー情報を提供します。

Business Manager で、一部の Open Commerce API リソースの最大キャッシュ回数 (または最大期間) を構成できます。現在、キャッシュ設定を構成できるのは Shop API のみです。

キャシュ機能を使用するには、Business Manager でサイトのページキャッシングを有効にする必要があります

Note

最大期間は、レスポンスドキュメントがキャッシュに保持される期間を秒単位で決定します。ランタイムには、構成した最大期間を使用して HTTP レスポンスのキャッシュコントロールヘッダーに追加される値が計算されます。たとえば、categories リソースの最大期間を 900 秒に構成するとします。最初の GET リクエストの後、HTTP ヘッダーに含まれる値は 900 です。同じドキュメントに対する 2 回目の GET リクエストが 120 秒後に受信された場合、HTTP ヘッダーの値は 780 になります。

レスポンスキャッシュヘッダーは、Shop API で categoriescontentcontent_searchcustom_objectsfoldersproductsproduct_searchpromotionssearch_suggestionssite、および stores リソースの GET リクエストおよび HEAD リクエストに対してのみ送信されます。

Note

キャッシュ時間の構成 

リソースごとのキャッシュ時間は Open Commerce API 設定で構成します。整数のプロパティ cache_time は、キャッシュ時間を秒単位で定義します。キャッシュ時間を指定しないと、デフォルトは 60 秒になります。構成可能な最小キャッシュ時間は 0 秒、最大は 86,400 秒 (24 時間) です。

以下にキャッシュ時間の構成の例を示します。

1{
2  "_v" : "23.1",
3  "clients":
4  [
5    {
6      "client_id":"[your_own_client_id]",
7      "resources":
8      [
9        {
10          "resource_id":"/categories/*",
11          "methods":["get"],
12          "read_attributes":"(**)",
13          "write_attributes":"(**)",
14          "cache_time":900
15        },
16        {
17          "resource_id":"/products/*",
18          "methods":["get"],
19          "read_attributes":"(**)",
20          "write_attributes":"(**)",
21          "cache_time":900
22        },
23        {
24          "resource_id":"/products/*/availability",
25          "methods":["get"],
26          "read_attributes":"(**)",
27          "write_attributes":"(**)",
28          "cache_time":60
29        },
30        {
31          "resource_id":"/products/*/prices",
32          "methods":["get"],
33          "read_attributes":"(**)",
34          "write_attributes":"(**)",
35          "cache_time":300
36        },
37        ...
38      ]
39    }
40  ]
41}

HTTP レスポンスキャッシュヘッダー 

API は、次の例に示すように、キャッシュ時間を *Cache-Control: max-age* ヘッダーとして返します。

例 1: 商品の入手可能性情報のリクエスト:

1REQUEST:
2GET /dw/shop/v23_1/products/123/availability HTTP/1.1
3
4RESPONSE:
5HTTP/1.1 200 OK
6Content-Length: 67
7Content-Type: application/json; charset=UTF-8
8Cache-Control: max-age=48,must-revalidate
9
10{
11  "id":"123",
12  "name":"Shirt",
13  "orderable":true
14}

例 2: 商品の価格情報のリクエスト:

1REQUEST:
2GET /dw/shop/v23_1/products/123/prices HTTP/1.1
3
4RESPONSE:
5HTTP/1.1 200 OK
6Content-Length: 67
7Content-Type: application/json; charset=UTF-8
8Cache-Control: max-age=240,must-revalidate
9
10{
11  "id":"123",
12  "name":"Shirt",
13  "price":100.00
14}

例 3: expand パラメーターを使用した商品の入手可能性情報と価格情報のリクエスト:

1REQUEST:
2GET /dw/shop/v23_1/products/123?expand=availability,prices HTTP/1.1
3
4RESPONSE:
5HTTP/1.1 200 OK
6Content-Length: 67
7Content-Type: application/json; charset=UTF-8
8Cache-Control: max-age=60,must-revalidate
9
10{
11  "id":"123",
12  "name":"Shirt",
13  "price":100.00,
14  "orderable":true
15}

expand パラメーターを使用した単一のリクエストでは、Open Commerce API によって Cache-Control ヘッダーにリクエストされたリソースの最小のキャッシュ時間が挿入されます。

クエリパラメーター 

クエリパラメーターは、プロキシキャッシュやブラウザーキャッシュなどの Web キャッシュの鍵の一部です。OCAPI の自己生成 URL では、クエリパラメーターが常にアルファベット順に並べられます。この決定性の並べ順によって、キャッシュヒット率が確実に向上します。

キャッシュヒット率を確実に上げて、パフォーマンスを向上させるには、OCAPI URL を常にクライアントアプリケーションで作成し、クエリパラメーターをアルファベット順に並べます。

Note

Meta API でのキャッシュ 

Meta API でもキャッシュが有効になっています。リソースのデフォルトのキャッシュ時間は 1 日で、構成することはできません。Meta API ドキュメントのインスタンスキャッシュをクリアするには、Business Manager のページキャッシュを無効にすることが必要です。