Pregunta

¿Cuál es la mejor manera de implementar un caché para un sitio PHP?Obviamente, hay algunas cosas que no deberían almacenarse en caché (por ejemplo, consultas de búsqueda), pero quiero encontrar una buena solución que asegure evitar el "efecto digg".

Sé que existe 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 indicarme un marco agradable y liviano.Sin embargo, no sé mucho de Apache, por lo que si fuera un marco PHP, entonces encajaría mejor.

Gracias.

¿Fue útil?

Solución

Si un caché proxy está fuera de discusión y está entregando archivos HTML completos, obtendrá el mejor rendimiento si omite PHP por completo.Estudia como Súper caché de WP obras.

Las páginas no almacenadas en caché se copian en una carpeta de caché con una estructura de URL similar a la de su sitio.En solicitudes posteriores, mod_rewrite observa la existencia del archivo en caché y lo entrega en su lugar.Se utilizan otras directivas RewriteCond para garantizar que los comentaristas/usuarios registrados vean las solicitudes PHP en vivo, pero la mayoría de los visitantes serán atendidos directamente por Apache.

Otros consejos

Puedes usar almacenamiento en búfer de salida para guardar selectivamente partes de su salida (aquellas que desea almacenar en caché) y mostrárselas al siguiente usuario si no ha pasado el tiempo suficiente.De esta manera, seguirás representando otras partes de la página sobre la marcha (por ejemplo, cuadros personalizables, información personal).

La mejor manera de hacerlo es utilizar un caché proxy (Squid, Varnish) y servir encabezados Cache-Control/Expires apropiados, junto con ETags:ver Tutorial de almacenamiento en caché de Mark Nottingham para obtener una descripción completa de cómo funcionan los cachés y cómo aprovechar al máximo el rendimiento de un proxy de caché.

También echa un vistazo memcached, e intente almacenar en caché las consultas de su base de datos (o mejor aún, fragmentos de página pre-renderizados) allí.

yo recomendaria Memcached o APC.Ambas son soluciones de almacenamiento en caché en memoria con API muy simples y muchas bibliotecas.

El problema con esos 2 es que necesitas instalarlos en tu servidor web o en otro servidor si es Memcached.

APC

Ventajas:
  • Simple
  • Rápido
  • Acelera la ejecución de PHP también
Contras
  • No funciona para sistemas distribuidos, cada máquina almacena su caché localmente

Memcached

Ventajas:
  • Rápido (más o menos)
  • Se puede instalar en un servidor independiente para que lo utilicen todos los servidores web.
  • Altamente probado, desarrollado en LiveJournal
  • Utilizado por todos los grandes (Facebook, Yahoo, Mozilla)

    Contras:
  • Más lento que APC

  • Posible latencia de red
  • Un poco más de configuración

No recomendaría escribir el tuyo propio, hay muchos por ahí.Puede optar por un caché basado en disco si no puede instalar el software en su servidor web, pero existen posibles problemas de raza que resolver.Una solicitud podría escribir en el archivo mientras otra lee.

De hecho, podría almacenar en caché las consultas de búsqueda, incluso durante unos segundos o un minuto.A menos que su base de datos se actualice más de unas pocas veces por segundo, un poco de retraso estaría bien.

El motor de plantillas PHP Smarty (http://www.smarty.net) incluye un sistema de almacenamiento en 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

Parece que estás buscando un marco de caché PHP.Te recomiendo el sistema de plantillas TinyButStrong que viene con un muy buen complemento CacheSystem.Es simple, ligero, personalizable (puedes almacenar en caché cualquier parte del archivo html que desees), muy potente ^^

Almacenamiento en caché simple 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 al reconstruir una parte de una página, Cache_lite con un almacén respaldado por archivos es completamente suficiente y muy sencillo de implementar.

Proyecto Gacela (un sitio de torrents de código abierto) proporciona una guía paso a paso sobre cómo configurar Memcached en el sitio que puede usar fácilmente en cualquier otro sitio web que desee configurar y que pueda manejar una gran cantidad de tráfico.

Obtenga la fuente y lea la documentación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top