Svuoti la cache di PrestaShop dal back office, come ti hanno sempre consigliato, e il negozio risponde con un errore 500. Ricarichi, niente. È un’esperienza che spaventa, ma la causa è quasi sempre una sola e la soluzione è semplice. Vediamo cosa succede, perché e come evitarlo.

Cosa succede quando svuoti la cache

Le versioni moderne di PrestaShop (dalla 1.7 in poi) sono costruite in parte su Symfony, un framework PHP. Per funzionare velocemente, PrestaShop prepara in anticipo una serie di file interni: la descrizione di tutti i servizi del negozio, le rotte del back office, le traduzioni, i template compilati. Questi file stanno nella cartella della cache (nelle versioni recenti, sotto var/cache).

Quando svuoti la cache, tutti questi file vengono cancellati e PrestaShop deve ricostruirli alla prima richiesta successiva. La ricostruzione è il momento più pesante nella vita del negozio: per qualche istante PHP deve tenere in memoria una grande quantità di informazioni.

Perché l’errore 500

Ogni script PHP ha un limite massimo di memoria che può usare, il memory_limit. Se la ricostruzione della cache ha bisogno di più memoria di quella concessa, PHP si ferma a metà e il visitatore vede un errore 500.

È esattamente quello che abbiamo visto in un caso reale: un negozio appena aperto, con una versione recente di PrestaShop, andava in errore ogni volta che il titolare svuotava la cache. Il titolare era convinto che la colpa fosse di OPcache; il registro degli errori diceva invece chiaramente che la memoria concessa a PHP era esaurita proprio mentre PrestaShop ricostruiva i suoi file interni. Alzato il limite, il problema è sparito.

C’è un dettaglio che confonde: nel registro di PrestaShop, in questi casi, possono comparire errori su file che «non si riescono ad aprire». Sembrano problemi di OPcache o di permessi, ma sono la conseguenza di una ricostruzione rimasta a metà.

Come riconoscerlo

  • l’errore compare subito dopo uno svuotamento della cache, un aggiornamento o l’installazione di un modulo (che spesso svuota la cache da sé);
  • nel registro degli errori del sito trovi un messaggio simile a Allowed memory size of ... bytes exhausted;
  • il negozio a volte torna da solo dopo qualche tentativo, a volte no.

I registri degli errori del dominio sono consultabili dal pannello DirectAdmin; se non li trovi o non sai come leggerli, apri un ticket e li guardiamo noi.

La soluzione: memoria adeguata per PrestaShop

Un PrestaShop moderno ha bisogno di più memoria per singola richiesta di un sito semplice. La documentazione ufficiale indica i requisiti di memoria per ciascuna versione: verifica quelli della tua.

Come alzare il limite

Sui piani PrestaShop il sito gira su Apache con Nginx, e PHP lavora come servizio separato. Questo ha una conseguenza pratica importante:

  • le righe php_value nel file .htaccess non funzionano: vengono ignorate o possono addirittura causare un errore. Molte guide in rete le consigliano, ma sono pensate per altre configurazioni;
  • il limite si imposta dalle impostazioni PHP del pannello, oppure chiedendolo a noi con un ticket: ti indichiamo il valore adatto al tuo negozio e al tuo piano.

Attenzione a non esagerare nel senso opposto: un limite enorme per ogni richiesta non rende il negozio più veloce e, se poche richieste pesanti lo usano tutto insieme, possono consumare le risorse dell’intero piano. Il valore giusto è quello che basta a PrestaShop con un margine ragionevole.

Se il negozio è già in errore

  1. Non svuotare di nuovo la cache sperando che si sistemi: ogni tentativo riparte da zero e si ferma allo stesso punto.
  2. Apri un ticket dall’area clienti indicando l’orario dell’errore: verifichiamo il registro e il limite di memoria.
  3. Una volta alzato il limite, ricarica il negozio: la prima pagina sarà un po’ più lenta del solito perché PrestaShop ricostruisce la cache, poi tutto torna normale.

Se sei abituato a lavorare via FTP, potresti essere tentato di cancellare a mano il contenuto della cartella della cache: in genere non è pericoloso, ma non risolve un problema di memoria. Non cancellare mai la cartella stessa né file fuori dalla cache.

Svuotare la cache: quando serve davvero

Svuotare la cache «per sicurezza» a ogni piccola modifica non serve e rallenta il negozio, perché ogni volta tutto va ricostruito. Ha senso dopo:

  • l’installazione, l’aggiornamento o la disinstallazione di un modulo;
  • modifiche ai file del tema o alle traduzioni;
  • un aggiornamento di PrestaShop;
  • un cambio di versione di PHP.

Per le modifiche a prodotti, prezzi e quantità non serve: se usi iWebLab Cache, le pagine interessate si rinnovano da sole.

OPcache non c’entra (quasi mai)

OPcache conserva il codice PHP già interpretato ed è configurato da noi per PrestaShop. Un problema di OPcache dà sintomi diversi, ad esempio modifiche ai file che non si vedono subito. Se pensi che sia OPcache, scrivici: lo verifichiamo, ma nella nostra esperienza «svuoto la cache e va in 500» è quasi sempre un problema di memoria.

In breve

  • dopo lo svuotamento PrestaShop ricostruisce i suoi file interni, ed è il momento che chiede più memoria;
  • errore 500 subito dopo = controlla il memory_limit nel registro degli errori;
  • niente php_value nel .htaccess: il limite si cambia dal pannello o con un ticket;
  • svuota la cache quando serve, non per abitudine.

Altri articoli su E-commerce

Parliamone

Un hosting che ti spiega le cose, e poi le fa

Questi articoli nascono dalle domande dei nostri clienti. Se vuoi un hosting dove dietro ogni risposta c’è un tecnico vero, parliamone.

  • 4,9 su 5 su Trustpilot264 recensioni, il 96% a cinque stelle
  • Risponde un tecnicoIn italiano, da chi gestisce i server
  • Il trasloco lo facciamo noiSito, database e posta, controllati prima di spostare i DNS