it-swarm-es.com

¿Cómo invalidar una memoria caché de vistas según criterios personalizados?

Tengo un tipo de contenido personalizado (story) con un campo de fecha y hora que determina si una historia aparece en las vistas que enumeran los nodos de ese tipo de contenido; si la fecha y hora definida para un nodo es más reciente que la fecha y hora actual, no se mostrará.

Mi problema es que tengo que ir y vaciar admin/config/development/performance y haga clic en Clear all caches o desmarque Cache pages for anonymous users.

Me gustaría seguir almacenando páginas en caché para usuarios anónimos, así que estoy buscando otras opciones.

Cualquier ayuda es muy apreciada.

4
Egil Hansen

Parece que el problema no es que las vistas se almacenen en caché, sino que se almacene en caché toda la página. Si Drupal tiene una página completa almacenada en caché, no importa si la vista está almacenada en caché o no. Lo que debe hacer es deshabilitar condicionalmente la caché de la página o evitar Drupal almacenando en caché esa página en primer lugar.

Ha habido algunas charla sobre cómo hacer la primera, pero esto no es algo que haya probado o pueda aconsejar.

Tenga en cuenta que jugar con el sistema de almacenamiento en caché Drupal puede dar algunos problemas imprevistos.

Una solución alternativa sería vaciar el caché de la página o invalidar el caché de esa página en particular una vez al día/hora para asegurarse de que esté relativamente actualizado. Esta es probablemente la ruta que tomaría en esta situación.

3
googletorp

Tengo un parche para potenciar que hace exactamente lo que quieres, porque ese es un requisito de nuestra configuración. El problema es que necesita un rastreador externo; buscamos contenido nuevo cada 30 segundos en nuestros 1,100 dominios y los volvemos a rastrear. Puede hacer lo que quiera; Pero todavía estoy trabajando en los detalles para que funcione para la configuración promedio. Esto también es para D6, así que no es de mucha ayuda para ti.

En pocas palabras, necesitas algo externo para ver si se acabó el tiempo OR algo de lógica en settings.php que maneja esto. Lo más probable es que algo externo sea cron.

1
mikeytown2