3

私は動的な(っぽい)サーバーレスサイト(データベースなし、サーバーサイド言語など)を試しています。そのため、JavaScript/AJAX/jQueryのみを使用したいと考えています。静的ファイルを使用して動的 (ish) Web ページを提供できるようにしたいと考えています。

私が思いついた解決策の 1 つは、基本的に、Web ページと同じサーバー上でテキスト ファイル (json、xml) を使用して、データストアとして機能させることです。しかし、ファイルの特定の部分ではなく、ファイル全体をロードする方法しか見つかりませんでした。テキスト ファイルは小さいので大きな問題にはなりませんが、テキスト ファイルが大きくなる可能性があります。

ファイルを 1 行ずつ読み込むことができれば、クライアントへのペイロードが高速になり、JavaScript の解析が大幅に高速化されます。

新しいデータのみに関心がある場合は、ファイルにデータを入力するときにデータをファイルの先頭に追加して、1 行ずつ読み取ることができることを望んでいました (1 ページあたり 10 行しか関心がないため)。また、ファイルの途中にアクセスできると非常に便利です。

ファイル全体をクライアントに送信する必要がないようにしたいだけです(セキュリティのためではなく、スペース/時間効率のため)。

JavaScriptでこれを行う方法はありますか? または、明らかな解決策がありませんか?

4

2 に答える 2

1

これまで行ったことはありませんが、 RangeIf-Range、およびAccept-Ranges HTTP ヘッダーを確認する機会があるはずです。

http://www.stadt-salzburg.at/の Web サーバーにアクセスして簡単なテストを行いました。開始ページの静的 html ファイル リソースのAccept-Ranges:bytes応答ヘッダーを送信します。これは、Range 要求を受け入れることを意味します。次に、Firefox 拡張機能のModify Headersを使用して、リクエスト ヘッダーRange:bytes=257-2048を指定すると、サーバーはこのファイルのリクエストされた部分のみを実際に返しました。

HTTP 1.1 ヘッダー フィールドの仕様によると、ファイルが変更されているかどうかを判断したり、その他の優れた操作を実行したりすることもできるはずです :-) 私は HTTP ヘッダーの経験があまりないので、ぜひご覧ください。望む結果を達成できるかどうか。

于 2012-11-06T22:27:06.763 に答える
0

私は数年前にこの同じ問題に取り組みました。JavaScript自体はそれをカットしません-誰かが私が間違っていることを証明してください。

  1. 通常の方法でリアルタイムでローカルテキストファイルにデータを追加します(最後に新しいデータを追加します)。
  2. 一度に1つのレコードのOPEN、SEEK、READ、CLOSEを実行できるcgiアプリをローカルマシンで実行します。
  3. 新しい/次のファイルオフセットとレコードのテキストをjavascriptで実行されているアプリに返します。
  4. javascriptは、次のレコードオフセットを記憶します。または、ゼロに設定して、ファイル全体を最初から再処理することもできます。
  5. javascriptは、次のレコードオフセットでcgiを呼び出します。
  6. cgiアプリはリクエストを受信し、OPEN、SEEK、READ、CLOSEを実行します。新しいデータが利用できない場合、読み取りはゼロバイトをロードし、cgiアプリは同じオフセットと空白のレコードを返すことができます。

上記の手順が、JavaScriptが望む限り、必要なだけ速く繰り返されることがわかると思います。

于 2012-11-06T22:06:44.783 に答える