---
title: APIキャッシュクリアのタイミングと範囲
description: Kurocoでは、キャッシュ情報を更新すべき様々なタイミングでキャッシュクリアを行なっています。
---

## APIキャッシュがクリアされるタイミング

コンテンツ一覧を取得するAPIにおいて、キャッシュの有効期間中にそのコンテンツを更新した場合、キャッシュされた内容は古くなってしまいます。そこでKurocoでは、キャッシュ情報を更新すべき様々なタイミングでキャッシュクリアを行なっています。

例えばKuroco管理画面からコンテンツを更新時した際には、コンテンツに関連するエンドポイントのキャッシュがクリアされます。しかしここで、更新されたコンテンツと全く関係のないコンテンツ定義グループのキャッシュまでクリアしてしまうと、キャッシュヒット率が下がってしまいます。したがってKurocoは更新されたコンテンツと同一のコンテンツ定義グループに限定して、関連するエンドポイントのキャッシュをクリアしています。

## キャッシュがクリアされる操作およびその範囲

### 管理画面からの操作

キャッシュがクリアされる管理画面上の操作と、クリアされるキャッシュの範囲は以下の通りです。

| 操作 | 操作詳細 | クリアされるキャッシュの単位 |
|-----------|-----------|-----------|
|コンテンツ編集|コンテンツを新規作成|コンテンツ定義グループID単位。<br/>モデルカテゴリーが「コンテンツ」で、同じコンテンツ定義グループに関連づけられているエンドポイント(コンテンツ定義IDが未設定を含む)のキャッシュが削除されます。<br/><br/>※Topics::detailsのみコンテンツID単位でキャッシュが削除されます。|
||コンテンツを更新|コンテンツ定義グループID単位。<br/>モデルカテゴリーが「コンテンツ」で、同じコンテンツ定義グループに関連づけられているエンドポイント(コンテンツ定義IDが未設定を含む)のキャッシュが削除されます。<br/><br/>※Topics::detailsのみコンテンツID単位でキャッシュが削除されます。|
||コンテンツを削除|コンテンツ定義グループID単位。<br/>モデルカテゴリーが「コンテンツ」で、同じコンテンツ定義グループに関連づけられているエンドポイント(コンテンツ定義IDが未設定を含む)のキャッシュが削除されます。<br/><br/>※Topics::detailsのみコンテンツID単位でキャッシュが削除されます。|
||コンテンツを承認|コンテンツ定義グループID単位。<br/>モデルカテゴリーが「コンテンツ」で、同じコンテンツ定義グループに関連づけられているエンドポイント(コンテンツ定義IDが未設定を含む)のキャッシュが削除されます。<br/><br/>※Topics::detailsのみコンテンツID単位でキャッシュが削除されます。|
||コンテンツの並び順更新|コンテンツ定義グループID単位。<br/>モデルカテゴリーが「コンテンツ」で、同じコンテンツ定義グループに関連づけられているエンドポイント(コンテンツ定義IDが未設定を含む)のキャッシュが削除されます。<br/><br/>※Topics::detailsのみコンテンツID単位でキャッシュが削除されます。|
|コンテンツアップロード|CSVファイルをアップロード|コンテンツ定義グループID単位。<br/>モデルカテゴリーが「コンテンツ」で、同じコンテンツ定義グループに関連づけられているエンドポイント(コンテンツ定義IDが未設定を含む)のキャッシュが削除されます。<br/><br/>※Topics::detailsのみコンテンツID単位でキャッシュが削除されます。|
|コンテンツカテゴリ編集|コンテンツカテゴリを新規作成|コンテンツ定義グループID単位。<br/>モデルカテゴリーが「コンテンツ」で、同じコンテンツ定義グループに関連づけられているエンドポイント(コンテンツ定義IDが未設定を含む)のキャッシュが削除されます。<br/>※Topics::detailsを除く|
||コンテンツカテゴリを更新|コンテンツ定義グループID単位。<br/>モデルカテゴリーが「コンテンツ」で、同じコンテンツ定義グループに関連づけられているエンドポイント(コンテンツ定義IDが未設定を含む)のキャッシュが削除されます。<br/>※Topics::detailsを除く|
||コンテンツカテゴリを削除|コンテンツ定義グループID単位。<br/>モデルカテゴリーが「コンテンツ」で、同じコンテンツ定義グループに関連づけられているエンドポイント(コンテンツ定義IDが未設定を含む)のキャッシュが削除されます。<br/>※Topics::detailsを除く|
|[外部システム連携] Wordpress|インポート|コンテンツ定義グループID単位。<br/>モデルカテゴリーが「コンテンツ」で、同じコンテンツ定義グループに関連づけられているエンドポイント(コンテンツ定義IDが未設定を含む)のキャッシュが削除されます。<br/><br/>※Topics::detailsのみコンテンツID単位でキャッシュが削除されます。|
|フォーム編集|フォームを新規作成|フォームID単位。<br/>モデルカテゴリーが「フォーム」で、同じフォームIDに関連づけられている全てのエンドポイントのキャッシュが削除されます。|
||フォームを削除|フォームID単位。<br/>モデルカテゴリーが「フォーム」で、同じフォームIDに関連づけられている全てのエンドポイントのキャッシュが削除されます。|
||フォーム基本情報・項目設定を更新|フォームID単位。<br/>モデルカテゴリーが「フォーム」で、同じフォームIDに関連づけられている全てのエンドポイントのキャッシュが削除されます。|
|フォーム回答|CSVアップロード|フォームID単位。<br/>モデルカテゴリーが「フォーム」で、同じフォームIDに関連づけられている全てのエンドポイントのキャッシュが削除されます。|
|メンバー編集|メンバーを追加|モデルカテゴリー単位。<br/>モデルカテゴリー「メンバー」および「認証」に関連づけられている全てのエンドポイントのキャッシュが削除されます。|
||メンバーを更新|モデルカテゴリー単位。<br/>モデルカテゴリー「メンバー」および「認証」に関連づけられている全てのエンドポイントのキャッシュが削除されます。|
|マスタ編集|マスタを更新|マスタID単位。<br/>同じマスタIDに関連づけられている全てのエンドポイントのキャッシュが削除されます。|
||マスタを削除|マスタID単位。<br/>同じマスタIDに関連づけられている全てのエンドポイントのキャッシュが削除されます。|
|ファイルマネージャー編集|ファイル・フォルダに対する何らかの操作|フォルダ単位。<br/>同じフォルダ内に関連するキャッシュが削除されます。|
|タグ編集|タグを削除|モデルカテゴリー単位。<br/>モデルカテゴリー「タグ」に関連づけられている全てのエンドポイントのキャッシュが削除されます。|
||並び順を更新する|モデルカテゴリー単位。<br/>モデルカテゴリー「タグ」に関連づけられている全てのエンドポイントのキャッシュが削除されます。|
||タグを新規作成|モデルカテゴリー単位。<br/>モデルカテゴリー「タグ」に関連づけられている全てのエンドポイントのキャッシュが削除されます。|
||タグを更新|モデルカテゴリー単位。<br/>モデルカテゴリー「タグ」に関連づけられている全てのエンドポイントのキャッシュが削除されます。|

