キャッシュ機能の改善
Web サイトのレンダリングを可能な限り高速化するには,
JavaScript, CSS や画像のようなアセットファイルを Web ブラウザに
長時間キャッシュするように 命令する適切なヘッダとともに配信すべきです。
ヘッダによってユーザがサイトを再度訪問する時 (またサイトのその他のページを訪問する時)
これらのアセットファイルを再ダウンロードしません。長期間の Expires
や
Cache-Control
ヘッダの設定は, アセットファイルを変更した時にユーザが
まだキャッシュされたバージョンを使っていると問題を引き起こ可能性があります。
Middleman はこの問題解決のために 2 つの方法を提供します。
一意の名前のアセットファイル
ユーザによる古いファイル使用防止に最も効果的な方法は,
アセットファイルの内容を変更する度にファイル名を変更するものです。
手作業で行うには大変なので, Middleman にはこの処理に対応する
:asset_hash
拡張が付属しています。
まず config.rb
で拡張機能を有効化します:
activate :asset_hash
次に, 通常のファイル名でアセットファイルを参照します。
image_tag
のようなヘルパを使うことができます。
サイトのビルド時にそれぞれのアセットファイルは, そのファイルの内容で
通常のファイル名に余分なテキストを少し追加した名前で生成されます。
すべてのアセットファイル (HTML, CSS, JavaScriptなど) は
通常のファイル名の代わりに一意に生成されたファイル名を参照するように変更
されます。Expires を "無期限" 指定で配信するようになりますが, アセットファイルを
変更した場合には別のファイル名で表示されることを確認してください。
ただし, この拡張機能は名前を変えたアセットファイルを参照するようにファイルを 書き換えて動作するので, 参照を失敗したり, コードの中で実行したくない処理を するかも知れません。この場合, 古い方法ですが, キャッシュバスターの使用を 選択する必要があるかもしれません。
一部ファイルを名前変更から除外したい場合, :asset_hash
を有効化する時に
:ignore
オプションを渡し, 無視したいファイルを指す 1 つ以上のパターンマッチ,
正規表現や Proc を与えてください。同様にファイル拡張子を変更するために
:exts
オプションを渡すことができます。
サーバの設定
長期間の Expires
と Cache-Control
ヘッダを使うサーバ設定は使うサーバに
よって異なります。あなたが使うサーバの設定方法は Google の
page speed docs を参照し, 設定が正しく行われているか確認するために
Google PageSpeed Insights や YSlow を
使ってください。