HttpWatch is an HTTP viewer and debugger that integrates with IE and Firefox to provide seamless HTTP and HTTPS monitoring without leaving the browser window.

Four Tips for Setting up HTTP File Downloads - HttpWatch BlogにおいてHTTPサーバでファイルのダウンロードを提供する場合の設定の4つのポイントが紹介されている。アーカイバでまとめられたファイルはそのままでダウンロードできることが多いが、テキストファイルなどブラウザがそのまま表示できるファイルや、プラグインがインストールされビューアが用意されている場合には個別のファイルとしてはダウンロードされずにブラウザで閲覧がはじまる場合がある。そうした場合の設定方法として参考になる。

1. ファイルのダウンロードを強制する

HTTPレスポンスヘッダに新しく"Content-Disposition:"を追加する。値に"attachment; filename=ファイル名"のように対象を指定することで、該当する対象をファイルとしてダウンロードさせることができる。Apache HTTPサーバであれば、たとえば次のような設定をhttpd.confの適切な位置に追加すればいい。ファイル名一致部分は適宜変更する。ファイル名が動的に生成されるような場合にはPHPなどサーバ側でHTTPレスポンスヘッダに同様の内容を追加する。

<FilesMatch "-download\.txt$">
  Header Add Content-Disposition "attachment"
</FilesMatch>

テキストファイルダウンロードデモページ

デフォルト設置のApacheサーバ - IE8はそのまま表示

Content-Dispositionを指定した場合 - ファイルとしてダウンロード

2. キャッシュを有効に活用する

RFCのように一度確定したらずっと内容が変更されないファイルというものもある。こうしたデータに対してはずっとキャッシュを保持するように指定することで効率のいい配信を実現できる。

3. IE HTTPSにおけるキャッシュ設定に注意

頻繁に更新するファイルのような場合は逆にキャッシュがまったく効かないように設定したいことがある。たとえば「Cache-Control: no-store, no-cache」のようなレスポンスヘッダなど。この指定はFirefoxでは動作するが、IEでは注意する必要がある。IEでHTTPSを使っている場合にはダウンロードが0%のまま進まなくなり、最終的にエラーダイアログを出力するようになる。

4. ファイルダウンロードも分析対象に含める

Google AnalysticsのようにJavaScriptベースで動作するWebアクセス分析ソリューションでは、JavaScriptが動作しないファイルのダウンロードに関してはその動作を検出しないことが多い。ファイルのダウンロードもトラッキングしたい場合には、それぞれ提供されているAPIをはさむなどしてファイルダウンロードに対しても分析が適用されるように設定する。