Netscape Navigatorでは、クライアントプルと同様、サーバープッシュ(ServerPush)という技術を用いても、ページを自動的に再表示することができます。 CGIスクリプトを利用するので設定は多少面倒ですが、任意のタイミング(誰かが掲示板に新規メッセージを書き込んだなど)で再表示可能ですので、サーバーとブラウザの間の通信を抑制することができます。以下のようなCGIスクリプトを nph-push.cgi のように nph- で始まるファイル名で設置して呼び出してください。(→NPHスクリプト) CGIの設置方法に関しては「とほほのCGI入門」などを参照してください。
---ThisIsRandomString--- の部分は、本文中にたまたま現れることの無さそうな適当な文字列を指定してください。
#!/usr/local/bin/perl $| = 1; $boundary = "---ThisIsRandomString---"; print "HTTP/1.0 200 OK\n"; print "Content-type: multipart/x-mixed-replace;"; print "boundary=$boundary\n"; print "\n"; print "$boundary\n"; while (1) { unless (print "") { last; } print "Content-type: text/html\n"; print "\n"; print "<HTML>\n"; print "<HEAD>\n"; print "<TITLE>;サーバープッシュ</TITLE>\n"; print "</HEAD>\n"; print "<BODY>\n"; print "現在の時刻は\n"; ($sec, $min, $hour, $mday, $mon, $year) = localtime(time()); printf("%4d/%02d/%02d %02d:%02d:%02d\n", $year + 1900, $mon + 1, $mday, $hour, $min, $sec); print "です。"; print "</BODY>\n"; print "</HTML>\n"; print "$boundary\n"; sleep(5); }
前述のクライアントプルのテクニックをちょっと変更するだけで、一定時間後に他のページにジャンプすることが可能になります。
<HTML> <HEAD> <TITLE>他のページにジャンプ</TITLE> <META HTTP-EQUIV=Refresh CONTENT="5;URL=http://www.xxx/"> </HEAD> <BODY> 5秒後に http://www.xxx/ に自動的にジャンプします。 </BODY> </HTML>
頻繁に更新する文書や、CGIなどで動的に生成する文書など、WWWブラウザ側でキャッシュされてしまうと好ましくない場合があります。この場合、HTTPの拡張ヘッダに次の項目を加える事によって、WWWブラウザ側のキャッシュを無効にする手段があります。 ただし、この機能に対応していないブラウザやプロキシサーバーもあります。
Pragma: no-cacheHTML文書で指定する場合は文書のヘッダ部(<HEAD>〜</HEAD>の間)に以下のような記述をします。
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">perlによるCGIスクリプトで指定する場合は例えば次のようにします。print "Content-type: text/html\n"; print "Pragma: no-cache\n"; print "\n";