Attivare semaforo disponibilità su Prestashop: Guida

Spesso i nostri clienti ci chiedono come sostituire l’indicatore numerico della quantità dei prodotti in Prestashop con un semaforo. In questa guida spiegheremo in modo molto semplice come è possibile modificare il template di prestashop per implementare questa funzione. Continua a leggere

Un Blog con Prestashop 1.6? Con Smartblog è possibile

Il Blog: uno strumento fondamentale in ogni sito web

Nei nostri e-commerce, spesso abbiamo la necessità di dover gestire un blog dove pubblicare dei contenuti interessanti da correlare ai prodotti trattati, in modo da potenziarne l’importanza e la soddisfazione dell’utente.

Tra i CMS conosciamo ormai WordPress, Joomla che con grande facilità ci permettono di creare un blog, scegliendo tra tante risorse dalle community gratuite.


 

E se volessimo utilizzare Prestashop anche per la gestione del BLOG?

Anche la community di prestashop è in continuo “work in progress”, ogni settimana vengono sviluppati nuovi moduli per le più svariate funzioni.

Infatti da qualche anno è stato sviluppato un’ottimo modulo completamente open source per la gestione completa di un blog. Il suo nome è SmartBlog prodotto da Smartdatasoft che va ad ampliare tutte le potenti funzioni offerte da Prestashop per l’e-commerce.

Smartblog è composto da 10 moduli per gestire le diverse funzioni:

Blocco di ricerca nel blog – grazie a questo modulo avremo a disposizione di un motore di ricerca nel nostro blog

Blocco degli articoli popolari – Un modulo che ci mostrerà gli articoli più letti

Blocco degli articoli recenti – Mostrerà tutti gli articoli inseriti di recente

Blocco categorie – Mostrerà le categorie che abbiamo definito in backoffice

Blocco Tags – Un modulo che ci mostrerà le tags dei nostri articoli

Blocco RSS Feed – Un modulo che ci permette di estrapolare il feed RSS dei nostri articoli

Blocco articoli correlati – Ci mostrerà gli articoli correlati ad altri

Blocco ultimi commenti – questo modulo ci permetterà di commentare un articolo e visualizzare i commenti degli utenti

Blocco Archivio – questo modulo creerà un archivio articoli diviso per mese

Blocco Addthis – questo modulo aggiungerà i pulsanti social Addthis nei nostri articoli

 

Questo modulo è completamente SEO Friendly, infatti per ogni articolo, categoria e pagina principale del blog è possibile gestire in totale comodità, direttamente dal backoffice tutta la parte SEO, come Meta Title, Meta Description, Link Frienldy e alberatura delle categorie.

Inoltre nel modulo dedicato ai commenti è incluso di default il sistema anti Spam captcha

 

Potete vederlo in azione nel sito del nostro cliente MamasMusicStore

Trovate tutto il materiale per l’installazione nel forum prestashop a questo link.

Inoltre in questo video trovate la guida di installazione su Prestashop 1.6.

Prestashop 1.6.1.0: ecco le principali novità

Quali sono le principali novità?

La versione di Prestashop 1.6.1.0 porta in sé tanti cambiamenti, primo tra tutti l’interfacciamento al database, ma non solo.

Cerchiamo di capire meglio grazie alla nota ufficiale di rilascio.


 

I – Quali sono le novità di Prestashop 1.6.1.0?

Le caratteristiche già presenti che sono state migliorate sono le seguenti:

Design, Fatturazione, Ricerca e Prestazioni

Il team ha fatto un gran lavoro per migliorare le prestazioni, raggiungendo in alcuni casi anche prestazioni di 10 volte più efficienti.

II – Quali funzioni di Prestashop sono state ottimizzate?

1) Prestazioni migliori in Single-threaded

I colli di bottiglia del Php sono stati intercettati grazie ad alcuni tool (che vi citeremo successivamente) , ed andavano ad incidere sul caricamento delle pagine, la gestione del Seo e sulla soddisfazione generale del cliente. Sotto l’aspetto del php, con la cache disattivata, dopo aver lanciato una ricerca su un negozio vero e proprio, siamo riusciti a raccogliere tutti i dati di cui avevamo bisogno in pochi minuti:

