navegador - ¿Cómo implemento un caché HTML para un sitio PHP?
no cache html5 (8)
El motor de plantillas PHP Smarty ( http://www.smarty.net ) incluye un sistema de caché bastante avanzado.
Puede encontrar detalles en la sección de almacenamiento en caché del manual de Smarty: http://www.smarty.net/manual/en/caching.php
¿Cuál es la mejor forma de implementar un caché para un sitio PHP? Obviamente, hay algunas cosas que no deberían almacenarse en la memoria caché (por ejemplo, consultas de búsqueda), pero quiero encontrar una buena solución que asegure que evito el ''efecto digg''.
Sé que hay WP-Cache para WordPress, pero estoy escribiendo una solución personalizada que no está basada en WP. Estoy interesado en escribir mi propio caché (si es lo suficientemente simple), o podrías señalarme un marco agradable y liviano. No sé mucho de Apache, así que si fuera un framework de PHP, sería una mejor opción.
Gracias.
La mejor forma de hacerlo es usar un caché de proxy (Squid, Varnish) y mostrar los encabezados Cache-Control / Expires apropiados, junto con ETags: ver Mark Nottingham''s Caching Tutorial para obtener una descripción completa de cómo funcionan los cachés y cómo obtener los mejores rendimiento de un proxy de almacenamiento en caché.
También consulte memcached e intente guardar en caché las consultas de su base de datos (o mejor aún, los fragmentos de página pre-renderizados) allí.
Parece que estás buscando un marco de caché de PHP. Te recomiendo el sistema de plantillas TinyButStrong que viene con un muy buen complemento de CacheSystem. Es simple, ligero, personalizable (puede almacenar en caché cualquier parte del archivo html que desee), muy potente ^^
Puede usar el almacenamiento en búfer de salida para guardar de forma selectiva partes de su salida (aquellas que desea almacenar en caché) y mostrarlas al siguiente usuario si no ha sido lo suficientemente largo. De esta forma, aún está representando otras partes de la página sobre la marcha (por ejemplo, cuadros personalizables, información personal).
Recomendaría Memcached o APC . Ambas son soluciones de caché en memoria con API muertas simples y muchas bibliotecas.
El problema con esos 2 es que necesitas instalarlos en tu servidor web u otro servidor si es Memcached.
APC
Pros:- Sencillo
- Rápido
- Acelera la ejecución de PHP también
- No funciona para sistemas distribuidos, cada máquina almacena su caché localmente
Memcached
Pros:- Rápido (ish)
- Se puede instalar en un servidor separado para que todos los servidores web puedan usar
- Muy probado, desarrollado en LiveJournal
Usado por todos los grandes (Facebook, Yahoo, Mozilla)
Contras:Más lento que APC
- Posible latencia de red
- Ligeramente más configuración
No recomendaría escribir el tuyo, hay muchos por ahí. Podría ir con un caché basado en disco si no puede instalar el software en su servidor web, pero hay posibles problemas de raza para tratar. Una solicitud podría estar escribiendo en el archivo mientras otra está leyendo.
En realidad, puede guardar consultas de búsqueda en caché, incluso de unos segundos a un minuto. A menos que su db se actualice más de unas pocas veces por segundo, un poco de retraso estaría bien.
Almacenamiento simple en caché de páginas, o partes de páginas: la clase Pear :: CacheLite. También uso APC y Memcache para diferentes cosas, pero las otras respuestas que he visto hasta ahora son más para sistemas más completos y complejos. Si solo necesita ahorrar algo de esfuerzo para reconstruir una parte de una página, Cache_lite con una tienda respaldada por archivos es completamente suficiente y muy fácil de implementar.
Project Gazelle (un sitio de torrents de código abierto) proporciona una guía paso a paso sobre la configuración de Memcached en el sitio que puede usar fácilmente en cualquier otro sitio web que desee configurar, que manejará mucho tráfico.
Toma la fuente y lee la documentación.
Si un caché de proxy está fuera de cuestión, y está sirviendo archivos HTML completos, obtendrá el mejor rendimiento omitiendo por completo el PHP. Estudia cómo funciona WP Super Cache .
Las páginas no almacenadas en caché se copian en una carpeta de caché con una estructura de URL similar a su sitio. En solicitudes posteriores, mod_rewrite toma nota de la existencia del archivo en caché y lo sirve en su lugar. otras directivas RewriteCond se utilizan para garantizar que los usuarios que inician sesión / inician sesión vean solicitudes de PHP en vivo, pero la mayoría de los visitantes serán atendidos por Apache directamente.