Welcome to Centmin Mod Community
Become a Member

Recommendations for PHP based Ecommerce platform

Discussion in 'Ecommerce / Shopping cart usage' started by Atrix, Nov 27, 2019.

  1. Atrix

    Atrix Member

    37
    13
    8
    Oct 7, 2018
    Ratings:
    +38
    Local Time:
    1:27 PM
    1.15.3
    MariaDB 10.1.36
    Requirements
    1. Dev Friendly (So Magento/Magento2 is NO NO NO)
    2. Isn't built to be a place to "buy features" that should be included by default
    3. Limited or NO SaaS models, we want to own it and have full control. Not pay every month for something that should be a one time purchase.
    4. Active and supported module/plugin system
    5. Get free upgrades
    6. Non SaaS integrations with eBay and Amazon

    From my reviews so far this has left me with WooCommerce and CSCart and possibly XCart but it's upgrades are charged.

    I prefer procedural code very much to convoluted design patterns and over-engineered object inheritances like M2 has. I want a simple and easy to edit template system that is straight forward, does not feature layout xml files or complex relationships for layouts represented in some database or stored objects it should be template files in php or smarty and layout should be freely editable.

    Zen commerce/open commerce imo are a disaster house of spaghetti code on the other side, but I haven't checked up on them in a very long time.

    Drupal codebase and Wordpress codebase are things I like, but just wanted to see what is out there and get recommendations.

    I looked up prestashop and it seems it isn't nearly as bad as M2 as far as all the things I don't like about coding trends these days go, but it still subscribes to some of them and as a result isn't as dev friendly as other solutions. Thanks.

     
  2. tininho

    tininho Active Member

    182
    44
    28
    May 22, 2019
    eu
    Ratings:
    +135
    Local Time:
    10:27 PM
    Coming from 9+ years of experience dealing with ecommerce, you can't go wrong with Woocommerce. All of the platforms you mentioned have done something better, but none of them quite reach the same sweet spot, when you consider all features. Everything (so far) can be customized and the pricing is very cost-friendly.

    With a properly configured (with this I mean cache) Centminmod server you probably won't reach any of it's limits (product count etc. etc.).

    I've tried to move on to Magento2, but to achieve same kind of automation the learning curve is too steep atm and extensions are too expensive.

    If I was working on US/CA I would go with Shopify / BigCommerce. For EU Woocommerce is the best, IMO.

    I have been wondering why folks here seem to go with Presta?
     
    Last edited: Nov 29, 2019
  3. asperty

    asperty New Member

    18
    15
    3
    Apr 13, 2019
    Ratings:
    +19
    Local Time:
    10:27 PM
    1.17.1
    10.3
    +1 for woocommerce. I use it a lot. It has nice integrations with most 3rd party software via a plugin, although I haven't yet found a decent integration for syncing stock to bricks and mortar inventory software that works in semi-real time. Invoicing automation via zapier works great and is a massive time saver, and they have a nice free plan.
    Can get pricey when adding extensions though, but personally I would team it up with this: gplvault.com (if you are cool with the whole gpl issue). They recently added an auto plugin updater which saves a load of hassle.
     
  4. tininho

    tininho Active Member

    182
    44
    28
    May 22, 2019
    eu
    Ratings:
    +135
    Local Time:
    10:27 PM
    I use WP All Import for same kind of operations, it's very customizable and their support is great and helpful, but can get busy at times. soflyy/wp-all-import-action-reference
     
  5. asperty

    asperty New Member

    18
    15
    3
    Apr 13, 2019
    Ratings:
    +19
    Local Time:
    10:27 PM
    1.17.1
    10.3
    That's interesting. I've used WP Import for scraping products into woo, but not for much else. How do you sync stock levels with it from your inventory software into woo?
     
  6. tininho

    tininho Active Member

    182
    44
    28
    May 22, 2019
    eu
    Ratings:
    +135
    Local Time:
    10:27 PM
    If you can have the stock file/feed updated often enough (CSV, JSON, XML), you can just map that into Woocommerce product data fields (_stock for example) with WP All Import, and have it run by cron (I use Easycron) as often as you please.

    Now I don't know if this is fast enough for you. I am sure you can work some kind of "push changes from stock file to Woocommerce" trick when you combine all this with Zapier, so when the stock file changes the import job gets triggered and so on. Or something like that, I have not tried that yet.
     
    Last edited: Dec 1, 2019
  7. asperty

    asperty New Member

    18
    15
    3
    Apr 13, 2019
    Ratings:
    +19
    Local Time:
    10:27 PM
    1.17.1
    10.3
    Thanks bro, now I just need to work out how to auto generate an xml or csv from the inventory software :)
     
  8. Atrix

    Atrix Member

    37
    13
    8
    Oct 7, 2018
    Ratings:
    +38
    Local Time:
    1:27 PM
    1.15.3
    MariaDB 10.1.36
    Thanks for the replies, I had my eyes on Woo so seems like that's backed up here.

    Shopify / BigCommerce - I think this is SaaS and definitely don't want to get into that. Thanks tho.
     
  9. KlueMaster

    KlueMaster Member

    63
    11
    8
    Aug 5, 2017
    Ratings:
    +27
    Local Time:
    1:57 AM
    MariaDB 10
    Having worked exclusively with WooCommerce for almost a decade now, I believe I qualify to add a word of caution.

    WooCommerce is good, however the number of WordPress hooks and actions make it slow, and hence caching is very important.

    So far, I've come across only 3 ways that work:
    1. Instead of using default front end, use WP as a headless CMS (via REST API) and have a SPA kind of front end. Although there aren't many such themes available.
    2. If you don't need to show cart at all times, then use a static site generator to create static version of your product pages. Cart etc WooCommerce endpoints will remain dynamic though.
    3. Use fragment caching, so as to avoid highly time consuming ajax actions.

    It's good to be aware of the issues.
     
  10. Atrix

    Atrix Member

    37
    13
    8
    Oct 7, 2018
    Ratings:
    +38
    Local Time:
    1:27 PM
    1.15.3
    MariaDB 10.1.36
    I researched the speed of woocommerce vs magento2. Magento2 is garbage in comparison on everything but like one page. Magento2 also makes you compile things for dependency injection to make production changes, and has so many layers of caching, and even with all that on you get TTFB of like 1.5 seconds on a lot of servers, or longer, depending on the size of your database. So then you have to add even more caching.

    Hooks and actions are smart coding and a good thing that have been around forever.

    Magento2 decided to use inheritance, dependency injection, and just tracing where the actual code is means opening about 10-20 files a lot of the time and it's just horribly written. Classes are much more expensive than hooks too, programmatically. See some other posts here for how bad Magento2 is speed wise: https://community.centminmod.com/th...eded-ecommerce-platform-for-centminmod.14707/

    That you are never supposed to run magento2 on a shared server but woocommerce can have extremely high traffic loads on one should be an indication too.

    I haven't used Woo a lot but I have used Wordpress a lot.

    I appreciate the advice, just saying, in comparison to some stuff out there, Woocommerce is a speed demon. And if I did half the stuff I did to "fix" magento2 speed issues having 2 nginx servers, with a varnish cache server and redis and a separate database server, rewriting 4 core "indexers", disabling things that break the site, adjusting mysql settings etc, then I'm sure from what else I know woocommerce would still be faster than m2 cuz it's junk.

    I put "fix" in quotes because there is no fixing a stupid slow system like magento2. When you clear cache, when you develop, when changes are made, when people have to do tasks to lots of items/orders, when you look away for 10 seconds and it breaks b/c of some issue which it has a plethora of... well. It's not really fixed is it, it's always there and always an issue and always will be.
     
  11. tininho

    tininho Active Member

    182
    44
    28
    May 22, 2019
    eu
    Ratings:
    +135
    Local Time:
    10:27 PM
    Fair point about the complexity, I think this summarizes the "simplicity" of hosting a Magento web shop: https://cdn.magenx.com/media/easyslide/magenX_MCQD_promoAWS.jpg

    Personally I think Magento themes are better thought through and professional looking, than those for Woocommerce. If you can make your own, this point looses a lot of it's meaning.

    Woocommerce dashboard is a huge mess when compared, I have not yet found a decent admin theme or external dashboard.
     
  12. KlueMaster

    KlueMaster Member

    63
    11
    8
    Aug 5, 2017
    Ratings:
    +27
    Local Time:
    1:57 AM
    MariaDB 10
    You seem to have ignored the crucial part of my post. Anyway, compared to Magento even open cart is speedier. Speed wise you can optimise WooCommerce better than most other packaged solutions. What I had mentioned were a few ways to speed it up further. Not sure what gave you the idea that I'm recommending Magento.
     
  13. tininho

    tininho Active Member

    182
    44
    28
    May 22, 2019
    eu
    Ratings:
    +135
    Local Time:
    10:27 PM
    If one applies Occam's razor here, wouldn't fastCGI cache (properly configured, mostly done by Centminmod) and reducing/removing wc-ajax=get_refreshed_fragments be enough?

    I never understood how to use external object caches with (ie. Redis) Woocommerce without losing my mind.

    You can finalize this with Gonzales - speed up WordPress and be done with it?
     
    Last edited: Dec 3, 2019
  14. Atrix

    Atrix Member

    37
    13
    8
    Oct 7, 2018
    Ratings:
    +38
    Local Time:
    1:27 PM
    1.15.3
    MariaDB 10.1.36
    I think you misunderstand, I wasn't saying you were recommending Magento2. I was simply explaining why I think Woo speed isn't bad in comparison to what else I have experienced out there, and that hooks are actually cheap in terms of impact on speed vs inheritance and DI. So even if woo takes work out of the box to make extremely fast, it's still miles ahead of a lot of competition. Most of the speed in terms of user exp comes from how good your caching system is, and how slow the php side is has no bearing on it. Though if you read the last paragraph of my prior post, a very slow system still has a ton of downsides.

    I appreciate your input, just giving my perspective. I just figured any system isn't going to come premade with full page caching and varnish you know? I also think it's not really hooks slowing it down. Hooks add overhead for sure, but the only way to get rid of some way to inject code into a part of the execution is write it exactly how you want start to finish. Modular design doesn't allow for it unfortunately. When I look at how other system modularize code, Wordpress is smart. Drupal is smart. Magneto2 is a dumpster heap. And there's not really other ways to do it. You either go hooks/events or you get a spaghetti pile of objects that are over-engineered for their purpose and just make developing and maintenance harder. You have to also understand my frustration with magento2 has nothing to do with you so wanting to compare what I want to get off of (magento2) to something that has been recommended is entirely the point of this thread. Thanks for the info tho it's as I said appreciated.

    Opcode caching from php, properly configured database, nginx and varnish setup with a full page caching system, redis or memcache for storing some objects in memory and you have a pretty full package. There's several caching engines for wordpress that can utilize all of them. Not sure about woo tho I assume there's at least a few that support it. I'd weight the redis/memcache part the least important, but there's def a speedup to be had storing full data structures or variables in memory, rather than having to query the database and recreate them with php. PHP opcode cache helps speed that part up but you never have to run anything to fetch/create it if the result is in memory and the code knows to use it.

    It's kind of weird, like, magento2 you have to do all this. Must be nice to be on a system that doesn't need all of it to just "function" (again in quotes).

    I'd like to add for the server side centminmod makes most of it pretty easy btw.
     
    Last edited: Dec 3, 2019
  15. tininho

    tininho Active Member

    182
    44
    28
    May 22, 2019
    eu
    Ratings:
    +135
    Local Time:
    10:27 PM
    @Atrix

    As I am only learning here, I listen to more experienced people, such as yourself. This site has been some kind of corner stone for my thinking of Wordpress / Woocommerce caching on dynamic sites, some of the points contradict yours: https://servebolt.no/caching-i-wordpress/ (In Norwegian, google translate does fine job on it)

    What I gathered here is:
    - I dislike using Varnish or similar "super" full page caching with Woo - with my skills the probability of something breaking down is too big, so lost in sales would not be good tradeoff with somewhat lesser server requirements.
    - Same goes for external object caching. " Experience shows that the sum of inertia + gain from external Object Cache often results in a negative net result for online stores."
    - Woo is already transient caching by itself? Wordpress is object caching (get_post_meta ( ))?
     
  16. Atrix

    Atrix Member

    37
    13
    8
    Oct 7, 2018
    Ratings:
    +38
    Local Time:
    1:27 PM
    1.15.3
    MariaDB 10.1.36
    I am not experienced enough in Woo to agree or disagree. I can say though that my preferred caching method for wordpress only uses wp fastest cache for full page caching, and auto optimize for making some of the loading order stuff better so you get better content paint times. I'd say it's very good advice to not add more than you need and since WP isn't so ungodly slow like M2, it would take a lot more to "need" it.

    Varnish can suit any website tho, it has it's own rules, and there's many rulesets for wordpress out there available by default. It essentially tho boils down to not caching requests that have certain cookies tied to them. You can further it more by making any unique content ajax'd in and have your base page full page cached, then you can leverage the best of both worlds (stupidly fast main page fully cached, and then fetching in unique data for that user via ajax).

    Whether you need that is def a question to ask. It's pretty slick when it works tho, I'd have to do a lot more research and trench time to know how it works if at all with woocommerce's existing systems. I know that there's things like W3 Total Cache that have varnish support, varnish cache purging, opcode cache storage and purging, and redis/memcache support all ready to go and free. But I just stopped using it cuz most the time I can get the same speed output with far less configuration overhead on the smallish wordpress sites I need maintain.

    Not doing more than you need is definitely a valuable thing most devs don't appreciate. It's good to know Woo is often running great without the extra complexity introduced. And you always have that there if you do need it.

    WP Fastest cache just stores the resulting page as an html file and uses nginx/apache rules to load that if it's cached instead of everything else. Then that is cached in memory by unix. So it's pretty fast. It also smartly turns off if there's any user logged in. So it's only good for anon users but that's most users on some websites. It's pretty easy to setup. Sometimes it has issues with things like headway tho.

    If you introduced varnish in front of that, with proper rules, you could have varnish serve the html file generated by the full page cache and then not get any of the nginx overhead either and since varnish is built to do exactly that it does it faster and can handle more requests of it.

    The other side tho is varnish rules are very customizable. So if you want to have fine control over what is cached and what isn't then varnish is very useful. Such as a system that has full page loaded in but ajax requests with cookies are not cached. I'd def say don't use it if you don't need it though as varnish is hard to edit rules in.

    I guess I'll have to see how it all works out for our size of store when we eventually get to doing it. Thanks for the info!
     
    Last edited: Dec 3, 2019
  17. KlueMaster

    KlueMaster Member

    63
    11
    8
    Aug 5, 2017
    Ratings:
    +27
    Local Time:
    1:57 AM
    MariaDB 10
    Has anyone here successfully used varnish with WooCommerce on nginx? I would like to see the configuration.

    Object caching is kind of must with WooCommerce, and even WordPress. Full Page caching is surely faster than fragment caching, but then it breaks Cart display and even the whole Cart update system in few cases.

    Btw, I was playing with litespeed cache and quic cloud for the past couple of days. My TTFB has dramatically reduced to ~250ms, and full page load (a very heavy WooCommerce shop front-page) has come down to ~2 secs from a little over 5 secs. So that works too.
     
  18. Atrix

    Atrix Member

    37
    13
    8
    Oct 7, 2018
    Ratings:
    +38
    Local Time:
    1:27 PM
    1.15.3
    MariaDB 10.1.36
    I haven't but this looks promising in conjunction with W3 Total Cache Varnish v4 VCL for WooCommerce Stores - Beta

    Cart will still work due to them being excluded altogether.

    Full cached pages you should be able to get under 60ms TTFB reliably with this method and using centminmod tho.
     
  19. eva2000

    eva2000 Administrator Staff Member

    50,852
    11,782
    113
    May 24, 2014
    Brisbane, Australia
    Ratings:
    +18,234
    Local Time:
    6:27 AM
    Nginx 1.25.x
    MariaDB 10.x
    Centmin Mod 123.09beta01's centmin.sh menu option 22 wordpress auto installer's 3 full page guest caching options for cache enabler, redis nginx level cache and wp super cache all support excluding woocommerce url/cookies by default already in their nginx configurations https://community.centminmod.com/th...l-vs-centmin-sh-menu-option-22-install.15435/. Of course exclusion just means cart will work but performance will be lower due to full page guest cache exclusion.

    Those redis nginx level cache can be problematic. Cache enabler is best for least problematic operation.

    If you use Cloudflare and know javascript script and your web app i.e. wordpress intimately, you can write your own Cloudflare workers to do same cache for full page guest caching too. Or if you use Cloudflare Business plan, page rule with 'bypass cache on cookie' does the same = full page guest caching at Cloudflare edge server level. I've been testing my own custom Cloudflare Workers for such full page guest caching for Wordpress and Xenforo for a while. Works ok with some manual gotcha's right now.

     
    Last edited: Dec 4, 2019
  20. tininho

    tininho Active Member

    182
    44
    28
    May 22, 2019
    eu
    Ratings:
    +135
    Local Time:
    10:27 PM
    "WP Cloudflare Super Page Cache now supports workers (beta?) and cookie-bypass without Enterprise plan."

    I will run some benchmarks with KeyCDN/FastCGI vs @EckyBrazzz's wp-rocket conf vs @Atrix Varnish conf vs WP Cloudflare Super Page Cache - and share them here.

    My current TTFB is ~300-400ms for this staging site (copy from live busy shop), with heavily customized Woocommerce frontpage. Total load time is ~2sec, but I assume it will settle down to ~1,2sec once last stage of optimizing is done.
     
    Last edited: Aug 25, 2020