RailsのHTTPキャッシュとFaraday
何か
Railsの「HTTPキャッシングとFaraday」の世界を冒険しながら学ぶ(翻訳)|TechRacho by BPS株式会社を読んだメモ
Faradayのキャッシュミドルウェアを使ったらメモリが肥大化する問題が発生した。その原因は何かを探った記事。
原因
要するに、StackBlitzのユーザーから送信されたあらゆるAPIリクエストが、毎回同じキャッシュキーに新しい値を追加していたのが原因でした。以後のあらゆるリクエストは、それらのレスポンスをすべてフェッチして、メモリ上にあるものすべてについてキャッシュ済みの値がフレッシュかどうかを1個ずつチェックしていたというわけです。🤯
キャッシュキーにVary関係なく同一URLで全てのユーザーのキャッシュを毎回更新させてしまっていたというわけ
Cache-ControlをはじめとしたHTTPキャッシュの話が解説されている
HTTPキャッシュを使用して不要なネットワーク要求を防ぐの記事が便利
そういえばIf-Modified-Sinceってなんだっけ
If-Modified-Since | 鳩丸ぐろっさり (用語集)
例えばリクエスト側がIf-Modified-Sinceに2022/05/01 12:00を設定した場合、サーバー側は2022/05/01 11:59までは304 Not Modifiedを返す。それ以降は200を返す。
リソースのキャッシュを更新すべきかどうかを判断するための要求ヘッダー
参考
Railsの「HTTPキャッシングとFaraday」の世界を冒険しながら学ぶ(翻訳)|TechRacho by BPS株式会社
HTTPキャッシュを使用して不要なネットワーク要求を防ぐ
Cache-Controlフローチャート便利
キャッチアップリスト