### APIからの操作

APIキャッシュは、管理画面の操作だけではなく、更新系APIがリクエストされた時にもクリアされることがあります。  
API経由での操作と、クリアされるキャッシュの範囲は以下の通りです。

| モデル | オペレーション | クリアされるキャッシュの単位 |
|-----------|-----------|-----------|
|Topics|insert|コンテンツ定義グループID単位。<br/>モデルカテゴリーが「コンテンツ」で、同じコンテンツ定義グループに関連づけられているエンドポイント(コンテンツ定義IDが未設定を含む)のキャッシュが削除されます。<br/><br/>※Topics::detailsのみコンテンツID単位でキャッシュが削除されます。|
||update|コンテンツ定義グループID単位。<br/>モデルカテゴリーが「コンテンツ」で、同じコンテンツ定義グループに関連づけられているエンドポイント(コンテンツ定義IDが未設定を含む)のキャッシュが削除されます。<br/><br/>※Topics::detailsのみコンテンツID単位でキャッシュが削除されます。|
||delete|コンテンツ定義グループID単位。<br/>モデルカテゴリーが「コンテンツ」で、同じコンテンツ定義グループに関連づけられているエンドポイント(コンテンツ定義IDが未設定を含む)のキャッシュが削除されます。<br/><br/>※Topics::detailsのみコンテンツID単位でキャッシュが削除されます。|
||accept|コンテンツ定義グループID単位。<br/>モデルカテゴリーが「コンテンツ」で、同じコンテンツ定義グループに関連づけられているエンドポイント(コンテンツ定義IDが未設定を含む)のキャッシュが削除されます。<br/><br/>※Topics::detailsのみコンテンツID単位でキャッシュが削除されます。|
||bulk_upse|コンテンツ定義グループID単位。<br/>モデルカテゴリーが「コンテンツ」で、同じコンテンツ定義グループに関連づけられているエンドポイント(コンテンツ定義IDが未設定を含む)のキャッシュが削除されます。<br/><br/>※Topics::detailsのみコンテンツID単位でキャッシュが削除されます。|
||increment|コンテンツ定義グループID単位。<br/>モデルカテゴリーが「コンテンツ」で、同じコンテンツ定義グループに関連づけられているエンドポイント(コンテンツ定義IDが未設定を含む)のキャッシュが削除されます。<br/><br/>※Topics::detailsのみコンテンツID単位でキャッシュが削除されます。|
|InquiryForm|insert|フォームID単位。<br/>モデルカテゴリーが「フォーム」で、同じフォームIDに関連づけられている全てのエンドポイントのキャッシュが削除されます。|
||delete|フォームID単位。<br/>モデルカテゴリーが「フォーム」で、同じフォームIDに関連づけられている全てのエンドポイントのキャッシュが削除されます。|
||update|フォームID単位。<br/>モデルカテゴリーが「フォーム」で、同じフォームIDに関連づけられている全てのエンドポイントのキャッシュが削除されます。|
|Comment|insert|モデルカテゴリー「アクティビティ」に関連づけられている全てのエンドポイントのキャッシュが削除されます。<br/>また、アクティビティがコンテンツに紐づけられている場合は、そのコンテンツ定義グループに関連づけられているエンドポイントのキャッシュも削除されます。<br/>アクティビティがコンテンツ以外のモデルに紐づけられている場合は、そのモデルに関連づけられているエンドポイントのキャッシュが削除されます。|
||update|モデルカテゴリー「アクティビティ」に関連づけられている全てのエンドポイントのキャッシュが削除されます。<br/>また、アクティビティがコンテンツに紐づけられている場合は、そのコンテンツ定義グループに関連づけられているエンドポイントのキャッシュも削除されます。<br/>アクティビティがコンテンツ以外のモデルに紐づけられている場合は、そのモデルに関連づけられているエンドポイントのキャッシュが削除されます。|
||delete|モデルカテゴリー「アクティビティ」に関連づけられている全てのエンドポイントのキャッシュが削除されます。<br/>また、アクティビティがコンテンツに紐づけられている場合は、そのコンテンツ定義グループに関連づけられているエンドポイントのキャッシュも削除されます。<br/>アクティビティがコンテンツ以外のモデルに紐づけられている場合は、そのモデルに関連づけられているエンドポイントのキャッシュが削除されます。|
|Member|insert|モデルカテゴリー単位。<br/>モデルカテゴリー「メンバー」および「認証」に関連づけられている全てのエンドポイントのキャッシュが削除されます。|
||update|モデルカテゴリー単位。<br/>モデルカテゴリー「メンバー」および「認証」に関連づけられている全てのエンドポイントのキャッシュが削除されます。|
|Master|update|マスタID単位。<br/>同じマスタIDに関連づけられている全てのエンドポイントのキャッシュが削除されます。|
||delete|マスタID単位。<br/>同じマスタIDに関連づけられている全てのエンドポイントのキャッシュが削除されます。|
|Favorite|insert|モデルカテゴリー単位<br/>お気に入りの対象となるモデルカテゴリーに関連づけられている全てのエンドポイントのキャッシュが削除されます。<br/>また、お気に入り追加/削除を実施したコンテンツのコンテンツ定義が指定されたTopics::listのエンドポイントもキャッシュが削除されます。|
||delete|モデルカテゴリー単位<br/>お気に入りの対象となるモデルカテゴリーに関連づけられている全てのエンドポイントのキャッシュが削除されます。<br/>また、お気に入り追加/削除を実施したコンテンツのコンテンツ定義が指定されたTopics::listのエンドポイントもキャッシュが削除されます。|
|Tag|delete|モデルカテゴリー単位。<br/>モデルカテゴリー「タグ」に関連づけられている全てのエンドポイントのキャッシュが削除されます。|
||insert|モデルカテゴリー単位。<br/>モデルカテゴリー「タグ」に関連づけられている全てのエンドポイントのキャッシュが削除されます。|
|Approvalflow|review|各コンテンツの承認/却下時のキャッシュ削除ロジックに従います。|

