Videocaching
C@mpus - @cademia Linux

Introducción

Un caché convencional no puede almacenar óptimamente los videos de sitios como youtube o google videos; la razón principal es que esta clase de sitios utiliza diferentes nombres de servidores para almacenar un mismo caché (por ejemplo ak1.ad.youtube.com, ak2.ad.youtube.com, etc.) y esto disminuye la frecuencia de un URL evitando la pronta entrada al caché.  No existe garantía de que dos visitas consecutivas al mismo contendo utilicen la misma dirección para acceder al objeto del video.  El siguiente procedimiento indica como decirle a Squid que realice caché de videos en Internet.


Paquetes necesarios

  • Squid 2.7STABLE9
  • Videocaching script

Configuración

Es necesario instalar Squid 2.7STABLE9 (aunque al momento de escribir este artículo está disponible Squid 3.1.10, Squid 3 carece de funcionalidades específicas). El comando para la instalación desde Mandriva de squid2 es urpmi squid2*.rpm (usted sólo debe descargar los RPM correspondientes a su arquitectura).

Por defecto, squid2 no está preparado para realizar el caché del video, por lo tanto se deberá realziar las siguientes acciones:

  1. eliminar del archivo /etc/squid/squid.conf las siguientes líneas:
    acl QUERY urlpath_regex cgi-bin \?
    cache deny QUERY

    estas líneas permitirán que todos los objetos que contengan cgi-bin o ? en el URL sean candidatos a entrar al caché. 
  2. añadir o substituir hasta arriba la siguiente línea (debe ser la primera de su naturaleza):
    refresh_pattern -i \.flv$ 10080 90% 999999 ignore-no-cache override-expire ignore-private
    esta línea ingnorará las banderas de HTTP cuando un archivo .flv sea descargado y marcado como NO ingreso al caché. Usted puede añadir más líneas para diferente tivos de archivos, .flv es la extensión más utilizada para videos en Internet, sin embargo talvez quiera añadir extensiones como .avi, .mp4, .mp3, .mpej, etc.
  3. añadiro o substituir la siguiente línea:
    quick_abort_min -1 KB
    esto permite a squid hacer solicitudes de archivo completo en lugar de fragmentos.
  4. añadir o substituir la siguiente línea: 
    maximum_object_size 4 GB
    el valor de 4GB indica que es el máximo tamaño que puede ingresar al caché.  Este dato no debe esceder del tamaño total del caché especificado en la suma de los tamaños de los parámetros de cache_dir.
  5. añadir las siguientes líneas:
    acl videocaching dstdomain .youtube.com
    acl videocaching dstdomain .squidinternal
    acl videocaching dstdomain .googlevideo.com
    acl videocaching dstdomain .video.google.com
    cache allow videocaching
    estas líneas explícitamente indican a squid que estos dominios pueden entrar en el caché.  Hay dos consideraciones importantes, 1) la línea cache debe ser la primera de su clase y 2) usted puede añadir tantas líneas acl sean necesarias para admitir otros sitios.
  6. ubique las líneas siguientes:
    refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
    refresh_pattern . 0 0% 4320 

    estas líneas deben ser las últimas de su naturaleza, puesto que indican a squid que estos patrones deben ser excluidos del caché. 
  7. añadir o substituir las siguientes líneas:
    storeurl_access allow videocaching
    storeurl_access deny all
    storeurl_rewrite_program /etc/squid/storeurl.pl
    storeurl_rewrite_children 3
    storeurl_rewrite_concurrency 16
    storeurl_rewrite_program /etc/squid/storeurl.pl
    storeurl_rewrite_children 3
    storeurl_rewrite_concurrency 16

    Usted puede modificar los parametros según sus conveniencias. 

Al término de las modificaciones, el comando service squid restart permitirá aplicar los cambios.