組み込みシステムでカスタム Web サーバーを使用していますが、キャッシュ用の HTTP ヘッダーを正しく設定するのに問題があります。
私たちの Web サーバーはすべての動的コンテンツを XML として生成し、半静的 XSL ファイルを使用して、適切な測定のためにいくつかの動的 JSON 要求を半静的画像とともにスローして表示しています。XSL とイメージ ファイルを変更する可能性のあるファームウェアの更新を行う必要がある場合に問題が発生するため、「半静的」と言います。
XSL および画像ファイルをキャッシュし、XML および JSON 応答をキャッシュしないようにする必要があります。私は HTTP 応答を完全に制御しており、現在:
- XSL ファイルと画像ファイルで ETag を使用し、変更された時間とサイズを使用して ETag を生成する
- Cache-Control の設定: XML および JSON 応答に対するキャッシュなし
前述したように、XSL とイメージ ファイルが時々キャッシュされるファームウェアの更新まで、すべてがうまく機能します。最新バージョンの Firefox と Safari では問題なく動作することを確認しましたが、IE ではいくつか問題がありました。
この問題の解決策の 1 つは、バージョンごとに XSL ファイルと画像ファイルの名前を変更し (例: logo-v1.1.png、logo-v1.2.png)、Expires ヘッダーを将来の日付に設定することです。これは XSL ファイルでは難しいので、避けたいと思います。
注: ユニットには時計がありますが、ユーザーが設定する必要があり、100% 信頼できない可能性があるため、ETag を使用するときにキャッシュの問題が発生する可能性があります。
採用すべきベストプラクティスは何ですか? できるだけ多くの Web サーバー リクエストを回避したいのですが、ソフトウェアの更新後に古い XSL ファイルとイメージ ファイルを無効にすることが最優先事項です。