2010-01-26
MultiViewsでコンテントネゴシエーション
- http://httpd.apache.org/docs/2.2/ja/mod/mod_negotiation.html
- http://httpd.apache.org/docs/2.2/ja/content-negotiation.html
- http://httpd.apache.org/docs/2.2/ja/mod/mod_mime.html
Options MultiViewsで設定。Webブラウザ(つかHTTP Request Header)に応じて、同一のURIに対して、異なる内容を応答する。
ブラウザに応じて、圧縮済み/非圧縮のコンテンツを返したり、言語ごとのコンテンツを返したり。
場合は、圧縮済みのファイルを用意しておけばいいらしい。mod_deflateの場合は動的に圧縮するので、CPU負荷がかかるから?
実験
圧縮済みのファイルを返す
ref.
clientのAccept-Encodingヘッダの有無で。
最近でいうとprototype.jsが70KByteあるので、ブラウザがgzip圧縮に対応している場合に圧縮済みのprototype.js.gzを返したい、ということがあるらしい。
用意するファイル:
非圧縮時は拡張子を2個重ねるのがポイント。index.htmlのファイルが存在していると、圧縮対応ブラウザで/index.htmlにアクセスした場合に、圧縮済みのindex.html.gzではなく、index.htmlそのものを返すっぽい。
おまけ: mod_rewriteで判定
ref.
apacheのMultiViewsを使わずにmod_rewriteのRewriteCondでAccept-Encoding headerや、fileを確認してやってるぽい。なるほどね。
RewriteEngine on RewriteCond %{HTTP:Accept-Encoding} gzip RewriteCond %{REQUEST_FILENAME} !\.gz$ RewriteCond %{REQUEST_FILENAME}\.gz -s RewriteRule .+ %{REQUEST_URI}.gz ForceType text/javascript AddEncoding x-gzip .gz
言語によって応答するファイルを変更する
Accept-Languageヘッダ。
サーバでindex.html.jaとindex.html.enを用意する。で、AddLanguageで言語の設定をする。
AddLanguage ja .ja AddLanguage en .en
$ curl http://localhost/index.html -H 'Accept-Language: ja' $ curl http://localhost/index.html -H 'Accept-Language: en'
トラックバック - http://d.hatena.ne.jp/hogem/20100126/1264515785
リンク元
- 11 http://www.google.co.jp/search?q=コンテントネゴシエーション&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&hl=ja&client=firefox-a
- 7 http://webcache.googleusercontent.com/search?q=cache:2W7vMV4ANt8J:d.hatena.ne.jp/hogem/20100122/1264175121+nis+ldap+??????&cd=9&hl=ja&ct=clnk&gl=jp
- 7 http://www.google.co.jp/search?q=MultiViews&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&hl=ja&client=firefox
- 6 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=13&cts=1331259682254&ved=0CD4QFjACOAo&url=http://d.hatena.ne.jp/hogem/20100126/1264515785&ei=0WhZT7rYCO_imAW_oPmoDw&usg=AFQjCNHj0EQ4IWqPyQfio7FySuDjpIUE1A&sig2=LmYIAM4e4s_6Cyzh7NTP
- 5 http://www.google.co.jp/search?q=Apache+MultiViews&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&hl=ja&client=firefox-a
- 5 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CDAQFjAB&url=http://d.hatena.ne.jp/hogem/20100126/1264515785&ei=4z16T4bZCMLFmQWCycXGAw&usg=AFQjCNHj0EQ4IWqPyQfio7FySuDjpIUE1A&sig2=ByKPYmJYD9VhIXP0tUBNdg
- 3 http://www.google.co.jp/search?hl=ja&client=firefox-a&hs=fGR&rls=org.mozilla:ja:official&q=Apache+multiview&start=10&sa=N
- 3 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&q=drbdadm+デバイスの削除+/dev/drbd0&btnG=検索&lr=lang_ja&aq=f&oq=
- 3 http://www.google.co.jp/search?hl=ja&safe=off&q=apache+コンテントネゴシエーション+リダイレクト&aq=f&aqi=&aql=&oq=&gs_rfai=
- 3 http://www.google.co.jp/search?q=MultiViews&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a