La finalidad de este apartado consiste en explicar como un navegador almacena y consulta las p�ginas de su cach� y como lo hace un servido Proxy, de esta manera podemos presentar como modificar su comportamiento por defecto y averiguar posibles deficiencias. Antes de empezar se muestran algunas de las cabeceras del protocolo HTTP/1.1 que se suelen utilizar en Proxys y navegadores.
�Cabeceras del mensaje
Las siguientes cabeceras forman parte del protocolo HTTP/1.1 definidas en el RFC2616, salvo que se indique lo contrario.
Cache-Control
Permite indicar si un elemento puede ser cacheado y su caducidad.
Valor | Significado |
---|---|
public | Indica que la respuesta a una petici�n puede ser ocultada (cacheada) tanto por clientes como por el Proxy. |
private | Indica que la respuesta no se puede cachear por caches compartidas, es decir, solamente en teor�a podr�a cachearla un cliente. |
no-cache | No puede cachear el elemento ni el cliente ni el Proxy. |
max-age | Segundos m�ximos que se considera un objeto no caducado desde que se realiz� su petici�n. |
must-revalidate | Obliga a comparar con el servidor web antes de usar el cach�. |
Pragma
Corresponde al HTTP/1.0 pero por razones de compatibilidad actualmente se considera soportado aunque solo para peticiones. Su sintaxis es la misma que en Cache-Control.
Via
Usado por Proxys o gateways para indicar el protocolo intermedio entre el cliente y el servidor. Generalmente se suele a�adir la maquina y la versi�n del software del Proxy.
Valor | Significado |
---|---|
On | Mostrar� informaci�n como el nombre de la m�quina del Proxy. |
Off | No a�ade informaci�n en la cabecera Via. |
Full | Mostrar� informaci�n como el nombre de la m�quina y la versi�n del software. |
Block | Eliminar� las l�neas en que aparezca la cabecera Via. |
Expires
Indica cuando caducar� una respuesta dada por el servidor web. El formato de esta cabecera esta definido en el RFC850.
Ejemplo fecha sin caducar --> Sun, 17 Jan 2038 20:14:07 GMT
Ejemplo fecha caducada --> Wed, 26 Feb 2001 08:21:57 GMT
Last-Modified
Indica en una respuesta cuando el servidor considera que se modific� por �ltima vez la p�gina o objeto que proporciona. Si la cabecera Expires no est� presente, se toma este valor para determinar la caducidad. Cada Proxy y navegador utiliza su criterio, pero un ejemplo consistir�a en que si tenemos un objeto en el cach� desde hace 10 d�as y cuando se introdujo se sab�a que hab�a sido modificado 150 d�as antes, es l�gico considerar que todav�a no se habr� modificado.
X-Cache
Esta cabecera no pertenece a ning�n est�ndar, la consideramos ya que servidores Proxy como Apache o Squid la a�aden para indicar si la p�gina ha sido cogida desde el cach� o bien desde el servidor.
Valor | Significado |
---|---|
MISS | La p�gina no se ha servido desde el cach�. |
HIT | La p�gina se ha servido desde el cach�. |
�Fichero de auto-configuraci�n para navegadores
El fichero de auto-configuraci�n permite indicar a los navegadores que Proxy deben utilizar para realizar sus peticiones, de esta manera evitamos que el usuario sea el encargado de configurar manualmente su conexi�n a Internet.
El hecho de utilizar un fichero ya configurado permite adem�s, modificar el puerto y las IP's de los servidores Proxy sin tener que volver a re-configurar todos los navegadores.
�Creaci�n del fichero
Para que el fichero pueda ser accesible desde cualquier navegador, podemos almacenarlo en un servidor web, en un directorio de red o en un servidor FTP, a continuaci�n se muestran los pasos para que el navegador pueda acceder a este fichero mediante Apache Web Server.
- A�adir la siguiente l�nea en el fichero /etc/mime.types que utiliza Apache Web Server para indicar al navegador (mediante la cabecera Content-Type), que tipo de fichero est� recibiendo.
application/x-ns-proxy-autoconfig pac
De esta manera indicamos que todos los ficheros .pac que sirve Apache se interpreten como ficheros de auto-configuraci�n.
- A�adir las siguientes l�neas en httpd.conf para que se pueda acceder al fichero de auto-configuraci�n mediante por ejemplo: http://host/proxy/proxy.pac
Alias /proxy/ /ruta/del/fichero/ <Directory /ruta/del/fichero> Options None AllowOverride None Order allow,deny Allow from all </Directory>
- Creamos el fichero proxy.pac con permisos de lectura para todos.
touch /ruta/del/fichero/proxy.pac chmod 644 /ruta/del/fichero/proxy.pac
�Configuraci�n del fichero
El fichero proxy.pac que hemos creado en la secci�n anterior debe de ser escrito en JavaScript y presentar como "main" la funci�n FindProxyForURL(url, host), la cual recibe del navegador los dos argumentos especificados y devuelve a �ste un valor que le indica como debe de actuar, los valores de retorno posibles se describen a continuaci�n.
- DIRECT
- Indica al navegador que se conecte sin utilizar ning�n Proxy.
- PROXY host:port
- Permite indicar al navegador la IP y el puerto del Proxy.
Ejemplo
return "PROXY 192.168.0.87:3128";
A continuaci�n, presentamos un ejemplo del c�digo que debe de tener el fichero de auto-configuraci�n para que sea interpretado por los navegadores.
function FindProxyForURL(url, host) { <!-- Establecemos No Proxy for: --> if (shExpMatch(url, "*.tu-dominio.org")) return "DIRECT"; <!-- Una red utiliza un Proxy --> else if (isInNet(myIpAddress(), "192.168.0.0", "255.255.255.0")) return "PROXY 192.168.0.87:3128"; <!-- El resto utiliza otro Proxy --> else return "PROXY 192.168.0.87:8087"; }
�Configuraci�n de los clientes
El c�digo del fichero de auto-configuraci�n que hemos presentado es v�lido para navegadores como Mozilla y Netscape, donde funciona correctamente.
- Seleccionar en el men� de Mozilla y Netscape: Edit - Preferences - Advanced - Proxies
En caso de Internet Explorer seleccionar: Herramientas - Opciones de Internet - Conexiones - Configuraci�n de LAN
- Introducir la siguiente l�nea en la opci�n:
Automatic proxy configuration URL --> En Mozilla y Netscape
Usar secuencia de comandos de configuraci�n autom�tica --> En Internet Explorer
http://host/proxy/proxy.pac
- Presionar la tecla Reload para activar los cambios en Mozilla y Netscape o reiniciar el navegador para que se lea el fichero en caso de Internet Explorer.