2 tips para aumentar la velocidad de tus sitios

2 tips para aumentar la velocidad de tus sitios

Puff hace mucho no escribo nada mi nuevo proyecto (http://www.dondejugarpaintball.com) Me esta llevando todo mi tiempo libre.

Voy a mostrarles como implementar de forma simple dos tips de velocidad para tus paginas, el primero es gzip, la idea es que toda la salida de nuestra aplicacion al browser no tenga espacios inecesarios, tabulaciones, y saltos de lineas, en pocas palabras, si vemos el codigo fuente de nuestro sitio vamos a ver solo una linea con todo el contenido html, como pueden ver en http://www.dondejugarpaintball.com. Esto es muy util para ahorrarnos ancho de banda, y obviamente aumentar la velocidad con la que se descarga nuestro contenido.

Esto a simple vista pareceria ser un trabajo de horas, pero como nosotros usamos Zend Framework y toda la info de nuestra aplicacion pasa por nuestro public/index.php con solo editar este archivo podemos conseguir esta mejora en segundos.

Si tienen un archivo index.php standar sin modificaciones, puden copiar y pegar este codigo y es suficiente.

  1.  
  2. <?php
  3. //Con esta linea le indicamos que queremos obtener toda la salida generada
  4. // Define path to application directory
  5. defined(‘APPLICATION_PATH’)
  6. || define(‘APPLICATION_PATH’, realpath(dirname(__FILE__) . ‘/../application’));
  7.  
  8. // Define application environment
  9. defined(‘APPLICATION_ENV’)
  10. || define(‘APPLICATION_ENV’, (getenv(‘APPLICATION_ENV’) ? getenv(‘APPLICATION_ENV’) : ‘production’));
  11.  
  12. // Ensure library/ is on include_path
  13. set_include_path(implode(PATH_SEPARATOR, array(
  14.             realpath(APPLICATION_PATH . ‘/../library’),
  15.             get_include_path(),
  16.         )));
  17.  
  18. /** Zend_Application */
  19. require_once ‘Zend/Application.php’;
  20.  
  21. // Create application, bootstrap, and run
  22. $application = new Zend_Application(
  23.     APPLICATION_ENV,
  24.     APPLICATION_PATH . ‘/configs/application.ini’
  25. );
  26.  
  27. $application->bootstrap();
  28. $application->run();
  29.  
  30.  
  31. // A partir de esta linea conseguimos toda la salida generada y la comprimimos
  32. $cntACmp =ob_get_contents();
  33. $cntACmp=str_replace("\n",‘ ‘,$cntACmp);
  34. $cntACmp=ereg_replace(‘[[:space:]]+’,‘ ‘,$cntACmp);
  35. ob_start("ob_gzhandler");
  36. echo $cntACmp;
  37. ?>
  38.  

Si guardan y ejecutan su aplicacion, ya tendrian que tener todo su contenido html en una sola linea.

El segundo tips, ya requiere un poco mas de conocimeintos sobre apache.
La idea es que cada vez que alguien pida un contenido estatico como una imagen, o css el apache responda lo mas rapido posible, esto se hace diciendole que nuestro contenido tiene una fecha de expiracion x, y por lo tanto si esa fecha no vario, hay que entregar el mismo contenido que se entrego anteriormente, esto reduce mucho los recursos de nuestro sistema para entregar un contenido estatico. Podemos definir tiempos para cada extension.

Para realizar este cambio necesitamos saber si tenemos el modulo expire de Apache activado.

En caso contrario entramos como sudo y escribimos

sudo a2enmod expire

Reiniciamos apache

/etc/init.d/apache2 reload

Y ya queda activado.

Despues de confirmar que el modulo expire esta activado, editamos nuestro archivo public/.htacces, y agregamos las lineas correspondientes.

  1.  
  2.  
  3. #empezamos a definir los tiempos de expiracion de cada contenido
  4. ExpiresActive On
  5. ExpiresDefault A0
  6. ExpiresByType image/gif A25920000
  7. ExpiresByType image/png A25920000
  8. ExpiresByType image/jpg A25920000
  9. ExpiresByType image/jpeg A25920000
  10. ExpiresByType text/css A25920000
  11. ExpiresByType text/javascript A259200000
  12.  
  13. #estas son nuestras directivas por default
  14. RewriteEngine On
  15. RewriteCond %{REQUEST_FILENAME} -s [OR]
  16. RewriteCond %{REQUEST_FILENAME} -l [OR]
  17. RewriteCond %{REQUEST_FILENAME} -d
  18. RewriteRule ^.*$ – [NC,L]
  19. RewriteRule ^.*$ index.php [NC,L]
  20.  
  21.