映像制作 eラーニングのことならビズバレー
文字サイズの変更 標準 
大きい
ホーム > スタッフブログ
スタッフブログ
k.takahashi
k.taguchi
j.hashimoto
j.katou
y.hotate
m.kawai
s_inomata
m_muraoka
ビズバレーは、東京都 千代田区で活動する、映像制作、DVD、eラーニングを扱う会社です。

前回、プログレッシブダウンロードの動画のキャッシュ状況について調べてみましたが、OS・ブラウザにより違いがあることが分かりました。今回は、Webサーバー(Apache)の設定により、クライアントのハードディスクにキャッシュを残さないようにしてみましょう。

まず、Apache モジュールとしてmod_headersを利用します。これが今回の肝で、HTTPのリクエストヘッダを制御してキャッシュを残さないよう設定を行います。

OSはDebian7 Linuxで話を進めます。
mod_headers が既に有効に動作しているか確認をしてみます。
sudo apachectl -M で動作しているモジュールの一覧を表示します。

taguchi@debian01:~$ sudo apachectl -M
Loaded Modules:
core_module (static)
log_config_module (static)
logio_module (static)
version_module (static)
mpm_prefork_module (static)
http_module (static)
so_module (static)
alias_module (shared)
auth_basic_module (shared)
authn_file_module (shared)
authz_default_module (shared)
authz_groupfile_module (shared)
authz_host_module (shared)
authz_user_module (shared)
autoindex_module (shared)
cgi_module (shared)
deflate_module (shared)
dir_module (shared)
env_module (shared)
mime_module (shared)
negotiation_module (shared)
php5_module (shared)
reqtimeout_module (shared)
setenvif_module (shared)
status_module (shared)
Syntax OK
taguchi@debian01:~$
※(static)静的モジュール (shared)動的モジュール

動いてませんね、モジュール自体が入っているかどうか /etc/apache2/mods-available/ の中を確認してみます。そうすると、 headers.load がありますので、存在はしていることが分かります。これを有効にします。ちなみに、モジュールの本体は、/usr/lib/apache2/modules/ にあります。

Debian のApacheの場合、mods-available のディレクトリにモジュールが定義され、それを動作させる・させないといったのオン・オフのスイッチが mods-enabled ディレクトリになります。

headers を有効にして、Apacheを再起動します。
sudo a2enmod headers
taguchi@debian01:/etc/apache2/mods-enabled$ sudo a2enmod headers
[sudo] password for taguchi:
Enabling module headers.
To activate the new configuration, you need to run:
service apache2 restart
taguchi@debian01:/etc/apache2/mods-enabled$ sudo /etc/init.d/apache2 restart
[ ok ] Restarting web server: apache2 ... waiting .
taguchi@debian01:/etc/apache2/mods-enabled$

sudo apachectl -M でモジュールが入ったかどうか確認してみてください。つぎに、
/etc/apache2/sites-available ファイルの<VirtualHost *:80>の中に、下記コードを追加します。今回はf4vファイルを対象にします。複数書くときは.(f4v|flv)のようにします。拡張子で判別しているので、txtファイルなどもいけますね。

<Files ~ "\.(f4v)$">
FileEtag None
RequestHeader unset If-Modified-Since
Header set Cache-Control no-store
</Files>

Apacheを再起動して、期待通りに動作するか確認をしてみましょう。

通常のキャッシュありのプログレッシブダウンロード


ヘッダー操作によるキャッシュなしのプログレッシブダウンロード


このように、キャッシュファイルを無効化することで、ファイルコピーを防ぐことができます。