### 手動でのキャッシュクリア

上記以外の動作では自動でのキャッシュクリアは行われません。  
すぐにキャッシュをクリアしたい場合はエンドポイント一覧のページで、[キャッシュクリアする]のボタンをクリックし、手動でのキャッシュクリアをしてください。  

### Smartyプラグインによるキャッシュクリア
キャッシュクリアの範囲やタイミングを任意に指定して、自動でキャッシュクリアをしたい場合は[purge_cdn_cache](/ja/docs/reference/smarty-plugin/#purge_cdn_cache)のSmartyプラグインを利用します。  

例えば、`Favorite::insert`のエンドポイントを利用した後、`Topics::details`のエンドポイントのキャッシュをクリアしたい場合、
以下のカスタム処理を`Favorite::insert`の後処理に設定します。

```smarty
{purge_cdn_cache api_endpoint='/rcms-api/1/content/details'}
{assign var='processed_json' value=$json}
```

## キャッシュクリアの確認
アプリケーションログのメッセージ[1]に`purgeAPI`と残されているログがキャッシュクリアのログになるので、こちらでキャッシュのクリアをしているかをご確認ください。  
メッセージ[3]に`topics:1`が残っている場合、コンテンツ定義:1のAPIのキャッシュをクリアしていることを意味します。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/0312e451c428ffeaa81d31e0442f2abd.png)

## 関連項目

[APIのキャッシュについて](/ja/docs/reference/api-cache/)
