Compojure Web サーバーからページをフェッチするクライアントのパフォーマンスを改善しようとしています。を使用して一連の静的ファイル (JS、CSS) を(compojure.route/resources "/")提供します。これは、ファイル システム上のファイルを検索し、それらを URL に変換してから、Ring にストリームとして提供します。ストリームに変換することで、mod 時間などのすべてのファイル メタデータが失われるようです。
static-resource ハンドラーをラップしてExpiresorCache-Control: max-ageヘッダーを追加することはできますが、それではクライアントがリクエストをまったく送信できなくなります。便利ですが、これらのファイルはときどき変更されます (リリースを出すとき)。
理想的には、クライアントがキャッシュされた独自のバージョンをたとえば 1 時間信頼し、If-Modified-Sinceその時間が経過した後にヘッダーを使用してリクエストを行うようにしたいと考えています。その後、戻るだけ304 Not Modifiedで、クライアントは数百キロの JavaScript のダウンロードを回避できます。
応答を提供するときにヘッダーを設定できるように見えます。Last-Modifiedこれにより、クライアントは後続の要求をIf-Modified-Sinceヘッダーで修飾します。compojure.route/resources追加するためにほとんどのコードを書き直さなければならないことを除けば、素晴らしいことですLast-Modified- 難しいことではありませんが、退屈です - そして、If-Modified-Sinceヘッダーを認識して応答するためのコードをさらに発明します。記念碑的な仕事ではありませんが、単純なものでもありません。
これはすでにどこかに存在しますか?私はそれを見つけることができませんでしたが、それは十分に一般的で、十分に大きなタスクであるように思えます。