0

ブラウザで使用するテキストファイルビューア(ディレクトリツリーではなく、実際のファイルの内容)を作成する必要があります。大きなファイルを表示するために使用されます。各ページにファイルの一部のみが表示されるのに対し、ユーザーが実際にファイルを参照できるようにしたいのです。つまり、前のページと次のページのボタンです。

2つの質問:

  • とにかく、POST(または何か)を介してファイル記述子を渡して、各ページですでに開いているファイルから読み取りを続け、最初からやり直さないようにすることはできますか(再び-巨大なファイル)
  • ファイルを逆方向​​に読み取る方法はありますか?ファイルをさかのぼって閲覧するのに非常に便利です。

他の実装のアイデアは大歓迎です。ありがとう

4

3 に答える 3

3

リクエスト間でファイルを開いたままにしておくことはお勧めできません。「最初からやり直す」必要はありません。オフセットを維持し、fseek()を使用してそのオフセットにジャンプするだけです。そうすれば、「後方ジャンプ」を実装することもできます。

于 2009-08-16T10:23:43.660 に答える
1

巨大なファイルを一度小さなファイルに切り分けてから、小さなファイルをユーザーに提供します。

于 2009-08-16T10:21:13.073 に答える
0

ページネーションを検討する必要があります。「次へ」を頻繁にクリックする必要があることにユーザーが不満を感じている場合は、各チャンクを適度に大きくすることができます(したがって、通常のリーダーページは20分ごとに表示されます)。

もう1つのオプションは、Chunked-Endoding転送タイプです:WikipediaEntry。これにより、サーバーは迅速に応答し、ネットワークを介してファイルの残りの部分をストリーミングしている間、ユーザーに何かを読み取ることができます(サーバーがファイルを読み込んで一度に送信する必要はありません)。これにより、通常のファイルの提供と比較して、知覚されるパフォーマンスが劇的に向上する可能性がありますが、それでもサーバーの帯域幅を大量に消費します。

JavascriptとAJAXを使用して大きなドキュメントをシミュレートできる場合がありますが、パフォーマンスを向上させるために一度に送信するのはピースのみです。

数ページ分のドキュメントを送信し、ブラウザのスクロールイベントにリスナーをアタッチすることを検討してください。時間の経過とともに、またはユーザーが下にスクロールすると、AJAXのチャンクが増えます。これにより、次のような厄介なUXエッジケースがいくつか作成されます。

  • スクロールバーは、実際よりもはるかに小さいドキュメントを示します
    • ドキュメントの下部に多くのページ分割を入力することでこれを回避できる場合がありますが、長さを完全にすることは困難です。
  • 現在利用可能なコンテンツのポイントを超えてスクロールすると、空白のページが表示されます。
    • JavaScriptを使用してこれを検出し、「読み込み中」アイコンを表示して、何が起こっているかをユーザーに知らせることができます。
  • 組み込みの「検索」機能が機能しない
    • ユーザーがドキュメント全体をダウンロードしない限り、これを回避するのは困難ですが、代わりに使用する独自の検索機能を提供することもできます(それほど良くはありませんが、おそらく適切です)。

ただし、実際には、中サイズのページでページ付けを行うのがおそらく最善です。これは非常によく理解されているデザインパターンであり、(少なくとも他のオプションと比較して)実装と高速化が比較的簡単です。

お役に立てば幸いです。

于 2009-08-16T23:57:39.757 に答える