Buffer de salida y AJAX

Cuando un usuario hace clic en un botón en mi sitio, se actualizará una parte concreta de la página, pero se tarda un tiempo en representar toda la sección. ¿Es posible mostrar / mostrar partes de la sección en tiempo real en lugar de esperar a que termine toda la sección? ¿Cómo haría esto si lo estoy enviando como una solicitud de Ajax para contenido html? Gracias

Recomendaría establecer cache: true en su llamada AJAX (si usa jQuery) y de cualquier manera, va a querer establecer los encabezados de respuesta HTTP. Aquí hay unos ejemplos. Al configurar los encabezados de cache-control y expires , etc., sus solicitudes de AJAX, si no se modifican, se cargarán desde la memoria caché. Esto acelerará drásticamente las cosas.

Un ejemplo rápido:

 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 MYH:i:s', time() + $expires) . ' GMT'); } 

Nota: esto no funcionará con las solicitudes POST, solo GET.

Como se dijo, el almacenamiento en caché de sus solicitudes AJAX es una buena opción. Además de eso, todo lo que creo que puede hacer para que su aplicación parezca más rápida es mostrarle a los usuarios una barra de progreso mientras (re) carga contenido con AJAX.

Podría implementar una técnica de Pagelets. Esencialmente podrías trabajar esto de una manera, como a continuación:

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

Y tenga varias llamadas Ajax diferentes cargando cada parte diferente de su sitio. Sin embargo, esto tiene la desventaja de boost la cantidad de solicitudes HTTP que debe realizar el navegador del usuario.

Sin embargo, esto supone que se pueden generar diferentes partes por separado del rest de la página. Si todo su contenido debe generarse al mismo tiempo, esta técnica no servirá de nada.

Esta es una buena lectura (proyecto de Facebook llamado “BigPipe”): http://www.facebook.com/note.php?note_id=389414033919