domingo, 11 de julio de 2010

Error Javascript: Se esperaba un objeto

Este es un error con el cual en cierta ocasión me encontré cuando cargaba mi página desde IE. Aparentemente no tenía nada mal en mi código , todo estaba más que revisado y probado, como es de costumbre en el FIREFOX funcionaba de maravillas , pero si algo bueno tiene IE es que no acepta casi nada fuera de lugar.


Sin más preámbulos , el error era tan sencillo como que mi código Javascript estaba escrito de la siguiente manera:



<script type="application/javascript">

// código

</script>



Esto no está mal, sin embargo hay muchos navegadores como IE que no reconocen ese MIME ( application/javascript ). El script estaba siendo ignorado y al intentar cambiar el estado de un Objeto y por eso me daba este error: (Se esperaba un objeto).


La solución es muy simple, en vez de poner type="application/javascript" poner type= "text/javascript"


¿Cómo saber me di cuenta del problema?


Ejecuté un código como este:


<script type="application/javascript">

alert('asas');

</script>


Me di cuenta que no pasaba nada, por lo tanto no se estaba reconociendo el script.


Este mi consejo:

- Usen siempre el type= "text/javascript"

Cache en PHP. Un sencillo ejemplo

El hecho de que las casi todas las páginas web actuales sean dinámicas es sin dudas una gran logro en la tecnología web. No siempre fue así y todavía existen las páginas estáticas las cuales solo contienen un simple código HTML que descarga de forma directa y es mostrado en nuestro navegador.

Si bien el uso de lenguajes que se ejecutan en los servidores web y las bases de datos, han posibilitado el dinamismo que hoy en día existen en internet; también es válido destacar la ventaja que tiene una página estática y su rapidez. Una página estática no necesita ejecutar ningún código del lado del servidor, no necesita hacer consultas a una base de datos , muchas veces de extremada complejidad. Es por eso que se han desarrollado mecanismo para simular en páginas dinámicas, la velocidad de acceso que experimenta una página estática.

El uso de Cache

La caché son datos almacenados y duplicados de los originales, estos datos originales deben ser mucho más costosos en tiempo y memoria de obtener, respecto a la copia en la caché. La idea de la cache almacenar una copia la primera vez que se accede al recurso, y a partir de ese momento los accesos que se hagan al recursos tienen una respuesta directa de la cache.
Existe una conocida controversia entre tiempo y memoria muy conocida en programación. Por lo general cuando queremos ganar en tiempo perdemos en memoria. Pero en el caso de la web el espacio es irrelevante, casi todos los servidores host profesionales tiene capacidad suficiente para hacer uso de mecanismo de cache.


¿Cuándo usar mecanismo de cache?
Se debe pensare en usar mecanismo de cache cuando tenemos un recurso que hace un intensivo uso de consultas a bases de datos , cálculos intensivos y además de todo esto este recurso es muy demandado.


¿Cada cuando tiempo se debe refrescar la cache?

El tiempo de vida de la cache antes de ser refrescado, depende en gran medida del recurso. Si es un recurso que rara vez tiene cambios se podría implementar el refrescamiento cada un largo periodo de tiempo o simplemente solo cuando se active una bandera o indicador por el administrador de dicho contenido.

Cache en PHP
No podemos hablar de cache en PHP sin hacer mención de extensión de PHP: APC (Alternative PHP Cache) . Esta es una de las mejores alternativas para implementar uso de cache en nuestras páginas escritas con código PHP. Sin embargo en este artículo no vamos a profundizar en APC sino que vamos a ver como implementar un sistema de Cache usando sencillas directivas PHP.

Ejemplo
Cree un archivo llamado: cache_ini.php (o con el nombre que desee) con el siguiente código:


<?php

// configuración
$cache_dir = 'cache/'; // directorio de cache
$cache_time = 86400; // duración del cache
$cache_ext = 'cache'; // extensión de cache
// script a procesar

$cachepage = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$cachefile = $cachedir.md5($cachepage).'.'.$cacheext;

// calculamos el tiempo del cache
if (@file_exists($cachefile)) {
$cachelast = @filemtime($cachefile);

} else {
$cachelast = 0;
}

@clearstatcache();

// Mostramos el archivo si aun no vence
if (time() - $cachetime <$cachelast) {
@readfile($cachefile);
exit();
}
ob_start();
?>


Cree un archivo llamado: cache_fin.php (o con el nombre que desee) con el siguiente código:




<?php

// Generamos el nuevo archivo cache
$fp = @fopen($cachefile, 'w');
// guardamos el contenido del buffer
@fwrite($fp, ob_get_contents());
@fclose($fp);
ob_end_flush();
?>


Asegúrese que exista un directorio llamado cache en la raíz donde estén archivos que va aplicar la cache, y que este tenga permisos de escritura.
Suponiendo que va a cachear la página de inicio(inde.php) siguiente:

<?php
include("cache_ini.php");


// Contenido de mi pagina

include("cache_fin.php");

?>


Lo único que se debe hacer es incluir el archivo cache_ini.php, al inicio del documento, y cache_fin.php, al final del archivo.
En el archivo cache_ini.php, se puede configurar el tiempo de refrescamiento de la cache , tener en cuenta que este tiempo es por segundo, 3600 es una hora.

Con este ejemplo pueden implementar de forma sencilla cacheo en sus páginas.



Moisés Soft le recomienda investigar más sobre el cacheo en PHP y librerías existentes.
Deje su comentario ,duda o sugerencia.