ハイパフォーマンスWebサイト フロントエンドのパフォーマンスの重要性から続いています。
Webサイトの高速化 ルール11 リダイレクトを避けよう!
July 3, 2007
——————————————————————————
http://developer.yahoo.net/blog/archives/performance/より翻訳。
Steve Souders は Yahoo!の「Chief Performance Yahoo!」です。
これは彼の「パフォーマンス改善のベストプラクティス」を書いた一連のブログです。
——————————————————————————
リダイレクトはステータスコード301または302を返します。以下は301のレスポンスのHTTPヘッダーのサンプルです。
HTTP/1.1 301 Moved Permanently
Location: http://example.com/newuri
Content-Type: text/html
ブラウザは自動的にlocationフィールドで特定されたURLにユーザを飛ばします。
リダイレクトに必要な情報はすべてHTTPヘッダーに含まれていますので、Body部は、通常、空っぽになります。
ExpiresかCacheコントロールなどの追加のヘッダーで指示しない限り、301も302レスポンスはキャッュされません。 meta refresh タグかJavaScriptでも、異なったURLにユーザを直接飛ばすことができますが、戻るボタンでの挙動を確実にしようとする場合は、標準の3xx HTTPステータスコードを使用するほうが良いでしょう。
リダイレクトはユーザエクスペリエンスを遅くしてしまいます。リダイレクトされた先のページのHTMLにたどり着くまでは、コンポーネントはまったくダウンロードできない訳ですから。
開発者がそれと気づかずに、しかし、頻繁にしてしまっている無駄なリダイレクトがあります。それはURLの最後の”/”を付け忘れることです。
“http://astrology.yahoo.com/astrology/”と書くべきところを
“http://astrology.yahoo.com/astrology”と書いてしまうと(最後の”/”を忘れている)、
“http://astrology.yahoo.com/astrology/”に301レスポンスで飛ばされます。
これは、ApacheならAliasかmod_rewriteか、DirectorySlashディレクティブで対応できます。
古いサイトから新しいサイトに飛ばすのも、リダイレクトのよくある使用方法です。ブラウザの種類やユーザアカウントの状態によって、別のURLに飛ばすようなケースもそうです。二つのサイトをリダイレクトでつなぐのは簡単ですし、コードもほどんと書く必要がありません。このような場合、リダイレクトを使うのは開発者にとってはより簡単なのですが、ユーザのレスポンスという点ではあまり良くありません。
もし飛ばし先が同じサーバならば、Aliasとmod_rewriteを使うことを検討しましょう。
ドメイン名を変更するような場合は、リダイレクトを使う代わりに、Aliasとmod_rewriteを併用して、CNAMEを使いましょう。
Steve Souders
———————————————————————
エントリ一覧
Webサイトの高速化 フロントエンドのパフォーマンスの重要性
Webサイトの高速化 ルール1 HTTPリクエストの数を減らそう!
Webサイトの高速化 ルール2 CDNを使おう!
Webサイトの高速化 ルール3 Expiresヘッダーを追加しよう!
Webサイトの高速化 ルール4 コンポーネントを圧縮しよう!
Webサイトの高速化 ルール5 CSSは上に!
Webサイトの高速化 ルール6 scriptは下に!
Webサイトの高速化 ルール7 CSSのExpression()は使わない!
Webサイトの高速化 ルール8 JavaScriptとCSSは外部ファイルに!
Webサイトの高速化 ルール9 DNS Lookupsを減らそう!
Webサイトの高速化 ルール10 コードのサイズを圧縮する!
Webサイトの高速化 ルール11 ルール11 リダイレクトを避けよう!
Webサイトの高速化 ルール12 スクリプトの重複に気をつける!
Webサイトの高速化 ルール13 ETagを正しく設定する!




