私は最近、Go で http 応答をキャッシュすることに夢中になっており、適切な ETag を生成するための最も効率的な方法を見つけようとしています。
現在、次のデータが利用可能です。
- テンプレートをレンダリングするときにレンダリングされるテンプレートの名前。
- json 応答のテンプレートまたは応答に渡される動的データ。
- 応答本文全体。
- 本体の長さ。
- 私が見逃しているかもしれない何か?
少し考えた後、テンプレートの名前と生成される動的データを組み合わせると、理論的には最小限のオーバーヘッドで正当な一意の ETag を作成する必要があるという結論に達しましたが、 30kb の html 相当のデータベース結果を返したいと思っています。
Go の stdlib の crc32 ルーチンを使用して、渡したデータから ETag を生成しています。
ETag を生成したり、動的データをキャッシュしたりするより良い方法はありますか? ファイルが変更されなくてもデータが変更される可能性があるため、ファイルの最終変更時刻を監視することはできません。