viernes, 27 de julio de 2012

Mejorar la velocidad de carga de una Web

Uno de los problemas que se le presenta a un Webmaster sobre una web es cómo mejorar la velocidad de carga.
Debido a que en toda web hay una gran cantidad de scripts e imágenes la velocidad de carga en ocasiones deja mucho que desear. Y claro a la vista del público la página no es demasiado formal; y si además de eso es una web dedicada a la venta de un producto o servicio puede llegar a provocar un cierto descenso de las ventas o miedo a comprar.
Este es uno de los problemas que se nos presentó en nuestra web corporativa dedicada al sector turístico (Hoteles).
Tras hacer multitud de cambios en el diseño y en la programación del portal, observamos un descenso sorprendente en la velocidad de carga. Necesitábamos buscar una solución para ello y lo encontramos.

Una forma muy utilizada y que a nosotros nos sirvió fue el comprimir los archivos que forman parte de la web. Esta compresión llegaba a un 75%-90% del espacio original y provocando el mismo descenso en retardo en la velocidad de carga.

¿Cómo comprimir los archivos?
Como en nuestro caso poseemos un servidor con sistema Debian podemos usar la herramienta Gzip.
Para hacerlo existen 3 formas:
  1. En el archivo .htaccess. Añadimos la siguiente línea:  php_flag zlib.output_compression On
  2. En el archivo php.ini. Ponemos a On la siguiente línea:  zlib.output_compression = On
  3. Añadir en cada script php antes de cualquier output:  ini_set(‘zlib_output_compression’,’On’);
Otra forma que también podemos utilizar es aprovechar la cache de los navegadores ya que estos guardan casi todo (imágenes, archivos CSS, js, etc...). Lo que ocurre es que si no le indicamos nada no lo guarda en cache por lo que cuando el usuario navegue en la web tendrá que descargarla de nuevo cada vez.

¿Cómo indicar que se guarde la web en cache?
Podemos hacerlo  modificando el .htacces para que añada un expire header a los archivos solicitados, provocando así que si este expire no ha caducado, guarde los archivos en la cache del navegador.
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"><br />
Header set Expires "Thu, 26 Jul 2040 20:00:00 GMT"<br />
FilesMatch>
Si realizamos estos sencillos pasos podemos aumentar la velocidad de carga del navegador en casi un 95% más. Yo creo que merece la pena.

jueves, 12 de julio de 2012

Solución Parse Error: syntax error, unexpected $end

A la hora de cambiar el diseño de una Web, si no tenemos mucho cuidado, podemos provocar errores en caso de que dicha Web se encuentre en producción (ya funcionando en Internet).
Este caso es el que se nos presentó a nosotros y para poder solucionarlo decidimos el montar un servidor Web con Apache, PHP y MySQL para poder cambiar el diseño y luego subirlo todo sin en un momento concreto ya cambiado.
Para poder hacer esto hay una herramienta llamada WAMP (Windows Apache MySQL PHP).  
O LAMP (Linux Apache MySQL PHP) en su versión para Linux; nos permitirá instalar dicho servidor de forma rápida limpia e intuitiva.
Tras migrar la base de datos y los archivos desde nuestro servidor al equipo con el cual íbamos a hacer los cambios de diseño nos arrojó el siguiente error la Web:

Investigando un poco, hemos descubierto a que se debe. Hay dos posibilidades:
  1. Que alguna llave dentro de la programación no esté cerrada correctamente. (En nuestro caso no era probable ya que la web ya funcionaba en el server anterior).
  2. El PHP instalado no admite en su configuración el uso de etiquetas PHP en formato abreviado (“” en lugar de “php” ).
Como en nuestro caso el problema era el segundo podíamos solucionarlo o bien tocando todo el código, (tarea bastante ardua debido a la cantidad enorme de archivos); o bien tocando el php.ini al cual teníamos acceso y cambiando la siguiente clave:
  • short_open_tag = On
En el server recién instalado permanece en off por lo que solo hay que ponerlo a on:

Con esto ya podremos acceder a la web de forma correcta. Saludos curiosos.

Install Drupal 8 in CentOS

Drupal is an open source, flexible, highly scalable and secure Content Management System (CMS) which allows users to easily build and create...