

基本的なことかもしれませんが、質問します。
prototypeのライブラリを使ってajaxに挑戦しています。
********************
var D = {
method : "get",
onSuccess : function(){...}
};
new Ajax.Request("dara.txt", D);
********************
この方法だと、キャッシュ(?)を読み込んでしまうのか、
cgiでの変更点がすぐに反映されてこないので、このようにしました。
********************
var D = {
method : "get",
parameters : "n=" + Math.random(), //←ここを追加
onSuccess : function(){...}
};
new Ajax.Request("dara.txt", D);
********************
これで、毎回ちゃんとサーバーから読み込むようになりましたが、
このスクリプトを実行するたびにインターネット一時ファイルに保存されるので、
ものすごい数のテキストファイルが保存されてしまいます。
毎回サーバーから読み込んで、且つ、一時ファイルに残さない方法をご存知の方は、ご教示願います。
No.2ベストアンサー
- 回答日時:
> cgiでの変更点がすぐに反映されてこないので
これはCGIが吐き出すテキストファイルをAjaxで取得しようとしているのでしょうか?
Ajaxでファイルを取得する場合、基本的にファイルは固定された(動的に変更されない)内容だと思います。
ちなみにFirefoxのFirebugでテキストファイルを取得した場合のXMLHttpRequestを確認してみましたが、確かに1度取得してからある程度(数十秒)時間が経過しないと通信が行われませんね…。
もし動的に変更されるテキストファイルを取得しようとしているのであれば、URLにファイル名を指定するのではなくtext/plainレスポンスを返すCGIを作成してそのCGIに対してAjax通信を行ってはどうでしょう?
そのようにしてみます。
ところで、レンタルサーバーを使っているので、
cgiで返って来るテキストに広告が自動挿入されてしまうのですが、
~広告~
<!-- ajax -->テキストテキスト<!-- /ajax -->
~広告~
と出力したものを、
data.responseText.match(/<!-- ajax -->(.*)<!-- /ajax -->/);
var str = RegExp.$1;
とすれば、問題ないですよね?
(data.responseTextは返ってきたテキストを指しています。)
No.3
- 回答日時:
クライアントからはIf-Modified-Sinceヘッダを出し、
サーバーからはLast-ModifiedヘッダやPragmaなどのヘッダ(キャッシュコントロール)を出すようにすればURLを変えずにキャッシュ制御が出来ます。
URLを変更してキャッシュコントロールするのは、
サーバーのキャッシュコントロールが通常は出来ない事と、
(一般のレンタルサーバーではインストールされていない機能を使うか、
CGIを使わないと行けない)
一部のAjax対応の古いブラウザではキャッシュコントロールを無視するためです。
prototype.jsにキャッシュコントロールのインターフェースがなければ、
If-Modified-Sinceヘッダは自分で付加しないと行けないです。
> このスクリプトを実行するたびにインターネット一時ファイルに保存されるので、
> ものすごい数のテキストファイルが保存されてしまいます。
どうせいろんなページを回っていればそれだけファイルが保存されますから、
数万個程度なら無視できるレベルだと思いますが?
回答ありがとうございます。
If-Modified-Sinceとか良くわからないので、自分で調べてみようと思います。
>数万個程度なら無視できるレベルだと思いますが?
それもそうかもしれません…。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vbaでテキストファイル(*.txt...
-
ダイアログのタイトルを変更する
-
エクセルのプロパティーでセキ...
-
エクセルvbaでdocuworksprinter...
-
特定のエクセルファイルが止ま...
-
ファイルをコピーできない
-
Wordで差込印刷した後に別々の...
-
SaveAsの保存先について
-
カンマ区切りのCSVファイルから...
-
FTPとファイルコピーの違いにつ...
-
[エクセル]コピーするとオブジ...
-
PowerPoint 2002でファイル名を...
-
VBAを使ってセル内に記述してあ...
-
バッチファイル XCOPYで上書き...
-
【ExcelVBA】一覧表の記載に従...
-
Excel 相対パス
-
VBA 最新のフォルダ取得
-
読み取り専用でファイルを開きたい
-
エクセルVBAで一つ上の階層...
-
vbs ブック共有を解除
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【VBA】テキストファイルを指定...
-
同一フォルダにある複数のテキ...
-
EXCELのVBAでEOFを誤認識
-
アスキー、バイナリーの違い、...
-
uwscでExcelに自動記入
-
Excelにて、フォルダ内のTextフ...
-
ダイアログのタイトルを変更する
-
VBSを使用し、指定フォルダ内の...
-
テキストファイルの最終行を消...
-
unixのシェルスクリプトで特定...
-
VBscript
-
VBScript(vbs)での行の取得につ...
-
【VBA】テキストファイルの内容...
-
スペース区切りのテキストファ...
-
VBAでテキストファイルの件...
-
Java バブルソート
-
エクセル VBA テキストファイル...
-
複数ファイルから情報抽出
-
VBで複数のテキストを結合する...
-
VBAでテキストファイルを最後ま...
おすすめ情報