お絵かき掲示板のキャッシュを.htaccessで制御

お絵かき掲示板、POTI-boardは投稿後の画面をHTMLファイルで表示します。
そのため、更新される前のキャッシュを表示する事があります。
Ctrl+R、F5、またはブラウザの更新のアイコンをクリックすれば、投稿したコメントやイラストが表示されるので問題ないといえば問題ないのですが…。
ちょっと面倒…というか…。
どうにかならないのかな?と思って調べてみると…。
HTML5における no-cache - Qiita

本記事の投稿当時に紹介したアプリケーションキャッシュは、現在では廃止予定の機能となりました。
HTML5でもキャッシュを制御する方法が…と思ったら廃止…。その代わりになるものは?
サービスワーカーの使用 - Web API インターフェイス | MDN

コードは HTTPS を通して提供する必要があります。サービスワーカーはセキュリティ上の理由から HTTPS を通して実行されるよう制限されています。
どのようにすれば使う事ができるのか、よくわからない上、HTTPS…。
.htaccess の書き方(アクセス制御編) - Qiita

キャッシュの有効期限を過去にする
<Files ~ "\.html?$">
<IfModule mod_headers.c>
Header set Pragma no-cache
Header set Cache-Control no-cache
Header set Expires "Thu, 01 Dec 1994 16:00:00 GMT"
</IfModule>
</Files>
Qiitaの記事を参考に拡張子 .html または .htm のファイルのキャシュの有効期限を
Thu, 01 Dec 1994 16:00:00 GMT に設定。

20180418_001.png

デベロッパーツールでHTMLファイルのキャッシュの有効期限を確認。
Expires: Thu, 01 Dec 1994 16:00:00 GMT
リロードしなくても反映されるようになりました。
キャッシュしないファイルはHTMLだけで、ファイルサイズが大きな画像はキャッシュしますから表示速度への影響も最小限…だと思います。

relm

続きを描いた筈なのに以前の画像のまま…というトラブルが発生していたrelmのための設定。
<Files ~ "\.(html?|jpg|png)$">
<IfModule mod_headers.c>
Header set Pragma no-cache
Header set Cache-Control no-cache
Header set Expires "Thu, 01 Dec 1994 16:00:00 GMT"
</IfModule>
</Files>
pngファイルのキャッシュの有効期限は
Expires: Thu, 01 Dec 1994 16:00:00 GMT
リロードしなくても反映されるようになりました。

ただし、画像をキャッシュしない訳ですから、1ページに画像が10枚あって1枚あたり100kbとして1MB…。
回線が高速化しているのでで1MBなんて大した事ないんじゃないか…という気もしますが…。

relmのディレクトリに画像のキャッシュの有効期限を過去にした.htaccessを設置するだけなら、そのほかのページへの影響はありませんが上位ディレクトリに設置してしまうと…。
.htaccessを上位ディレクトリに設置すると下位ディレクトリでも設定が有効となり、下位ディレクトリに設置すると下位ディレクトリのみ有効になるようです。
.htaccess の書き方(アクセス制御編) - Qiita

見られたくないファイルへのアクセスを拒否
キャッシュから話しがそれますが…。
もっと早く知っていれば、あちこちいじりまわさなくても良かったのかも…という設定。
<files ~ "\.(ini|log|dat)$">order allow,deny
deny from all
</files>
.htaccessで文法を間違えると下位ディレクトリを含むすべての範囲でエラーが発生し、何も表示されなくなってしまいます。

テスト用のディレクトリに.htaccessを設置して問題ない事を確認してから設置が必要なディレクトリに設置するようにしていますが…。

なぜエラーになるのかわからなくて数十分というケースも…。

お絵かき掲示板はこちら。

この記事へのコメント