Gravatar de Armonth

Optimizando la estructura/administración de un sitio web

En AskApache han publicado una entrada titulada Optimize a Website for Speed, Security, and Easy Management que recomiendo leer.

Como bien indican y siempre argumento, tener un sitio web con los ficheros metidos en cualquier sitio, imágenes mezcladas con ficheros de código, varias plantillas (index.html, index1.html, index-old.html ¿os suena?), etcétera, a la larga lo único que trae es inconsistencias y dolor de cabeza a la hora de meter mano.

Para empezar la entrada propone la siguiente estructura:

/home/askapache.com
|-- /home/askapache.com/backups/
|-- /home/askapache.com/htdocs/
|-- /home/askapache.com/inc/
|-- /home/askapache.com/logs/
|-- /home/askapache.com/static/
|-- /home/askapache.com/tmp/
|-- /home/askapache.com/.htpasswd-basic
|-- /home/askapache.com/.htpasswd-digest

Es decir, en el $HOME (sí: se asume servidores Unix-like. Como la mayoría de servidores serios) un directorio por cada dominio y dentro una estructura fácil de mantener:

  • /backups/. Donde guardaremos las copias de seguridad del sitio.
  • /htdocs/. La raíz del sitio web.
  • /inc/. Para esos ficheros PHP (y otros lenguajes) que se van a incluir (por ejemplo con include() o requiere()) aparte del sistema o CMS usado para la web.
  • /logs/. Donde guadaremos los registros de errores del PHP, de visitas/errores del Apache o al menos será un enlace simbólico apuntando a la ruta donde se almacenarán.
  • /static/. La raíz donde guardar los ficheros estáticos.
  • _/tmp/-. Sólo necesario si el hosting no dispone de un directorio /tmp en la raíz del sistema de ficheros (o éste no es accesible para el usuario que administra los ficheros de la web).

El artículo se desarrolla mucho más (optimizaciones, reducción de cabeceras HTTP 403, consejos, sistemas de cache y muchos enlaces) pero sólo para empezar ya es un gran consejo.

Sobretodo el uso del static (el cual puede ser un subdominio tipo http://static.tusitio.com o un subdirectorio), el ejemplo que da sirve para imaginar cómo ordenarlo:

/home/askapache.com/static/
|   |-- /home/askapache.com/static/css/
|   |-- /home/askapache.com/static/flv/
|   |-- /home/askapache.com/static/img/
|   |-- /home/askapache.com/static/js/
|   |-- /home/askapache.com/static/mp3/
|   |-- /home/askapache.com/static/pdf/
|   |-- /home/askapache.com/static/swf/
|   |-- /home/askapache.com/static/.htaccess
|   |-- /home/askapache.com/static/index.html
|   |-- /home/askapache.com/static/robots.txt

Y si bien en casa de herrero, cuchara de madera (a mí me hubiera gustado seguir algo así, pero por no liarme mucho en su día con WordPress, su “/wp-content/uploads” y sobretodo para no dar muchos dolores de cabeza a los colaboradores no lo hice) las posibilidades de tener separado contenido de presentación y “media” en general permite muchas posibilidades que de otra manera requerirían código extra y/o crearían posibles conflictos:

  • Administrar de diferente forma el hotlinking a imágenes y el acceso a otros ficheros.
  • Capar bots que nos interesa que accedan de diferente forma a cada tipo de contenido.
  • Organizar los contenidos.
  • Programar backups más eficientes (en mi caso, de los directorios listados, los cuatro últimos no cambiarían prácticamente nunca).

Por no hablar de aumentar la capacidad de servir contenidos separando static en un servidor distinto de la web en sí o de la base de datos…

Un comentario (feed)

  1. Gravatar de WindLaze WindLaze nos comenta:

    A lo mismo que apuntan los Frameworks MVC que ultimamente se hacen cada vez más conocidos a la hora de programar aplicaciones web, y la verdad es que al llevar un orden con los directorios y filas, ayuda mucho a la producción y futuras actualizaciones del código.

    También entra el tema para los que tienen un hosting que no tiene SSH, simplemente no puedes guardar tus archivos a incluir, ni de configuracón, fuera de www/htdocs (que además de optimizado, sería un sitio seguro) porque el servicio no te lo permite, eso si que jode.

    Martes, 21 de Octubre/2008 @ 0:21

No seas tímido, da tu opinión

Sé respetuoso con los demás, la diferencia de opiniones enriquece la discusión, los comentarios bajo ciertas circunstancias pueden ser moderados y requerir aprobación.