p1

anche a livello sql

p2

Grazie a questi risultati sono state riscritte un gran numero di query sql, per migliorare la loro rapidità di esecuzione, e quindi è stato ottimizzato il core php rimuovendo i colli di bottiglia evidenziati in precedenza.

2) In multi-threaded prestazioni ottimizzate

Insieme al grande lavoro sull’ottimizzazione delle prestazioni delle query, si è lavorato anche sulle query sql per essere certi di fare un uso più efficiente della query cache di MYSQL, e sono stati finalmente sistemati alcuni problemi nella cache di prestashop. Prima di questo aggiornamento l’utilizzo della cache in Prestashop ne peggiorava le prestazione. Questo adesso non succede più.

3) Ottimizzazioni specifiche per multi-front / ambiente cloud

Attualmente Prestashop utilizza Smarty per gestire la cache dei Template. Se si utilizzano diversi front server, Smarty forza la centralizzazione della sua cache in un filesystem condiviso (NFS). E’ stato aggiunto per questa evenienza un modulo smarty personalizzato, il quale funziona perfettamente con una cache smarty locale (senza aver bisogno di NFS). Inoltre la nostra implementazione riduce i casi in cui la cache da errori: invece di svuolare tutti i file in una volta, ogni template svuota in maniera asincrona. Questo rende più veloci tutte le operazioni di back office.

4) Migliori prestazioni di back office

Sono state risolte le problematiche più fastidiose nel backoffice:

* Le importazioni

E’ stato fatto un grande lavoro per ottimizzare l’importazione dei prodotti. Provate subito questo miglioramento importando molti prodotti.

* Indicizzazione ricerca

Abbiamo migliorato sia l’utilizzo della memoria sia la velocità dell’indicizzazione della ricerca.

*Risolti i problemi con le regole del carrello o delle categorie.

Le regole del carrello e le categoria sono adesso caricate in modo asincrono.

 

III – Passiamo ai Benchmark

1) La configurazione utilizzata

Per fare questo benchmark abbiamo scelto di usare a server mini HG dedicato su OVH, il quale ha offerto ottime prestazioni a un prezzo relativamente accessibile:

• CPU : Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz (8 cores, 16 threads)
• Memory : 64GB
• Disk : 2x SSD 600GB
• RAID Controller : LSI MegaRAID SAS 9271-4i CacheVault 1G FastPath

Abbiamo usato una versione di Debian Jessie, con il packages standard, e una versione adeguatamente ottimizzata:

Apache 2.4.10, conmpm_event con la seguente configurazione:

ServerLimit             16
MaxClients              400
StartServers            3
ThreadLimit             64
ThreadsPerChild         25
MaxRequestWorkers       400
MaxConnectionsPerChild  0
PHP 5.6.7 & APCu + Zend OpCache v7.0.4-dev in PHP-FPM mode con la seguente configurazione:
pm =                    dynamic
pm.max_children       = 400
pm.start_servers      = 75
pm.min_spare_servers  = 50
pm.max_spare_servers  = 100
MariaDB 10.0.0.19, con la seguente configurazione :
performance_schema                    = OFF
innodb_lock_wait_timeout              = 120
default_storage_engine                = InnoDB
max_allowed_packet                    = 16M
key_buffer_size                       = 128M
table_cache                           = 4096
read_buffer_size                      = 2M
read_rnd_buffer_size                  = 1M
thread_cache_size                     = 80
join_buffer_size                      = 2M
sort_buffer_size                      = 2M
max_connections                       = 400
tmp_table_size                        = 32M
max_heap_table_size                   = 32M
table_definition_cache                = 8192
query_cache_size                      = 32M
innodb_buffer_pool_size               = 3G
innodb_log_file_size                  = 128M
innodb_log_files_in_group             = 2
innodb_log_buffer_size                = 8M
innodb_flush_log_at_trx_commit        = 2
innodb_thread_concurrency             = 32
innodb_read_io_threads                = 8
innodb_write_io_threads               = 8
innodb_flush_method                   = O_DIRECT
innodb_file_per_table                 = 1
innodb_io_capacity                    = 2000
innodb_file_format                    = Barracuda
innodb_buffer_pool_dump_at_shutdown   = ON
innodb_buffer_pool_load_at_startup    = ON
innodb_checksum_algorithm             = crc32
innodb_log_compressed_pages           = 0
# SSD
innodb_flush_neighbors                = 0
# Mutex contention
innodb_adaptive_hash_index_partitions = 16
innodb_buffer_pool_instances          = 16

