Evitar que el navegador cachee nuestra aplicación ajax

En muchas ocasiones me encontrado con que el navegador ha cacheado mi aplicación web y algunas secciones que deberían refrescar información cada cierto tiempo sin refrescar la página, no lo hacen.
Esto es debido a la cache en los navegadores. Podemos forzar al navegador para que no use su cache en nuestra aplicación mediante esta directiva en un meta:

equiv=”CACHE-CONTROL” content=”NO-CACHE”

Puede que encesitemos añadir una cabecera al script del servidor al cual llamamos asincronamente. En el caso de ser un script php añadiriamos lo siguiente:

header(“Cache-Control: no-store, no-cache, must-revalidate”);

9 cosas que no puedes hacer con javaScript

Lo he visto en tuFuncion.com.

1. Javascript no puede acceder a los archivos alojados en el ordenador del usuario, es una medida de seguridad básica.
2. Javascript tampoco puede acceder a archivos remotos, esto implica que no puedes acceder a archivos alojados en el servidor, puedes acceder a contenido via HTTP pero no podrás cambiar permisos o renombrar archivos utilizando únicamente Javascript.
3. No puedes ejecutar aplicaciones externas al navegador con Javascript.
4. Javascript no puede acceder a periféricos como la impresora, el escáner ó la cámara web.
5. Javascript no puede modificar la URL que nos muestra el navegador.
6. Javascript no puede tampoco modificar el histórico de páginas del navegador, esto evita que se pudiera alterar el uso del botón atras de nuestro navegador, o el historial de URLs que nos aparece en la barra de navegación.
7. Javascript no tiene acceso a bases de datos necesitarías combinarlo con algún lenguaje del lado-servidor (ASP, PHP).
8. Tampoco podremos encriptar el HTML con Javascript, no puedes evitar el robo del código HTML cualquier usuario puede verlo.
9. No puedes controlar el ratón o el teclado de los usuarios con Javascript.

Centrar capa usando css

Este es un post que he rescatado de mi antiguo blog enrackados.com. Decía lo siguiente:

Para centrar en la página tanto en altura como en anchura una tabla o una capa y que se mantenga centrada si la ventana de nuestro navegador se maximiza,contrae o simplemente se quiere mostrar centrada en cualquier tipo de resolución de pantalla, debemos usar el siguiente código.

position: absolute;

top:50%;
left:50%;

width:760px;
/*la mitad de la anchura de la capa o tabla principal*/

margin-left:-380px;
/*Alto de tabla o capa principal*/

height:370px;
/*la mitad de la altura de la capa o tabla principal*/

margin-top:-185px;

Éste código centrará la capa tanto en altura como en anchura de la capa o tabla que tenga asignada la Class tCentrada.
Para asignar la instrucción a la tabla que queramos centrar debemos indicarselo con el atributo class en la tabla o capa deseada:

<table class="tCentrada">

En el caso de ser un div

<div class="tCentrada">

Ejecutar sitios web dinámicos desde un DVD/CD

DWebPro es un servidor web independiente que permite distribuir sitios web dinámicos en un cd o dvd para ser ejecutados desde los mismos.
Esto nos permite hacer presentaciones de sitios web dinámicos sin estar conectados a internet. Soporta los siguientes lenguajes:

PHP
Perl
Python
Ruby
Rebol
Delphi Web Script II
ASP 3.0
ASP.Net
JSP/Servlet
Coldfusion
EXE/CGI/ISAPI

Prevenir efecto barrapunto, digg y otros

En mpWebWizard, veo un sencillo truco para desviar el tráfico proveniente de grandes diggs y portales de información que pueden dejar inaccesible nuestro sitio.

//El truco, consiste en meter todas las direcciones que queremos desviar en un array:

$sites = array(

digg.com‘,
‘slashdot.org‘,
reddit.com‘,
fark.com‘,
somethingawful.com‘,
kuro5hin.org‘,
engadget.com‘,
boingboing.net‘,
‘del.icio.us’,
netscape.com

);


// Comprobamos que el tráfico no proviene de un servicio de proxy cache (si no lo hacemos la aplicación entraría en un bucle) y comprobamos la definición de la variable de cabecera HTTP_REFERER

if (isset ($_SERVER['HTTP_REFERER']) && ! strstr ($_SERVER['HTTP_USER_AGENT'], ‘ [ Servicio de Proxy ]‘)) {

$referer = parse_url ($_SERVER['HTTP_REFERER']);

$referer = $referer['host'];

//Por cada uno de los sitios del array que hemos definido en el primer paso, comprobamos que no aparezca en la cabecera recibida.

foreach ($sites as $site) {

if(
stristr ($referer['host'], $site)) {

//Redireccionamos al sitio que queramos. Si en ese sitio hemos replicado el contenido del sitio web que tenemos y queremos pasarle dinámicamente la ruta y parámetros referentes al post añadiremos al final: $_SERVER['REQUEST_URI']

//Como aportación personal… yo desviaría el tráfico aleatoriamente a una de varias direcciones alternativas, que previamente hemos almacenado en un array, mediante array_rand()

header (‘Location: [ Dirección a la que enviamos el tráfico ]‘);

//Terminamos la ejecución del script

exit;
}
}
}