jquery – ¿Esta solución para cachés frente a cookies me va a meter en problemas?

Pregunta:

Se me ocurrió una solución provisional para un problema no exactamente común, pero que no tiene precedentes, con la interacción de las populares soluciones de almacenamiento en caché de WP con cookies, en este caso las cookies de comentarios de WP estándar. Mi solución también se basa en la excepción rara vez bien definida de "usuarios conocidos" para servir archivos en caché. Ya sea que se pueda usar o no, me imagino que explicarlo y posiblemente aprender por qué es una mala idea puede ser, en general, instructivo.

Probé mi método con WP Super Cache, W3 Total Cache y Comet Cache. El que desglosé por mí mismo en detalle mientras estudiaba este problema fue WP Super Cache ("WPSC" en adelante), así que lo usaré como mi ejemplo principal.

ANTECEDENTES

Cuando un hilo de comentarios estándar de WP está configurado para permitir que los visitantes comenten, las cookies de comentarios se configuran para cualquier comentarista que no sea un usuario registrado y haya iniciado sesión, con privilegios de comentarios reales sujetos a más verificaciones. En lo que creo que es la configuración más común, un comentarista debe proporcionar solo un nombre y una dirección de correo electrónico. Estos se almacenan dentro de dos cookies del navegador, generalmente comment_author_ . COOKIEHASH y comment_author_email_ . COOKIEHASH . COOKIEHASH se define según las opciones del usuario.

Si se configura para entregar archivos recién generados a "usuarios conocidos", el WPSC determina si entregará o no un archivo en caché basándose en varias comprobaciones: los usuarios que han iniciado sesión obtienen archivos nuevos, al igual que los visitantes "que pueden comentar". Estos últimos se identifican principalmente por la presencia en sus navegadores de cookies de comment_author_ que no están identificadas de manera específica o única para el usuario en particular por COOKIEHASH (generalmente, pero no siempre, una versión codificada en MD5 de "siteurl" registrada en las opciones del sitio).

Lo que parece ser la parte clave del código WPSC, de wp-cache-phase1.php LL371-383, usa un patrón RegEx para obtener una cadena, pasando por las cookies:

$regex = "/^wp-postpass|^comment_author_";
if ( defined( 'LOGGED_IN_COOKIE' ) )
    $regex .= "|^" . preg_quote( constant( 'LOGGED_IN_COOKIE' ) );
else
    $regex .= "|^wordpress_logged_in_";
$regex .= "/";
while ($key = key($_COOKIE)) {
    if ( preg_match( $regex, $key ) ) {
        wp_cache_debug( "wp_cache_get_cookies_values: $regex Cookie detected: $key", 5 );
        $string .= $_COOKIE[ $key ] . ",";
    }
    next($_COOKIE);
}

Ahora, si estuviera trabajando estrictamente en PHP, podría volver a producir o conectarme a las funciones centrales de WP y obtener el comment_author_ . COOKIEHASH establecido por la plantilla de comentarios, pero estoy trabajando en jQuery usando el complemento jQuery Cookie. Sin embargo, como puede ver si observa la expresión regular, a la función WPSC no le importa el COOKIEHASH : se satisface si encuentra comment_author_ .

MI SOLUCIÓN TENTATIVA

$.cookie( 'comment_author_proxyhash', 'proxy_author', { path: '/' } );

Para aquellos que no están familiarizados con jQuery Cookie: lo anterior establece una cookie de sesión simple con key = comment_author_proxyhash y value = proxy_author , bueno para todo el sitio. (Además, para aquellos que usan jQuery Cookie y WP, además de pre-sustituir el familiar jQuery $ por WP jQuery , también he configurado $.cookie.raw = true; )

Agregué la línea a mi script jQuery y, ¡voilá! , WPSC, W3 Total Cache y Comet Cache están actuando como yo quiero. Después de usar el script y recargar, obtengo páginas nuevas. Si comment_author_ un comentario real, se establecen las cookies normales comment_author_ y comment_author_email_ , y no parece haber ningún problema con la coexistencia.

Quizás un defecto sería que la cookie "proxyhash" viajará con el usuario siempre que mantenga la sesión abierta, pero eso no me parece un problema importante, ni siquiera que valga la pena advertirlo. Ciertamente, nunca escuché de alguien que se quejara de que algo así sucediera con una de las galletas normales.

Pero tal vez hay algo que me estoy perdiendo y estoy a punto de descubrir mucho para mi aflicción, aunque potencialmente también para mi edificación. O tal vez hay una forma relativamente simple de mejores prácticas para replicar COOKIEHASH en jQuery, que también cubre casos de uso alternativos … o para lograr el mismo efecto final por otros medios: otras formas de engañar a los complementos de almacenamiento en caché para que traten el visitante como comentarista …

Si no es así, ¿hay alguna buena razón para NO enviar esto o algo parecido al universo en un complemento?

Respuesta:

Su solución con la cookie comment_author_proxyhash, por supuesto, funcionará técnicamente: todos los complementos de almacenamiento en caché que conozco no analizan el valor hash y simplemente detendrán la entrega de contenido en caché según la presencia de la cookie comment_author_ *.

El problema aquí es que la funcionalidad de almacenamiento en caché de la página es algo que los sitios web realmente necesitan y, a menudo, el almacenamiento en caché de la página se configura exactamente porque el rendimiento simple de WordPress no es suficiente y puede incluso bloquear el servidor en las horas pico. Depende de la naturaleza del contenido del sitio web, pero los propietarios del sitio a veces simplemente no pueden pagar el hardware necesario para manejar todo a través del código PHP / WP. En otras palabras, la mayor cantidad de tráfico posible debe ser servida desde la caché de la página siempre que sea posible. Por la práctica, puedo decir que a menudo tenemos que identificar y deshabilitar complementos que realizan excepciones de caché.

Por supuesto, no siempre es posible, pero intente trabajar con la página almacenada en caché siempre que sea posible. Por ejemplo, puede ocultar las etiquetas div con comentarios que desee ignorar a través de javascript o el bloque de comentarios completo ajax-ify.

En cualquier caso, no necesita marcar al visitante como comentarista, pero deje de almacenar en caché debido a sus razones lógicas personalizadas. Por lo tanto, es mejor usar una cookie única y convertirla en una señal de excepción de caché. W3 Total Cache tiene la opción "Rechazar cookies" para eso, pero no otros complementos de su lista, por lo que necesitará un truco como el que sugirió.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım