Ottimizzare e Velocizzare Magento, per gestire al meglio le risorse a disposizione.

ottimizzare_velocizzare_magento

Magento è diventato uno tra gli eCommerce più popolari. Offre grandi possibilità di personalizzazione e grande versatilità d’uso grazie anche alla vasta gamma di plugin che consentono agli utenti di gestire al meglio il proprio lavoro.

E’ opportuno ricordare che Magento utilizza in maniera intensiva le risorse del webserver, CPU, memoria e query sul MySql. Molto spesso soluzioni installate su webserver condivisi come VPS potrebbero non soddisfare a pieno le necessità di eCommerce di grandi dimensioni. Risorse come l’utilizzo della CPU vengono limitate sui VPS ad esempio al 25-30% e in alcuni casi potrebbe essere necessario passare ad una configurazione di server dedicato.


 

Vediamo come Ottimizzare e Velocizzare Magento

Modifichiamo l’ .htaccess

Abilitiamo l’Output Compression

Apriamo il nostro file  .htaccess

cerchiamo la sezione che inizia con <IfModule mod_deflate.c> e termina con </IfModule>

Questa sezione di codice può essere utilizzata per abilitare su Apache il modulo mod_deflate, che provvede ad attivare la compressione  for text, css, and javascript.

Sarà sufficiente rimuovere il # :

 

<IfModule mod_deflate.c>

############################################
## enable apache served files compression
## http://developer.yahoo.com/performance/rules.html#gzip

     # Insert filter on all content
     SetOutputFilter DEFLATE
     # Insert filter on selected content types only
     AddOutputFilterByType DEFLATE text/html text/plain text/xml
text/css text/javascript

     # Netscape 4.x has some problems...
     BrowserMatch ^Mozilla/4 gzip-only-text/html

     # Netscape 4.06-4.08 have some more problems
     BrowserMatch ^Mozilla/4\.0[678] no-gzip

     # MSIE masquerades as Netscape, but it is fine
     BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

     # Don't compress images
     SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary

     # Make sure proxies don't deliver the wrong content
     Header append Vary User-Agent env=!dont-vary

</IfModule>

 

Nota: l’attivazione del modulo mod_deflate potrebbe creare problemi all’aspetto grafico del tema, sarebbe opportuno verificare passo passo ogni modifica, in modo da assicurarsi che l’attivazione di ogni singola funzione non vada a creare problemi.

 

Abilitiamo la Scadenza degli Headers

I visitatori che accedono per la prima volta sul sito web e  quindi sull’eCommerce Magento devono fare diverse richieste HTTP. Utilizzando gli  “Expires Header” quindi abilitando le scadenze di alcune parti della pagina (o componenti) sarà possibile memorizzare nella cache dati.  “Expires Header” indicano al browser se devono richiedere uno specifico file dal server o se recuperarne uno già memorizzato nella cache del browser.

Apriamo il nostro file  .htaccess

cerchiamo la sezione che inizia con  <IfModulemod_expires.c> e termina con </IfModule>

 

Sarà sufficiente rimuovere il # :

<IfModule mod_expires.c>

############################################
## Add default Expires header
## http://developer.yahoo.com/performance/rules.html#expires

     ExpiresActive On
     ExpiresDefault "access plus 1 year"

</IfModule>

 

Ottimizzare e velocizzare Magento: Amministrazione

Entriamo nel back-end

Il Merge CSS and JS

Alcune operazioni per ridurre il numero di richieste HTTP:

  1. Login nell’amministrazione andiamo in  – System > Configuration > Developer
  2. Nella sezione “JavaScript Settings”, impostiamo “Merge JavaScript Files” su yes.
  3. Nella sezione”CSS Settings”, impostiamo  “Merge CSS Files” su yes.
  4. Alla fine sarà necessario cancellare la cache di Magento.

Abilitare Flat Catalog

