出力バッファリングとAJAX

ユーザーが自分のサイトのボタンをクリックすると、ページの特定の部分がリフレッシュされますが、セクション全体をレンダリングするにはしばらく時間がかかります。セクション全体を終了するのではなく、セクションの表示/出力をリアルタイムで行うことは可能ですか? htmlコンテンツのajaxリクエストとして送信するとどうすればいいですか?ありがとう

0

3 答え

AJAX呼び出し(jQueryを使用している場合)で cache:true を設定することをお勧めします。どちらの方法でも、HTTP応答ヘッダーを設定する必要があります。 ここにあります cache-control ヘッダと expires などを設定することで、AJAXリクエストは変更されていなければキャッシュからロードされます。これにより大幅にスピードアップします。

簡単な例:

if (!headers_sent()) {
   //seconds, minutes, hours, days
    $expires = 60*60*24*14;
    header('Pragma: public');
    header('Cache-Control: maxage=' . $expires);
    header('Expires: ' . gmdate('D, d M Y H:i:s', time() + $expires) . ' GMT');
}

注:これはPOSTリクエストでは機能しません。ちょうどGETです。

0
追加された
はい、できます。 .htaccessファイルを変更するアクセス権がありますか?私はapache設定を直接変更するのではなく、これらの設定を 変更するといいでしょう。いずれにしても、私の答えに入れたリンクをチェックしてください(ここにはいくつかの例があります)。
追加された 著者 Yes Barry,
私はユーザーのブラウザで特定のhtmlコンテンツを捕まえることができますか? httpd.confファイルでどうすればいいですか?また、私のコンテンツは動的なので、キャッシュが適切かどうかはわかりません。
追加された 著者 Ben,

ページレット技術を実装することができます。基本的には、以下のような方法でこれを動作させることができます:

index.html
  Ajax -> load content from PHP script which outputs the navigation bar
  Ajax -> load content from PHP script which outputs the body

また、サイトのさまざまな部分をロードするいくつかのAjaxコールを用意してください。しかし、これには、ユーザーのブラウザが要求するHTTP要求の量が増加するという欠点があります。

これは、ページの残りの部分とは別の部分を別々に生成することができますが、前提となります。あなたのすべてのコンテンツを同時に生成する必要がある場合、このテクニックは使用することはできません。

This is of a good read (Facebook project named "BigPipe"): http://www.facebook.com/note.php?note_id=389414033919

0
追加された

あなたのAJAXリクエストをキャッシュすることは良い選択です。それ以外にも、アプリケーションをより速く見えるようにするためには、ユーザーにプログレスバーを表示するだけです(再)AJAXでコンテンツを読み込みます。

0
追加された
新しいHTML5 タグを使用することもできます。
追加された 著者 ComFreek,
プロフェッショナルなサイトのクライアントサイト用のものであれば、まだHTML5を使用しないでください。十分なサポートはまだありません。それはあなたがIEについて気にしない限り、是非ha
追加された 著者 Yes Barry,
うーん...それで、AJAXで処理中のコンテンツを表示する方法はありませんか?
追加された 著者 Ben,
私は気づいていない、ない
追加された 著者 Jochen Van de Velde,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com

JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript