Jump to content

Speed up your PrestaShop - Tips and recommendations


Recommended Posts

A fast loading website is the goal of every shop owner, as a slow website can lead to a long list of issues, from disappointed customers who lose patience and abandon their cart, to an overloaded server that stops working, and search engines penalizing your site's ranking due to speed.

After helping countless PrestaShop sites optimize and increase their speed, including adding timers around different parts of PrestaShop and analyzing what is taking long and why, we have decided to share our obvious and no-so-obvious findings, and help the entire PrestaShop community.

Caching & CCC

PrestaShop has several layers of caching, we'll start with the ones on the Performance page

Smarty (Template compilation) Should be set to "Recompile templates if the files have been updated" - This will make sure PrestaShop uses smarty cache at all times, and only recompiles a file if it was changed.

Cache (Caching type) Should be turned on, with File System selected.

CCC (Available on certain PS version) We recommend turning OFF Minify HTML and Compress inline JavaScript in HTML - We noticed PrestaShop was spending a long time (sometimes several seconds) when these features are enabled, which means that any benefit from the compression is more than negated by the slow speed.

Ciphering (Available on certain PS versions) We recommend selecting the "Use the custom BlowFish class" - We found that when the server load was high, saving a cookie on the client side with Mcrypt was taking up to several seconds (due to an issue with randomly encrypting the cookie). Switching to blowfish kept the cookie saving time to a few miliseconds.

Caching (Bottom of the performance page) We recommend turning OFF, as we have seen this feature cause more trouble than offer benefit, with module settings not being updated, and other unexpected behavior.

* Install a server side caching system, such as OPCache, you would have to check with your hosting provider to see if it's available, and if they can activate it on your website (You may need to reset the cache after making changes to PHP files, in order for the changes to apply right away.

Email

SMTP We highly recommend NOT using a 3rd party SMTP server, we have seen speeds of up to 3-5 seconds sending a single email using a 3rd party SMTP server.

PHP mail() We recommend using this option, however, even with this option selected, we noticed that some versions of PrestaShop had a slow send time (1-2 seconds) due to the Swift version that was installed. If you are using PS 1.5, or even an early version of PS 1.6, you may want to make sure sending emails is not taking a long time (Normal time should be around 0.2 seconds.)

Modules / Customizations

Shipping / Tax If you are using any 3rd party modules or services, such as UPS, FedEx, TaxCloud or Avalara, PrestaShop will make API calls whenever a product is added to the cart, and even if they have proper caching in place to avoid making the same API request more than one time, it will still require an API for each new product added, and can take several seconds to do so. Whenever possible, use fixed shipping rates, and if you must use those 3rd party services, we recommend making changes to only calculate taxes and shipping when the customer gets to the checkout page.

Carousel If you are using a product carousel module or customization, or similar upsell / product recommendation that is reading product information to display it, make sure they are using a caching system to avoid doing identical calls to the database that return the same data, and take a long time to run. If you are not sure about their caching, ask the developer, or try to disable the module and compare page speed.

Database

Analyze & Repair Databases can get corrupted at times, which will result in queries taking longer. It is recommended to periodically check and repair your database tables, this can be easily done from PHPMyAdmin, by selecting all the tables, and choosing the "Check" option at the bottom. If you see any tables with errors, select them and choose the "Repair" option.

Connections PrestaShop keeps visitor information for statistic purposes in 3 tables, and actively queries ps_connections before writing to it, which can take a long time if the tables gets really big, that in turn can lock up the database, and delay the time it takes for the page to load for all the visitors. We recommend backing up and clearing this table once a year, or sooner for sites with a large number of visitors (Try keeping the table size to less than 500,000 records).

ReCaptcha

Google ReCaptcha We noticed a substantial slowdown in the time the front end page finishes loading (sometimes taking 5-7 seconds). We recommend restricting the ReCaptcha code to a specific page (like contact form) rather than enable it for all page loads (in case there's a newsletter signup form in the footer).

Miscellaneous

Debug Profiling There could be other things that cause your website to be slow, and the best way to get more information and identify the culprit is by enabling the Debug_Profiling variable in /config/defines.inc.php (Change from "False" to "True". This will generate a report in the front end with exact timing of every part in PrestaShop, including every Database query. You will have to inspect the report and identify any parts that are slow.

Keep in mind that this will show up for all visitors, so make sure you only change it for your IP address, unless you are working on a development environment.

For the latest updates to the list, see https://www.presto-changeo.com/content/23-tips-on-how-to-speed-up-your-prestashop-website

  • Like 2

Share this post


Link to post
Share on other sites

Thanks for sharing @tomerg3

I wanted to elaborate on a couple of your points and add some of my own experience as agency owner.

CCC out of box 1.7 supported one CCC of .css and .js files, nobody had that and it was incredible new feature however  theme/module developers managed to break so we see 1.7 shops whose CCC no longer have one file for all pages but one file per page type cat/prod/checkout etc, just like 1,.6.  So we developed module that fixes the .css part (sorry we tried on .js but requires dev to build module correctly).

here is our new module that will serve one CCC of .css across all pages.  it makes a big difference..for .js when CCC not same across 'all' pages we recommend disabling CCC for .js and let mod_expires cache like .js across pages. 

==== great news on hosting front

In 2020 we started migrating clients from a  'fully managed' Liquid Web type hosting  to Fasthosts.co.uk (they have multiple centers so don't think just .uk.)  We typically use central US as most of our clients are US based.

Why?  The provide the lowest cost dedicated severs with nVME SSD's.  Before Fasthosts one had to add $200.00USD monthly on top of dedicated server costs.  OVH also has entry level nVME dedicated as well.  We hope that becomes standard for what we are calling the legacy hosting providers.  My desktop Dell 7440 has it loool.

So while we can tune an configure the PS application, it's always waiting for data to be read, with nVME you get a lot of bang for buck and well worth the investment.  

===

To add to your useful configuration information I'll also mention I often see small shops that are having performance issues and it's often the silly things like

  • mod_deflate not being enabled, you can check if your shop  is using gzip here
  • check that your shop has proper mod_expires, you can use tools like gtmetrix to check that.
  • have a tech review your mysql configuration, most useful performance values are not setup or setup for wordpress.

Also hat's off to prestochangeo,  as a US agency we need US solutions and prestochangeo is our favorite place to find them.

Performance is the best SEO!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More