buscar
Espanol flagIngles flag






Tiempo estimado de lectura 1:42 min. rellotge
Sistemas de Cache y la version movil del iphone


En una entrada anterior hablamos sobre emular el iphone bajo Firefox para testear nuestras paginas en la versión móvil.

El problema empieza cuando se usa un sistema de cache interno.

Análisis del Problema

  1. Un usuario visita una sección de nuestra pagina desde cualquier explorador, entonces dicha pagina se cachea.
  2. Otro usuario visita la misma sección desde un iphone, lógicamente debería mostrar la versión móvil pero el sistema de cache devolverá la versión normal de la sección la cual estaba cacheada.
  3. Esto causa un conflicto entre la versión normal y la versión móvil y viceversa.

Solución

Sea cual fuese el sistema de cache debemos evitar el inicio y la verificación del sistema de cache en nuestras paginas cuando se navegue por el iphone, esto se logra filtrando el UserAgent del navegador.

Sistemas de Cache

/* Agregar antes que inicie el cacheo */
if (eregi('(iPhone|iPod)', $_SERVER['HTTP_USER_AGENT'])) return false;

inicio_cache();

WP Super Cache y WP Cache

Añadimos iPhone y iPod a la lista Rejected User Agents que esta en la administración de dichos plugins de wordpress.


Nota: La forma como verifica los users agents internamente wp super cache y wp cache es mediante la funcion apache_request_headers la cual está disponible únicamente cuando PHP se ejecuta como un módulo de Apache, si tu servidor ejecuta PHP como CGI las opciones de Rejected User Agents no estara disponible.

Como solucionarlo

Tanto para WP Super Cache o WP Cache, editamos el archivo wp-cache.php y pegamos esto antes de todo el código.

/* verificamos si no existe la funcion*/
if (!function_exists('apache_request_headers')) {
/* si no existe la creamos una similar. */
    eval('
        function apache_request_headers() {
            foreach($_SERVER as $key=>$value) {
                if (substr($key,0,5)=="HTTP_") {
                    $key=str_replace(" ","-",ucwords(strtolower(str_replace("_"," ",substr($key,5)))));
                    $out[$key]=$value;
                }
            }
            return $out;
        }
    ');
}

1 Blog Cacher

FUNCTION obc_cache_init(){
/* En el archivo advanced-cache.php en la linea 67 */
global $obc_configuration;

//Evitamos cacheo para iPhone/iPod
if (eregi('(iPhone|iPod)', $_SERVER['HTTP_USER_AGENT'])) return false;

$obc_create_cache = true;

De antemano agradecimiento a Andres por la ayuda que me brindo :)


CalinSoft
Escrito por: Carlos Montalvo
Deja tus comentarios

Entradas Relacionadas:


Tags: , , , , ,

- [Fuente Original]








...por Redacción


Patrocinador



Otros Reportajes:


Los más comentados:




Publicidad




Patrocinador




Publicidad



En colaboración:
Fox   National Geographic Channel   Feelnoise   Foxlife   Guinness World Records   Phaidon   Blume   Editorial Planeta

| PortalMundos.com Internacional |
fltx Europa: España fltx América del Norte: México, US en español fltx América Central: Costa Rica, Cuba, El Salvador, Guatemala, Honduras, Nicaragua, Panamá, Puerto Rico, República Dominicana fltx América del Sur: Argentina, Bolivia, Chile, Colombia, Ecuador, Paraguay, Perú, Uruguay, Venezuela

PortalMundos Factory, S.L. | 2000 - 2012 | Hosting Profesional por :: isyourhost.com ::