Cache de Sentencias Sql, Incrementar Desempeño de Magento

A veces tenemos objetos complejos, heredando toda la lógica y pensamiento de nuestros módulos. Y resultan sumamente útiles cuando los invocamos detro de los métodos de nuestros modelos o en la lógica estructurada de negocios en los controladores.

“Simplicidad “es la palabra, en el planeta de la carga pesada, en un universo orientado al desempeño. Debido a esto es que algunas veces en vez de cargar objetos complejos es mejor utilizar métodos simples en los modelos, dentro de estos podemos utilizar sentencias sql simples u optimizadas y según sea el caso podríamos cacharlas para reducir la carga de la base de datos y aumentar el desempeño.

Los objetos “block” de Magento ya heredan métodos para ser cachados.En todo caso podemos crear llaves de cache en donde lo consideremos útil, de este modo podríamos tomar ventaja del motor de cache que tengamos configurado en nuestro backend ya sea basado en archivos o memcached.

class Company_Module_Model_Model extends Mage_Core_Model_Abstract{

public function optimizedCachedExampleMethod($param){
$cacheKey = “key_”.$param;
$cacheTags = array($cacheKey);
$result = Mage::app()->loadCache($cacheKey);
if(empty($result)){
$sql = “SELECT optimized sql …”;
$result = Mage::getSingleton(‘core/resource’)->getConnection(‘core_read’)->fetchAll($sql);

Mage::app()->saveCache(serialize($result), $cacheKey,$cacheTags,null);
return $result;
}else{
return unserialize($result);
}
}
}

Aqui esta la version original en ingles http://rgarro.blogspot.com/2010/08/cache-query-result-boost-magento.html

La importancia del directorio de administración

Una de las ventajas de Magento es que podemos modificar la ruta de nuestro panel de administración. Este característica ya está presente en los últimos sistemas de tiendas online, pero en algunos casos daba bastantes problemas con ciertos módulos que instalabamos aparte. Sin embargo, la versatibilidad de Magento no ofrece ningún tipo de problema con los módulos añadidos o con las diferentes características que funcionan bajo Magento.

¿Por qué comento esto?

Hoy nos hemos levantado con un aviso en nuestro panel de control, en el blog oficial de Magento, en LinkedIn, en foros… de un agujero de seguridad relativo al panel de control del tipo CSRF.

mensaje-alerta-admin

No vamos a entrar en detalles de este ataque, podemos leer más información aquí, pero es un ataque que se puede evitar fácilmente ocultando la dirección de nuestro directorio de administración, tal y como comentan en el blog oficial.

Es recomendable que no dejemos el directorio que viene por defecto como acceso para el panel de control, ‘admin‘, sino que pongamos uno modificado, que sólo nosotros conozcamos: ‘zonaadmin‘, ‘privadowww‘, ‘paneldecontrol‘… Con este sencillo paso, además de evitar este tipo de ataques, nos evitamos que otros usuarios accedan a la página de acceso e intentan acceder al sistema probando diferentes claves.

Modificar la ruta del directorio del panel de control de Magento

Abrimos el fichero:

app/etc/local.xml

y actualizamos el valor que encontramos bajo la ruta:

admin->routers->adminhtml->args->frontName

quedando la siguiente estructura:

configxml

Mostrar atributos en el listado de productos

Por defecto Magento no carga todos los atributos de un producto cuando estamos mostrando el listado de productos de una categoría. Esto se hace para evitar tener que cargar una cantidad exagerada de atributos cuando tan sólo es necesario lo básico: nombre, imagen, precio… el resto de atributos se mostrarán en la ficha de cada producto.

Sin embargo es muy sencillo mostrar atributos, que no se cargan por defecto, en el listado de productos de nuestras categorías. Gracias a la potencia y escalabilidad de Magento podemos realizar esto sin tener que tocar el código del núcleo.

Lo primero que tendremos que tener es nuestro atributo creado y correctamente clasificado (y con datos) en la ficha de nuestro producto. Para añadir un atributo lo haremos desde el menú de Catálogo y en Gestionar atributos. Después asignaremos el atributo creado a un grupo de datos (los bloques que aparecen a la izquierda en la edición de una ficha de producto) desde Gestionar bloques de atributos.

Una vez realizado los pasos necesarios en la administración, vamos a editar el fichero XML correspondiente dentro de la carpeta ‘layout’ de nuestra plantilla para Magento.

Sigue leyendo Mostrar atributos en el listado de productos

completar la instalación

Después de instalar magento (cfr nuestros manuales o un howto incluyendo la instalación del servidor wamp en windows xp), hay una serie de pasos que seguir para poder empezar a trabajar.
Vamos a repasar estos pasos.

  • magentoconnect:
    Cuando entramos por primera vez al magentoconnect (System->Magento Connect->Magento Connect Manager) no aparece nada. Para ver la lista de modulos (core+extensiones instaladas) basta pegar en el cuadro de texto “Paste extension key to install” esto:

    magento-core/Mage_All_Latest

    y luego dar al botón install.

  • Instalar el idioma español:
    Nos quedamos en el Magento Connect Manager y vamos a la pestaña Settings. En el desplegable Preferred State seleccionamos Beta y guardamos el cambio con el botón “Save Settings”. Volvemos en la pestaña Extensions y pegamos

    magento-community/Locale_Mage_community_es_ES
  • Crear el tema:
    Para evitar que desaparezcan los cambios de diseño que hacemos a cada actualización de Magento, vamos a trabajar con nuestro propio tema. Dentro de /app/design/frontend/default/ creamos un directorio que llamamos mi_tema, por ejemplo y pegamos el contenido de /app/design/frontend/default/default/ dentro. Hacemos lo mismo en el directorio skin/frontend/default/.
    Ya podemos activar nuestro tema, en Sistema->Configuración->(General)Diseño la pestaña Temas en el campo Por defecto ponemos mi_tema (o como sea que hayamos llamado el directorio).

Y ya estamos listos para empezar a trabajar en nuestra tienda. Os recomiendo leer los tutoriales y las preguntas frecuentes del foro para seguir avanzando.

¿Cómo puedo saber si mi servidor es compatible con Magento?

Seguramente mucha gente ya lo sabrá, pero para aquellos que esten un poco perdidos a la hora de saber si su servidor o proveedor de alojamiento cumple con los requisitos que impone Magento para su instalación, aqui os dejo unos secillos pasos para poder saberlo:

a) Descarga este archivo a tu ordenador y descomprimelo.

b) Subir el archivo php Magento que has descomprimido a tu directorio raiz del servidor (Ejemplo: www.tudominio.com/magento-chek.php).

c) Introducir en el navegador de internet la dirección completa donde has alojado el archivo. En el caso que nos ocupa: www.tudominio.com/magento-check.php.

Si hemos seguido correctamente los pasos obtendremos el siguiente resultado:

Congratulations! Your server meets the requirements for Magento.

You have PHP 5.2.0 (or greater)
Safe Mode is off
You have MySQL 4.1.20 (or greater)
You have the curl extension
You have the dom extension
You have the gd extension
You have the hash extension
You have the iconv extension
You have the mcrypt extension
You have the pcre extension
You have the pdo extension
You have the pdo_mysql extension
You have the simplexml extension

En este resultado nos indica que efectivamente el servidor cumple a la perfección con los requisitos de Magento. En caso de que haya alguna extensión que nos de erronea tendremos que hablar con nuestro proveedor de alojamiento para que nos la habilite.

Espero os ayude

Un saludo