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