Flask(werkzeug)のetag周りのソースコードを見てみると、etag周りの処理は以下のようになっています。
- responseオブジェクトを生成
- そのレスポンスデータからetagをsha1で生成
- リクエストのif-none-matchがあれば、そのetagと比較し、一致すれば304、違えば200とともにレスポンスデータを返す
つまり、レスポンスするのにDB等にアクセスが必要な場合、その処理はetagがあってもなくても同じで、etagのメリットはクライアントにデータを送らなくていいだけということだと認識しています。
したがって、データ量が多ければメリットはありますが、それほどデータが大きくない場合はあまり意味がないと考えていいのでしょうか。多くの小さなAPIはそこまで大きなデータを返さないと思うので個人開発などそのレベルならあまり意味がないのでしょうか。
一つ思ったのは、リクエストの度にレスポンスからetagを再作成するのではなく、リクエストの対象となるオブジェクトに変更があった際に、redisやサーバーのメモリなどにetagを予め保存しておき、リクエスト時にその保存しておいたetagと比較すれば毎回レスポンスを作る処理が省けると思ったのですが、このようなキャッシュの方法はあまり使われないのでしょうか?
ご教授いただけると幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。