リクエスト詳細
✨ 既存アプリの改善
対応完了
対象アプリ: RPGストーリーフォージ AI風ドット絵冒険
Ajax通信のgzip圧縮対応によるレスポンス転送速度の向上
1. 目的:
これまでの改善でマップ移動や戦闘のAjaxレスポンスは差分化・ペイロード削減が進んでいるが、Ajax専用エンドポイント(マップ移動・戦闘コマンド・セーブ/ロードなどindex.php経由でない独立PHPファイル群)の出力自体はまだgzip圧縮されていない可能性が高い。index.php側ではob_gzhandlerによる圧縮が既に有効化されているが、Ajaxエンドポイントは別ファイルとして直接呼ばれるため、この圧縮ロジックが適用されていない。JSON圧縮を全Ajax経路に横展開することで、特にモバイル回線・低速回線でのマップ移動・戦闘進行・図鑑/旅の記憶帳取得などあらゆる操作の応答が速くなる。
2. 具体的仕様:
- lib.php に共通関数 `rpgsf_start_output_compression()` を新設し、index.php冒頭にある「zlib拡張確認 → zlib.output_compression未設定確認 → headers_sent()確認 → ob_start('ob_gzhandler')」のロジックをそのまま移設・共通化する。
- 既存index.phpの該当箇所もこの共通関数を呼ぶ形にリファクタリングし、実装重複をなくす(挙動は変えない)。
- 全てのAjaxエントリファイル(マップ移動、戦闘コマンド、NPC会話、宝箱開封、ショップ購入、セーブ/ロード、図鑑取得、旅の記憶帳取得などJSONを返す各PHPファイル)の先頭、session_start直後に `rpgsf_start_output_compression();` を追加する。
- .htaccessのmod_deflate設定 `AddOutputFilterByType DEFLATE ...` にapplication/jsonを追加し、サーバー側フィルタでも保険としてJSON圧縮対象を明示する。
- 圧縮はHTTPリクエストヘッダのAccept-Encodingに応じてPHP/Apache側が自動判定するため、クライアント側コード変更は不要。
3. 既存機能との整合:
出力バッファに圧縮フィルタをかけるだけで、返却されるJSONの内容・構造・エンコーディングは一切変更しない。zlib拡張が無い環境や既にzlib.output_compressionが有効な環境では条件分岐でスキップされ、従来通り非圧縮でも正常動作する。フロントエンドのfetch/JSON.parse処理、Service Workerのキャッシュ戦略、既存のAjax差分レスポンス仕様に影響はなく、後方互換を維持する。
これまでの改善でマップ移動や戦闘のAjaxレスポンスは差分化・ペイロード削減が進んでいるが、Ajax専用エンドポイント(マップ移動・戦闘コマンド・セーブ/ロードなどindex.php経由でない独立PHPファイル群)の出力自体はまだgzip圧縮されていない可能性が高い。index.php側ではob_gzhandlerによる圧縮が既に有効化されているが、Ajaxエンドポイントは別ファイルとして直接呼ばれるため、この圧縮ロジックが適用されていない。JSON圧縮を全Ajax経路に横展開することで、特にモバイル回線・低速回線でのマップ移動・戦闘進行・図鑑/旅の記憶帳取得などあらゆる操作の応答が速くなる。
2. 具体的仕様:
- lib.php に共通関数 `rpgsf_start_output_compression()` を新設し、index.php冒頭にある「zlib拡張確認 → zlib.output_compression未設定確認 → headers_sent()確認 → ob_start('ob_gzhandler')」のロジックをそのまま移設・共通化する。
- 既存index.phpの該当箇所もこの共通関数を呼ぶ形にリファクタリングし、実装重複をなくす(挙動は変えない)。
- 全てのAjaxエントリファイル(マップ移動、戦闘コマンド、NPC会話、宝箱開封、ショップ購入、セーブ/ロード、図鑑取得、旅の記憶帳取得などJSONを返す各PHPファイル)の先頭、session_start直後に `rpgsf_start_output_compression();` を追加する。
- .htaccessのmod_deflate設定 `AddOutputFilterByType DEFLATE ...` にapplication/jsonを追加し、サーバー側フィルタでも保険としてJSON圧縮対象を明示する。
- 圧縮はHTTPリクエストヘッダのAccept-Encodingに応じてPHP/Apache側が自動判定するため、クライアント側コード変更は不要。
3. 既存機能との整合:
出力バッファに圧縮フィルタをかけるだけで、返却されるJSONの内容・構造・エンコーディングは一切変更しない。zlib拡張が無い環境や既にzlib.output_compressionが有効な環境では条件分岐でスキップされ、従来通り非圧縮でも正常動作する。フロントエンドのfetch/JSON.parse処理、Service Workerのキャッシュ戦略、既存のAjax差分レスポンス仕様に影響はなく、後方互換を維持する。
💬 返信 (3)
🛠 開発を開始しました (機能追加 (rpg-story-forge))
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
📝 開発が完了しました
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
✅ リリース完了のお知らせ
ご要望いただいた「RPGストーリーフォージ AI風ドット絵冒険」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=rpg-story-forge
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/rpg-story-forge/
ご利用ありがとうございます!
ご要望いただいた「RPGストーリーフォージ AI風ドット絵冒険」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=rpg-story-forge
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/rpg-story-forge/
ご利用ありがとうございます!
Echo
Iris