---
title: Kuroco利用料の最適化
description: Kuroco利用料が高くなった時に確認すべき項目と、APIリクエスト削減、キャッシュ比率向上、KurocoFront容量削減の具体的な方法について説明します。
---

Kuroco利用料が高くなった時に、効果的に費用を削減するための手順を説明します。以下の流れで対策を実施することで、利用料を最適化できます。

## 利用料を確認する

まず、現在の利用状況と費用内訳を確認します。

### 確認手順

1. [環境設定] -> [利用状況]をクリック  
2. 「管理サイト全体の費用」で項目別の費用を確認  
3. 「コストチャート」で費用の推移を確認  
  (定額契約の場合、コストチャートは表示されません。)
4. 「日別利用量」で詳細な利用状況を確認  

### 主要な費用項目

日別利用量では以下の項目毎に利用料が確認できます。  
それぞれの項目に対して、費用削減の例を紹介しますので、参考に調整をしてください。

- [キャッシュされたAPIリクエスト](#キャッシュ比率を上げる)
- [APIリクエスト](#apiリクエストを減らす)
- [API転送量](#api転送量を減らす)
- API追加処理時間
- [KurocoFront転送量](#kurocofront転送量を減らす)
- [KurocoFiles転送量](#kurocofiles転送量を減らす)
- メール
- AI処理ユニット
- バッチ処理時間
- [DBファイル容量](#dbファイル容量を減らす)
- [ファイル容量](#ファイル容量を減らす)
- [KurocoFrontファイル容量](#kurocofrontファイル容量を減らす)
- ログ容量
- [バックアップファイル容量](#バックアップファイル容量を減らす)

:::tip  
[オペレーション]->[ログ管理]で各ログを確認し、より詳細な分析が可能です。
:::

## Kuroco利用料の最適化を行う
### キャッシュ比率を上げる
キャッシュされたAPIリクエストは通常のAPIリクエストより安価なため、Kuroco利用料の削減にはキャッシュ比率の向上が重要です。

#### Cookie認証を静的アクセストークンに変更
セッションごとにキャッシュが作成されるCookieに対して、静的アクセストークンはトークン毎にキャッシュが作成されるため、セキュリティを静的アクセストークンに変更することでキャッシュ比率の改善が見込めます。  
認証が不要なエンドポイントは静的アクセストークンを利用することを検討してください。

- [Swagger UIを利用して、APIのセキュリティを確認する](/ja/docs/tutorials/how-to-use-swagger-ui/)

:::caution
フロントエンド側の調整も必要になります。
:::

#### APIエンドポイントのキャッシュ設定
エンドポイントにキャッシュの設定をしていない場合は設定をお願いいたします。  
Kurocoでは1日や1週間といった設定をお勧めしておりますが、コンテンツが更新された際に自動でキャッシュがクリアされる仕組みがございますので、長く設定しても問題にはなりにくいです。

#### キャッシュの削除されないエンドポイントを作成する。
Kurocoではデータを最新に保つため、コンテンツの更新があった際に自動でキャッシュをクリアする仕組みがございます。

`Topics::list`の代わりに、キャッシュのクリアがされない`Api::request_api`のエンドポイントなどを利用することでキャッシュ比率の改善が可能な場合があります。

- [コンテンツカテゴリ毎にキャッシュがクリアされるリストのエンドポイントを作成する](/ja/docs/tutorials/create-an-endpoint-that-clears-the-cache-by-content-category/)

:::caution
キャッシュクリアのタイミングや範囲をご自身で設定する必要があることに注意してください。
:::

---
### APIリクエストを減らす
#### SSG（Static Site Generation）の活用
サイトのレンダリング方式をSSGにすると、APIを利用したデータの取得がデプロイ時のみになるため、一般的にはAPIのリクエスト数が減ることが多いです。

:::caution
クライアントサイドからリクエストを送るページはAPIリクエスト数の削減になりません。  
また、1日当たりのデプロイ回数やPV数によってはAPIリクエスト数が減らないこともございます。  
事前に試算することが重要です。  
:::

#### 内部API呼び出しの最適化

`{api_internal}`のSmartyプラグインはネットワーク経由のリクエストになるため、APIリクエスト数にカウントされます。
`direct=true`の設定をしたり、`{api_method}`のSmartyプラグインに置き換える事でAPIリクエスト数の削減が可能です。

- [カスタム処理で呼び出したAPIの利用料について教えてください](/ja/docs/faq/api-usage-fees-for-custom-processing/)

#### API呼び出しの最適化
ページ毎にリクエストを送ってデータの取得をしているAPIはフロントエンドのページ数が増えるとリクエスト数も増加します。  
ページ毎ではなく、事前にデータを取得してからページの生成をするように設計すると、APIリクエスト数を削減できる場合があります。

例えば、`Topics::details`のリクエスト数を減らすために`Topics::list`で取得するケースなどが考えられます。  
- [Nuxt.jsのSSGを使用してAPIコール回数を削減できますか？](/ja/docs/faq/can-i-use-nuxt-js-ssg-to-reduce-api-calls/)

ただし、APIのリクエスト数を減らすために一度に大量のデータを取得すると、レスポンスに時間がかかり、コンピューティング費用がかかる場合があります。
APIレスポンスの件数は、1回あたり 20件から200件程度 にとどめることをお勧めします。
また、後処理で必要な項目を絞ることで、処理速度が向上する場合があります。その場合は、1,000件程度のデータを一括で取得することも選択肢となります。

#### 不要なAPIの削除
- フロントエンドから不要なAPI呼び出しがないか確認してください。

#### ファイルアクセス時のドメイン最適化
APIドメインでファイルにアクセスすると、APIリクエストとしてカウントされます。必要に応じて、Filesドメインへの置き換えをご検討ください。
- [KurocoFilesディレクトリとドメインの使い分けについて](/ja/docs/tutorials/kurocofiles-directories-and-domains-usage/)

---
### API転送量を減らす
#### 後処理で出力許可リストを設定する
API転送量を減らすには、エンドポイントのレスポンスサイズを小さくする必要があります。
エンドポイントの後処理で出力許可リストを設定し、必要な項目のみレスポンスさせることは、レスポンス容量を減らし、API転送量の削減に効果があります。

- [出力許可リスト](/ja/docs/reference/post-processing/#出力許可リスト)

---
### KurocoFront転送量を減らす
#### 404ページの最適化
ボットやクローラーがURLを予想して巡回することで、存在しないURLにアクセスされることがありますが、
この場合でもKurocoFrontが404のページを表示するためにCDN転送量が発生します。  

`存在しないページへのアクセス数`×`404ページの容量`の分だけCDN転送量が発生することになりますので、
404を始めとしたエラーページはできるだけ軽量に設計すると、CDN転送量の削減になります。

---
### KurocoFiles転送量を減らす
#### 画像の動的変換で適切な画像サイズでCDNに記録する
動的変換の機能を利用すると、画像の大きさや品質などを動的に変更し、変更した内容でCDNキャッシュを残します。
適切な変換を行った画像に対してリクエスト・読込を行う事で、無駄に大きな画像のCDN読込を防止し、CDN転送量の削減を図ります。

- [画像の動的変換について](/ja/docs/reference/api-convert-image/)

---
### DBファイル容量を減らす
#### 更新履歴の削除
コンテンツ定義編集の詳細設定で、更新履歴を残さないを有効にすると、過去の更新履歴は削除され、以降の更新で更新履歴が残らなくなります。
更新履歴が不要な場合は有効にするとDBファイル容量の削減に効果があります。

:::caution  
削除された更新履歴は復元できません。  
:::

---
### ファイル容量を減らす
#### ファイルサイズの最適化
動的変換の機能で、画像の大きさや品質などを動的に変更して適切に利用していても、ファイル容量の項目には元ファイルの容量分の利用料が課金されます。  
元画像の容量が必要以上に大きい場合は、調整した画像をKurocoFilesに設置することでファイル容量の削減が可能です。

---
### KurocoFrontファイル容量を減らす
#### 90日以上前のファイル削除設定
KurocoFrontはコミットハッシュごとにファイルを保管しますので、古いファイルは自動で削除をする設定を有効化します。

1. [環境設定] → [KurocoFront設定]  
2. 「90日以上前のファイルを削除する」を有効化  

#### 画像等をKurocoFilesに移動
KurocoFrontはデプロイのファイルを保管し、「90日以上前の履歴を削除する」の設定をしても90日間は削除されません。  
そのため、画像等の静的ファイルもデプロイのたびにKurocoFrontに溜まっていき、ストレージ料金が余計にかかります。

静的な画像やファイルはKurocoFilesを利用することで、KurocoFront容量の削減に効果があります。

- [画像・ファイル管理におけるKurocoFilesとKurocoFrontの使い分けについて](/ja/docs/tutorials/difference-between-kurocofiles-and-kurocofront/) 

---
### バックアップファイル容量を減らす
#### 不要なバックアップを削除する
[環境設定]->[[バックアップ](/ja/docs/management/backup/)]に不要なバックアップファイルがある場合は削除をしてください。
`{backup}`,`{backup_delete}`のSmartyプラグインで自動的にバックアップを追加・削除するバッチ処理を作成するのも有効です。


## 関連ドキュメント

- [利用状況](/ja/docs/management/usage/)  
- [どのようなときに従量課金として計上されますか](/ja/docs/faq/how-much-does-kuroco-cost/)  
- [Nuxt.jsのSSGを使用してAPIコール回数を削減できますか？](/ja/docs/faq/can-i-use-nuxt-js-ssg-to-reduce-api-calls/)  
- [カスタム処理で呼び出したAPIの利用料について教えてください](/ja/docs/faq/api-usage-fees-for-custom-processing/)  
- [利用料金](https://kuroco.app/ja/pricing/)  
