2011-12-27 9 views
2

YSLOW示唆:静的なコンポーネントの場合:遠くの将来のExpiresヘッダーを設定することにより、ポリシーを "期限切れにならない"ように実装します。将来のExpiresヘッダーを使用する場合、コンポーネントが変更されるたびにコンポーネントのファイル名を変更する必要があります。 Yahoo!この手順をビルドプロセスの一部にすることがよくあります。バージョン番号は、コンポーネントのファイル名に埋め込まれています(例:yahoo_2.0.6.js)。 http://developer.yahoo.com/performance/rules.htmlキャッシュされたhtmlファイルのブラウザのhtmlリフレッシュをトリガーするには?

バージョン番号が変更されたときに私のほとんど静的ページのキャッシュを利用してjsファイルをリロードしたいと思います。 .jsファイルのバージョン番号を設定しましたが、main.htmlページにExpiresが設定されているため、リロードされず、jsファイルがリロードされません。理想的には、新しいバージョンのサイトがリリースされたときに、ブラウザに(霊感技法を使用して)main.htmlをリロードするように伝えたいと思います。 main.htmlのページを常にリロードすることができますが、キャッシュの利点が失われてしまいます。私はctrl-F5の答えを探しているわけではありません。ユーザーのためにこれが自動的に行われる必要があるからです。

答えは:main.htmlはキャッシュできませんが、私はこの問題を解決するために他の人が何をしているのか聞きたいと思います。キャッシングとリロードのメリットはどうですか。

ありがとうございました。

+0

私はあなたが正しいと思います - * main.htmlはキャッシュできません*。少なくともページ全体ではない。 –

+0

サーバーのサポートが変更されていないことを確認してください。ページが変更されていない場合、少なくともコンテンツを再ダウンロードする必要はありません。あなたがもっと必要ならば、html5のappcacheを見ることができます。それはあなたが望んでいるトリックですが、appcacheが変更されている場合は、ページをリロードするためにJSが必要になります。それ以外の場合は、次回のページ要求時にページが更新されます。私がちょうど言ったことは、おそらくあなたには分かりません。 – Gerben

答えて

1

あなたの分析は正しいです。ウェブパフォーマンスのベストプラクティスでは、という静的なコンポーネント(つまり頻繁に変更されないコンポーネント)の将来の有効期限が示唆されており、URLのバージョン番号を使用するとこれらの変更がうまく管理されます。

メインページ(main.html)では、今後の有効期限を設定しません。代わりに、有効期限を設定することも、最小時間(たとえば+24時間)を設定することもできません。

0

HTMLページをキャッシュする理由によって、ユーザーの読み込み時間を短縮したり、サーバーの負荷を軽減することができます。

長い有効期限があっても、クライアントで実際にキャッシュされていない可能性があります(Yahooの調査によると、ファイルは非常に長くキャッシュに保存されないことが分かります)。 1日は、問題ではないかもしれません。

バックエンドの負荷を軽減するには、Varnishのようなプロキシが役立つかどうかを調べる必要があります。つまり、要求されたときにオリジンサーバーからのページをキャッシュします。この方法で、より細かい制御レベルでページがキャッシュされる時間を制御できます。

関連する問題