Cuando nuestra tienda comienza a crecer, ya sea en número de productos (Miles) o en número de usuarios simultáneos, uno de los mayores problemas, es la velocidad de carga en nuestra tienda, ya que las filas afectadas en las querys se han multiplicado, y/o los usuarios simultáneos haciendo diferentes consultas disminuyen la capacidad de respuesta del server.
- Activar la compresión Gzip en el administrador -> configuración (Para aquellos que no la puedan activar vía administrador o usen otro tipo de comercios electrónicos bastaría con poner esta instrucción en sus cabeceras: justo debajo del <?php ob_start(«ob_gzhandler»);La que ya posee el oscommerce es la siguiente:
[sourcecode=php]
// if gzip_compression is enabled, start to buffer the output
if ((GZIP_COMPRESSION == ‘true’) && ($ext_zlib_loaded = extension_loaded(‘zlib’)) &&
(PHP_VERSION >= ‘4’)) {
if (($ini_zlib_output_compression = (int)ini_get(‘zlib.output_compression’)) < 1) {
if (PHP_VERSION >= ‘4.0.4’) {
ob_start(‘ob_gzhandler’);
} else {
include (DIR_WS_FUNCTIONS . ‘gzip_compression.php’);
ob_start();
ob_implicit_flush();
}
} else {
ini_set(‘zlib.output_compression_level’, GZIP_LEVEL);
}
}
[/sourcecode]
- Guardar las sesiones a disco, en vez de al mysql (aunque éste último sea más cómodo y dé menos problemas, es más lento si tenemos muchos usuarios conectados o muchas querys), para hacerlo en nuestros fichero de configuración deberemos dejar la linea store_sessions en blanco, y luego configurar en admin la ruta correcta y con permisos 777, que suele ser «tmp» sin barra, así la podremos alojar en el mismo directorio que la tienda.
- Optimizar script para el box de categorias (el que más querys realiza) utilizando el cache de configuración (Solo usar si no se ha cambiado su diseño interno, sino no funcionará) y si es posible no mostrar el contador de productos, ya que es recursivo el script, con ésta contribución bastaría.
- Comprimir y redimensionar siempre la imágenes de producto, con el módulo de Smooth pictures
- Actualizar a MYSQL 5.x y PHP 5.x a sus últimas versiones.
- Si es posible, intentar separar la BBDD MySQL en otra máquina (Solo si sale rentable) y configurarlo en el configure.php el nuevo DB_SERVER
- Si es posible, intentar separar las imágenes en otra máquina y configurarlo en el .htaccess
- Instalar algún debug para ver lo que tardan las querys MySQL en realidad, y ver si se ha mejorado o no, con los cambios efectuados. Algunos módulos recomendados son:
– http://addons.oscommerce.com/info/2575
– http://addons.oscommerce.com/info/4689
Ya me comentareis si habéis notado cambio en unos días …
Muy interesante Jordi, en cuanto pueda lo probaré.
Un post útil. Una pregunta:
¿A partir de cúantos usuarios simultáneos y/o de cuántas visitas diarias piensas que se necesita optimizar oscommerce?.
Saludos neng.
En algún sitio que mantengo, con 100 usuarios online es una locura. Al final modelo, peso y otros querys fuera para aligerar un poco, lo que si he detectado es que la lentitud está inducida sólo en los product_listing. Estoy pensando hasta montar mega arrays en php para descongestionar la bd.
¿Sabéis de alguna contrib caché que genere los htmls?
Yo tengo un oscommerce con 300 usuarios online de media y me va perfecto sin retoques, y con php 4x y mysql 4x. Decir también que es un dedicado, así que imagino que puede aguantar mucho mucho más. Ya lo iré comentando cuando suban los online.
Saludos.
Buscad, una contribución que se llama Page Caché, reduce bastante la carga para los visitantes mirones. Los clientes si son menos tendrán algo de problemas, pero almenos algo nos quitamos.