Abbiamo configurato un negozio vero e proprio con:
• 1827 categorie
• 10843 regole carrello
• 1904 prodotti
• 2M attributi di prodotto
• 16.5M combinazioni di attributi

Quando il sistema Memcached è in uso, configurato sul server locale utilizza 128mb di ram.
I risultati dei benchmark dei single-threaded e dei multi-threaded sono in media di 5“ siege – i -b -t 20S” (20s benchmark), e questo ha un impatto diretto sulle pagine sia in termini di navigazione e sia in termini di SEO.

• Pagina di categoria
• Pagina prodotto
• home page
• Pagina carello
• Pagina miglior prezzo
• Pagina di ricerca tag
• Pagina produttori
• Pagina nuovi prodotti
• Pagina gestione prezzi
• Pagina fornitori
• Pagina di ricerca

 

2) I Risultati 

a) Prestazioni Front-Office

Prima, le prestazioni in single-threaded :

Sembra molto promettente: miglioramenti di 10 volte quando il sistema memcached è attivo.

Diamo un’occhiata a questi altri grafici di confronto:

p3

p4

Anche senza alcuna cache, la versione 1.6.1.0 va molto meglio della 1.6.0.14, è più veloce del 65% con 15 connessioni simultanee.

aa

Se abilitiamo la cache delle query, la 1.6.1.0 è ancora più rapida del 50% con 10 connessioni simultanee.

bb

Finalmente è stato definitivamente sistemato il problema della gestione della cache che affliggeva le precedenti versioni di Prestashop. Risultati 10 volte migliori con 10 connessioni simultanee.

Qui ci sono le prestazioni a confronto, a 10 connessioni simultanee:
p5

Se abilitiamo la cache delle query, la 1.6.1.0 è ancora più rapida del 50% con 10 connessioni simultanee.

Si è raggiunto un miglioramento di 10 volte superiore con 10 connessioni simultanee.

Qui un altro grafico con le prestazioni a confronto, a 10 connessioni simultanee:

p6

b) Prestazioni di backoffice

Questi invece i risultati del backoffice.

Reindicizzazione della ricerca completa :
p7

p8

Dal punto di vista delle prestazioni, quando la memcached è abilitata, la 1.6.0.14 va in timeout dopo 900 secondi, e consuma più di 128mb di memoria. Quando memcached è disabilitato, la 1.6.1.0 è 2,3x più rapida della 1.6.0.14, consuma 1,7x di memoria in meno, e raggiunge l’obiettivo anche con i multi attributi. Non male!

Velocità di importazione :

p9

Anche se questi risultati non sono rilevati dalla stessa macchina, ho deciso di includerli lo stesso per mostrarvi la velocità di importazione che potete aspettarvi con la 1.6.1.0 (qui almeno 5 volte più veloce).

Adesso andiamo a misurare il tempo di caricamento di qualche pagina di backoffice.

Ecco il tempo di caricamento delle pagine

Modifica prodotto :

p10

Regole del carrello :

p11

IV) Conclusioni

1.6.1.0 è una major release (le differenze sono sostanziali con la versione precedente) in termini di prestazioni, con miglioramenti in termini di rapidità fino a 10 volte in alcuni casi.
Per ottenere questi risultati abbiamo lavorato a stretto contatto con il team prestashop, modificando circa 6600 righe di codice in pochi mesi. Ci auguriamo che sarete soddisfatti con questa versione, e non esitate a segnalare eventuali problemi di prestazioni su forge.prestashop.com.

Da notare che in 1.6.0.14 è consigliato di non abilitare la cache di prestashop, in 1.6.1.0 si consiglia invece di attivarla, con un server memcached locale. (APC dovrebbe comunque funzionare bene).

Articolo originale in lingua inglese scritto da Jocelyn Fournier fondatore di Softizy  un’azienda specializzata in ottimizzazione Php e MySQL application, dal codice, al database.