Non-Parsed Heder
これについてはとほほのCGI入門などで知っていただくとして、
これを使ったCGIスクリプトで気が付いたことをメモしておきたいと思います。
レスポンスヘッダ
※ ( )内は解説の症状を確認したバージョン。
レスポンスヘッダの設定について、
IEでは、どの順番に並べても動作しましたが、Netscape(7.1) や
Opera(7.5)では、
※1をどのヘッダよりも一番最初に置かないと動作せず、
Firebox(1.0)では、
クッキーもセットされないという症状を体験しました。
print "HTTP/1.0 20 OK\r\n"; # ←※1
print "Set-Cookie: NAME=VALUE\r\n"; # クッキーのセット
print "Content-type: text/html\r\n"; # コンテントタイプ
print "\r\n"; # ヘッダの終わり
データ送信せず更新
チャットなどのデータが更新されない場合に、変わらぬ画面を何度も表示しても負荷もかかり無駄。
そこで、レスポンスヘッダだけ送信して、データの更新がなければ、何もデータを送信しない(現在の画面を表示したまま処理終了)処理をしたいもの。
これをNPHスクリプトとして実行しても、画面は何も変化しない(再読み込みもしない)。
これを利用した一例がミニチャット3です。
print "HTTP/1.0 204 No Content\r\n";
print "Cache-control: no-cache\r\n"; # キャッシュしない
print "Pragma: no-cache\r\n"; # キャッシュしない
print "Expires: Sun, 01-Jan-1995 01:00:00 GMT\r\n"; # 期限を過去にする(キャッシュ削除)
print "\r\n";
exit;
|