ページのリフレッシュ
 
ページを一定時間後にリフレッシュするには、クライアント・プルという方法とサーバ・プッシュという方法が利用できます。クライアント・プルは一定時間後にブラウザが HTTP コネクションを張り直し次のコンテンツをロードします。サーバ・プッシュでは、HTTP コネクションはそのままで複数のコンテンツを次々に送り出します。サーバ・プッシュはいまでは古い技術となってしまいましたが、アニメーションGIFなどがブラウザで見れるようになる前は、サーバ・プッシュを使ってアニメーションを実現していました。

クライアントプルはCGIとは直接関係がありませんが、例えば、イントラネットでのホームページなどでニュースなどを配信していて、30分から1時間程度の時間経過後にアップデートしたい場合に、クライアント・プルを使うと便利です。ユーザがブラウザを操作せずにそのページを開いていても、一定時間後に更新されるわけです。


 
client_pull.html
<HTML>
<HEAD>
<TITLE>ページのリフレッシュ(クライアントプル)</TITLE>
<META HTTP-EQUIV="Refresh" CONTENT="10">
<BODY>
10秒後に自動的にリロードされます。
</BODY>
</HTML>

[サンプルプログラムの実行]
 
 
nph-server_push.cgi
#!/usr/bin/perl
#
# server_push.cgi
#
# (C)1999 Kaoru Fujita
#

#
# 定数
#
# タイトル
$Title = 'サーバプッシュ サンプル';
$IMGLoc ='./images';
$IMGType = 'gif';
$Interval = 1;


#
# メインプログラム
#
print qq(Content-type: multipart/x-mixed-replace;boundary=multimage\n\n);

for ($i=0; $i < 10; $i++) {
        print qq(\n--multimage\n);
        print qq(Content-type: image/$IMGType\n\n);

        open(IMG, "$IMGLoc/$i.$IMGType") or
                exitError("画像ファイル $IMGLoca/$i.$IMGType がオープンできません。");

        binmode(IMG);
        binmode(STDOUT);
        while (<IMG>) {
                print;
        }
        close(IMG);
        fflush(STDOUT);

        sleep($Interval);
}

print qq(\n--multimage--\n);
exit(0);

#--End of server_push.cgi

[サンプルプログラムの実行]