2009-10-05 11 views
5

Estaba buscando el almacenamiento en caché de contenido HTML/Texto para sitios de tamaño pequeño y mediano usando php. Sobre todo, voy a guardar el menú de navegación dinámico para el sitio, el informe HTML generado de DB, etc. Principalmente estoy buscando el almacenamiento en caché basado en sesiones (¿es una mala idea?). También puede estar basado en archivos.Php técnica de almacenamiento en caché simple para sitios web de tamaño pequeño-medio

Cualquier solución existente es muy apreciada. Por ejemplo, Zend Framework es bien conocido por sus componentes débilmente acoplados. Entonces, Zend_Cache puede ser un candidato, pero no pudo encontrar el adaptador de caché basado en la sesión. Además, no es un componente completamente independiente. ¿Alguien puede decir cuáles son las clases que debo tomar para usar Zend_Cache?

Otra opción es PEAR's - Cache_Lite, ¿cuál es su opinión sobre esto?

¿Hay algún otro marco, desde donde puedo separar fácilmente el componente de almacenamiento en caché y utilizarlo con menos curva de aprendizaje?

Gracias.

+0

Supongamos que mi servidor de alojamiento compartido no es compatible con APC o memcached, por lo que tengo que implementar mi propio mecanismo de almacenamiento en caché. –

Respuesta

2

Memcached viene a la mente, como una solución realmente ligera y eficiente.

Pero también puede almacenar el contenido en archivos simples. El sistema de archivos suele ser rápido y maneja bloqueos de lectura/escritura sin problemas. Y no hay necesidad de una biblioteca elegante para manejar eso ... las funciones filemtime, file_put_contents y file_get_contents son todo lo que necesita.

  1. Comprobar si la caché se ha escrito hace más de N secondes con filemtime()
  2. Si es demasiado viejo, generar el contenido y escribir con file_put_contents()
  3. Si no, simplemente cargarlo ingenio file_get_contents()

Editar: Añadiré un enlace a esa publicación que hice hace unos meses: Best Solution for caching. No es por completo sobre el tema, pero puede ser que le ayudará en sus Investigaciones :)

0

Puede consultar el almacenamiento en caché en CakePHP. Dudo que pueda separarlo del trabajo de marco, pero debería ayudarlo a comprender cómo almacenar en caché el contenido dinámico.

1

El almacenamiento en caché basado en sesiones probablemente no sea una buena idea. Solo es apropiado en casos limitados en los que necesita almacenar en caché un resultado específico por usuario (no para todos).

APC está bastante ampliamente implementado, así que si tiene acceso a él, buscaría en Zend_Cache con APC en la parte de atrás. Si APC no está disponible, Zend_Cache con archivos planos en el back-end debería ser suficiente para sitios de tipo pequeño/mediano

1

JPCache es una biblioteca de almacenamiento en caché liviana decente.

0

La mayoría de las bibliotecas PHP de almacenamiento en caché se implementan utilizando el output buffer control functions. Puede implementar su propio almacenamiento en caché muy simple de la misma manera.

<?php 

function callback($buffer) 
{ 
    // Code to store output in cache 
} 

if (/* Test cached copy is still valid */) { 
    /* Output cached copy to browser */ 
    exit(0); 
} 

ob_start("callback"); 
?> 

<html>...</html> 

<?php 
ob_end_flush(); 
?> 

Puede omitir el ob_end_flush() si se quiere, ya que se activará automáticamente al final de la salida.

Lo interesante a tener en cuenta es que esta estructura podría envolverse alrededor de unidades más pequeñas que la página. Por ejemplo, menciona el almacenamiento en caché solo en el menú de navegación.Necesitarías un poco más de lógica alrededor del bloque para ser almacenado en la memoria caché, pero el principio es el mismo.

Cuestiones relacionadas