Abilitando le opzioni Flat Catalog option per Categorie e Prodotti permetterà di fondere i dati in un’unica tabella, quindi migliorare le performance.

  1. Login nell’amministrazione andiamo in – System > Configuration > Catalog
  2. Nella sezione “Frontend”, impostiamo  “Use Flat Catalog Category” su yes.
  3. Nella sezione “Frontend”, impostiamo  “Use Flat Catalog Product” su yes.
  4. Alla fine sarà necessario cancellare la cache di Magento.

Nota: è opportuno verificare passo passo ogni modifica, in modo da assicurarsi che l’attivazione di ogni singola funzione non vada a creare problemi.


 

Ottimizzare e velocizzare Magento: suggerimenti per la manutenzione del Database

Uno dei principali problemi con gli eCommerce Magentoto è la lentezza nell’esecuzione di alcune operazioni legate alle dimensioni del database. Quando le dimensioni del MySql inizano a diventare notevoli, diventa difficile e lento recuperare i dati.

Alcuni suggerimenti per ottimizzare e velocizzare il database di Magento.

Note: le operazioni sul MySql devono essere effettuate con notevole cautela, creare sempre un backup del MySql prima di procedere.

Database Logs

Ci sono diverse tabelle utilizzate da Magento per il logging. L’utilizzo di queste tabelle è molto importante, consente a Magento e a noi di conoscere quanto accade in tutte le fasi di accesso all’eCommerce, ma al tempo stesso queste tabelle diventano rapidamente di grandi dimensioni ed influiscono sulle prestazioni. Una regolare manutenzione ed ottimizzazione del contenuto di queste tabelle può influire positivamente sull’accesso ai dati.

Queste sono le tabelle che ci interessano relative alla registrazione:

log_customer
log_visitor
log_visitor_info
log_url
log_url_info
log_quote
report_viewed_product_index
report_compared_product_index
report_event
catalog_compare_item

Ottimizziamo i Log Database attraverso Amministrazione di Magento

  1. Magento Amministrazione anidiamo in System > Configuration
  2. Nel menù di sinistra andiamo in Advanced > System
  3. In “Log Cleaning”, cambiamo “Enable Log Cleaning” impostandolo su YES e configuriamo Save Log per 14 giorni.
  4. Salviamo la configurazione “Save Config”

log.php Utility

Magento dispone di una shell utility che può essere utilizzata per  configurare la pulizia del log del database utilizzando Cron o può essere avviata matualmente.

Manualmente

Accedere all’account via SSH e posizionarsi nella cartella di root in cui è installato Magento:

php -f shell/log.php clean

E’ possibile utilizzare il paramentro -days quanti giorni salvare

Cron

  1. Accedere a cron attraverso cPanel
  2. Cliccare su on Cron Jobs

Vediamo un esempio:

php -f/home/yourcpanelusername/public_html/path/to/magento/shell/log.php

 

Ottimizzazione e pulizia del Database via phpMyAdmin

L’utilizzo di phpMyAdmin offre maggiore flessibilità ed efficienza quando si lavora su MySql, ma è opportuno avere una discreta conoscenza degli strumenti utilizzati, in quanto si potrebbe danneggiare il MySql in maniera irreparabile. Fate sempre un backup prima di lavorare direttamente su MySql

  1. Login in cPanel e accediamo cliccando su phpMyAdmin
  2. Selezioniamo il database associato all’installazione di Magento
  3. selezioniamo le tabelle:

log_customer
log_quote
log_summary
log_summary_type
log_url
log_url_info
log_visitor
log_visitor_info
log_visitor_online

  1. Dopo aver selezionato tutte le tabelle o anche una tabella per volta svuotiamo il contentuto
  2. Confermiamo l’operazione, cliccando su Yes.

 

Sarebbe ottimale eseguire questa operazione in maniera regolare nel tempo senza operare manualmente. Cron ci consente impostare questa operazione, organizzandola nel tempo, se opportunamente settato.