ホームHTMLに役立つヒントADSLでMACサーバ・実験室web共有のメモ > resheadについて

resheadについて

●概要 ▲ページトップ

 web共有の.css/.jsファイルの送り出し問題を解決するために、put_cssを作成しました。resheadはput_cssの強化版です。

 普通、UA(ユーザーエージェント。ブラウザのこと)は「このファイルをリクエストするぜ。おいらがキャッシュに持っているこのファイルの更新日は○月×日だぜ」とファイルを要求してきます。

 サーバはUAから受けとった更新日時を元に、自分のところにあるファイルの更新日時をチェックし、自分の方が新しい場合だけファイルを送り返します。変更がなければ「変更ないからキャッシュ使って」と返事をします。

 前作put_cssは、そんな面倒をせずに、変更があろうがなかろうが、遮二無二該当ファイルを読んで送り返します。毎回ファイルを読んで送り返しますから、効率が良くありません。

 そこでput_cssを元に、新たに作成し直したのがresheadです。この名前は「Response Header」の略のつもり。サーバが送り返すヘッダのことです。

 resheadはput_cssより頭が良くなって、UAのRequest Headerを解析し、ファイルの更新チェックを行います。変更がなければ「HTTP/1.0 304 Not Modified」ヘッダを送り返すだけなので、全体のレスポンスは良くなる、はず。

●ダウンロード ▲ページトップ

 このスクリプトは、例によって好きなように改造して使ってもらってかまいません。再配布もご自由にどうぞ。ただし、オウンリスクでお願いします。

reshead22.txt ver.2.2 2006/9/27 

・今度はjsファイルの日付け(更新日ではない)を正しく送っていないバグを発見。

reshead21.txt ver.2.1 2006/9/26 ※ver.0.2はバグのためにすべてのファイルを「text/plain」として送り返していました<(_ _)> こちらに差し替えてください。

・ファイルの最終更新日を正しく送り返していなかったバグを修正。このバグですべてのファイルを「text/plain」として送り返していました。

・reshead20.txt ver.2.0 2006/9/22

・このバージョンからTanaka's OSAXが必須となった。2.01推奨。
・名前をresheadに変更。
・リクエストヘッダ「If-Modified-Since」を解析し、ファイルに変更がなければ「304 Not modified」を返すようにした。
・レスポンスヘッダに「Date」「Last-Modified」を追加。

put_css.txt ver.1.01 2005/12/15

・.cssと.jsに正しくヘッダをつけて送りだすことを目的にしたスクリプト。.html出力機能が付け加わった。

・ver1.0 2005/10/5 最初のバージョン。ファイルなくしちゃったよ(^^;;;

●設置方法 ▲ページトップ

 resheadはTanaka's OSAXを使っています(ver.2.01推奨)。事前準備としてまずはTanaka's OSAXをインストール(Tanaka's OSAXを「システムフォルダ/スクリプティング機能追加」の中にコピーするだけ)しておいてください。

1. スクリプトをコピーして保存する。

 「ダウンロード」からスクリプトをテキストファイルとして保存します。

 「スクリプト編集プログラム」でそのファイルを開き、「reshead」という名前(実は名前は何でもいい)で保存します。その際、「初期画面を表示しない」「自動終了しない」にチェックして、Classicアプリケーションとして保存してください。

2. メモリを割り当てる。

 Finderの「情報を見る」で、resheadのメモリの割り当てを500kb〜1MB程度に増やします。

3. resheadの置き場所。

 web共有で指定したwebフォルダ直下に置きます。webのルートフォルダのことです。

4. web共有のMIME設定の削除。

 resheadが送り返せるファイルは「.html」「.css」「.js」の3種類です。ただし、「.html」を送り返すようにすると、ファイル数が多いので負荷が大きくなりすぎるかもしれません。通常は「.css」「.js」の二つでいいでしょう。

 web共有の「web共有初期設定」を開き、「MIMEタイプ」タグをクリックします。ずらりとMIMEタイプが並んでいますが、「.js」を選択して削除します。

 「.css」は初期設定にありませんが、作成していたらこれも削除してください。「.html」を送り返したい場合はそれも削除します。

2005/12/15追記 バージョンを1.01に上げました。web共有デフォルトのヘッダ(text/html; charset=unknown)ではiCabで文字化けすることがわかり、その対策です。

 html/htmの場合、「text/html」というヘッダで送り出すように変更しました。htmlやhtmもこのスクリプトでヘッダを送り出したい場合、上記と同様、MIME設定からhtml、htmを削除し、アクションに登録してください。

 ただし、html/htmをアクション機能で送り出す場合、スクリプトにかかる負担が格段に大きくなるため、サーバのパフォーマンスが落ちるだろうことは覚悟してください。今のところhtml/htmで障害がでるのはiCabのみのようですから、これを無視するという選択肢もあります。実はこのサーバではcssとjsしかスクリプトを通していないのであった(^^;

5. web共有のアクションの設定。

 web共有の「アクション」タグをクリックします。「拡張子で開く」を指定し、「.css」と「.js」の拡張子にresheadを指定します。「.html」もresheadを通すなら、「.html」も設定して下さい。

 

 以上で設置終了です。

6. resheadを立ち上げる。

 resheadをダブルクリックして立ち上げて下さい。アップルスクリプトCGI全般に言えますが、ブラウザによっては最初のリクエストの結果を受け取れません。リクエストが来る前にスクリプトを立ち上げておく方が安全、というわけです。

 resheadのエイリアスを「起動項目」に入れておくといいでしょう。


 これでweb共有でも.cssと.jsファイルをMozilla系ブラウザで表示できるようになります。ま、使う時には例によってオウンリスクでお願いします。何か損害を被っても保証はないです。一応、Macintosh版/Windows版のFireFoxで確認がとれています。

 ただし、このスクリプト、結構メモリを食うようです。あまり大きな.cssや.jsファイルだとうまくいかないことがあって(その場合はtext/plainとして送り出されてしまう)、うちの環境ではメモリ割り当てを500kbにしたらうまく動作するようになりました。

 一度スクリプトを通すので、スピード的にどうかなと思いましたが、意外なほどスピードは落ちませんでした。まーまーなスピードで動作します。

●デバッグについて ▲ページトップ

 resheadにはデバッグ機能を残してあります。次の部分です。

property debug : "" --通常空にする。1でファイルを送るたびにbeep。2で詳細表示。

 通常、このままで使用してください。ここに1か2を指定するとデバッグモードになります。

 2の詳細表示モードは使い方が面倒なので省略します。

 1を指定すると、該当ファイルを読んで送り返すときだけBEEP音がなります。例えば、CSSファイルを使ったページを読み込むときに、1回BEEP音がなれば、CSSファイルを送り返したということです。同じページを読み込んだ場合、音がしなければ無事に「HTTP/1.0 304 Not Modified」ヘッダだけを送り返してファイルを送っていないということです。リロードをかけると強制的にファイルを取得するブラウザもありますので、その場合はやはりBEEPが鳴るでしょう。

 無事になったり鳴らなかったりを楽しんでください(^^;


ホームHTMLに役立つヒントADSLでMACサーバ・実験室web共有のメモ > resheadについて