zenn.dev 2日前

キャッシュは単に「速くする機能」ではなく、「誰のレスポンスを共有してよいか」を決める設計でもある【個人開発】

個人開発サービス「声の価格」の価格表にCloudFrontの共有キャッシュを導入した事例。ログイン状態で表示が変わるページを誤って共有すると別ユーザーに情報が漏れるため、WordPress側でGET/HEAD・対象パス完全一致・未ログイン・ページ・非404を満たすリクエストのみCache-Controlでpublic許可し、Set-Cookie発行時は共有キャッシュを避ける実装にしている。CloudFront側もCookieをキャッシュキーに含めてログイン中と匿名アクセスを分離し、min_ttl=0でオリジンのprivate/no-store指定を上書きしないようにしている。curlでのMiss/Hit確認とPHPUnitでの境界条件テストで動作を検証している。

個人開発サービス「声の価格」の価格表にCloudFrontの共有キャッシュを導入した事例。ログイン状態で表示が変わるページを誤って共有すると別ユーザーに情報が漏れるため、WordPress側でGET/HEAD・対象パス完全一致・未ログイン・ページ・非404を満たすリクエストのみCache-Controlでpublic許可し、Set-Cookie発行時は共有キャッシュを避ける実装にしている。CloudFront側もCookieをキャッシュキーに含めてログイン中と匿名アクセスを分離し、min_ttl=0でオリジンのprivate/no-store指定を上書きしないようにしている。curlでのMiss/Hit確認とPHPUnitでの境界条件テストで動作を検証している。
↗ 元記事を開く