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()
orequiere()
) 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...
Comentarios