静的ファイル(.js、.css)を参照するhtmlファイルをレンダリングするとき、どのようにキャッシュ無効化を処理しますか?ファイルを変更するたびにblabla.css?v = VERSIONNUMBERを手動で変更しますか?あなたはファイルのmtimeに基づいていくつかの自動メカニズムを持っていますか?node.jsキャッシュ無効化テクニック
答えて
HTTPプロトコルに準拠しているので、キャッシュ用に設計されています。 If-none-match
リクエストヘッダーをチェックすることによって、各レスポンスにETag
レスポンスヘッダーを提供し、条件付きリクエストのサポートを追加するだけです。
エンティティタグを計算する良い方法は、ファイルを格納する方法によって異なります。典型的な* nixファイルシステムでは、inode値が良いスタートです。
例:特殊なケースで
fs.stat(filePath, function(err, stats) {
if (err || !stats.isFile()) {
//oops
}
else {
var etag = '"' + stats.ino + '-' + stats.size + '-' + Date.parse(stats.mtime) + '"';
//if etag in header['if-non-match'] => 304
//else serve file with etag
}
});
、あなたも、メモリ内のETag、あるいはファイルをキャッシュして、すぐにファイルの変更などのエントリを無効化するために、fs.watchFile()
コールバックを登録したい場合があります。
ありがとう。しかし、私はいくつかのブラウザがそのようなヘッダーを無視し、キャッシュにファイルがあるかどうか確認するのをやらないと思います。どういうわけか、あなたの提案がまだ解決していないのですか? –
さらに.. FireFoxは..ええ.. *私に(ファイヤーバグで)嘘をついていますか?そのネットタブでは、これらの静的ファイルを取得していい200 HTTPレスポンスで返す要求が出ていますが、_reality_では自分のサーバーにヒットせず、Fiddlerに表示されません(非常に積極的なローカルキャッシュによって処理されます) - 私は何かが欠けている場合は再び私に理解させてください。 –
- 1. jQuery.ajax - キャッシュ強制無効化
- 2. ドクトリン2結果キャッシュの無効化
- 3. Symfony 3.1キャッシュコンポーネントのキャッシュ無効化
- 4. スタックオーバーフロー、Redis、およびキャッシュの無効化
- 5. シリアル化キャッシュを無効にする
- 6. Springでの自動キャッシュ無効化
- 7. IBM Websphereのコマンド・キャッシュの無効化
- 8. 汎用リポジトリのキャッシュ無効化
- 9. サーバ間でのキャッシュの無効化
- 10. データベース層のキャッシュ、トリガー、無効化
- 11. RequireJSのURLキャッシュ無効化パラメータ?
- 12. 角度テンプレートとキャッシュ無効化
- 13. 無効キャッシュ
- 14. キャッシュを無効
- 15. キャッシュ無効通知SqlCacheDependency
- 16. Webpack静的ウェブサイトの画像キャッシュ無効化
- 17. テーブル内の更新時に無効化キャッシュ
- 18. TYPO3:特定のプラグインの無効化キャッシュ/拡張
- 19. CLIを使用したクライアント側のキャッシュ無効化
- 20. キャッシュ無効化を使用したDjango静的ファイル
- 21. キャッシュの無効化 - クエリ文字列はURLパス対
- 22. キャッシュとすべての参照の無効化
- 23. CDNのRequireJSでURLキャッシュ無効化パラメータを避ける
- 24. キャッシュの無効化と同期角度/バックエンドあまりに
- 25. javascriptコードグループ化のテクニック
- 26. 無効化&IE
- 27. Akavache無効化
- 28. 無効化CollectionViewSource
- 29. mx.core.FlexModuleFactoryのFlexModuleFactoryの無効な無効化
- 30. 無効/有効化ボタン
最も簡単な方法でこれを実現しました。スタティックリソースごとにクエリ文字列としてアプリの開始タイムスタンプを追加するだけです。ここの例:http://ankitjain.info/ankit/2013/12/05/cache-busting-nodejs-express-jade/ – ankitjaininfo