ブラウザのリクエストに応じて、予め圧縮しておいたのか生のか選んでjsやcssを配信する方法 〜Apache 2.2編〜
ググるといろいろできますけど、若干おハマりしたので。
こんな設定で:
# Expires*は圧縮には関係ないけど ExpiresActive On ExpiresByType application/javascript "access plus 1 years" ExpiresByType text/css "access plus 1 years" # こっちが本丸 <Location ~ "\.(js|css)(\.(js|css|gz))?$"> Options +MultiViews RemoveType .gz AddEncoding x-gzip .gz </Location>
こんなファイルを置いておくと:
$ ls -1 js/ jj.js.gz jj.js.js
こんな感じのレスポンスになります。
$ curl -i -H 'Accept-Encoding: gzip' http://goa/js/jj.js?801|egrep -a ^Content Content-Location: jj.js.gz Content-Length: 36 Content-Type: application/javascript Content-Encoding: gzip ↑圧縮されたデータが返ってきてる $ curl -i -H 'Accept-Encoding: curry' http://goa/js/jj.js?801|egrep -a ^Content Content-Location: jj.js.js Content-Length: 11 Content-Type: application/javascript ↑こっちは生データ
今回のおはまりポイント: