iCarsOnline

iCarsOnline

your online auto source!

Reaching in to Heaven

Reaching in to Heaven

Artistic Expression

The Word of the Lord

The Word of the Lord

BroadCasts Religious

Abogado Garza

Abogado Garza

Lawyer Web Page

Ago
15

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 :)

Categorizado: Desarrollo Web
Etiquetado: | | | | | | | |

Comparte esta noticia:

Articulos Relacionados

1 Valiente(s) Opinaron, falta el tuyo comenta


    1

    что касается темы, то мне кажется актуальность будет известна только через некоторое время


Danos tu opinion sobre esta noticia.

CalinSoft se reserva el derecho de eliminar o editar todo comentario que considere ofensivo o difamatorio. Debatir, criticar NO ES INSULTAR.