Load In The Loop: Episode 17 – I Must Garden
Load In the Loop: Episode 17 is here! Join Eric Hileman and Ivan Chepurnyi as they identify and fix some performance issues for I Must Garden, an online gardening store. What will they find? Can they fix it?
Sponsored by blackfire: https://blackfire.io/
Follow us on Twitter! https://twitter.com/loadintheloop
Ivan: firstname.lastname@example.org, @IvanChepurnyi
Eric: email@example.com, @ericvhileman
Table of Contents
10:00 ajax post to newsletter on all homepage
15:00 potato compressor switch to Magepack or baler
20:00 ci/cd and agencies
28:00 Abbacus product labels
35:00 Abbacus widget reviews
38:00 engine23 curl to Shopperapproved blocking
43:00 configuration cache disabled and locking users
Performance First-Not Last (Article mentioned by Ivan)
Ivan Chepurnyi: [00:00:00] Hey, Eric, how are you doing?
Eric Hileman: [00:00:03] I’m good, man. How you doing?
Ivan Chepurnyi: [00:00:05] Yeah, I’m doing pretty good. And we got, last Friday we got a kitten. So now we have. A small animal at home that plays around with our son. So quite a lot of fun.
Eric Hileman: [00:00:22] Cool.
Is it a stray is that, that’s how usually people get cats, right?
They just show up and then it’s like, okay, this is your cat now. Like they just wander onto your doorstep or something. At least that’s how I got all my cats.
Ivan Chepurnyi: [00:00:37] In here. you almost don’t have stray animals, so there’ a very good system here in that sense. So like, you know, you’re going to find to if someone lost a cat or something like that, but usually there’s not something like there is homeless cats or dogs.
At least I didn’t see any here. and a friend of ours, they have a cat and, she had, three kittens recently, so she already sold three of them and, we reserved, one of them for our son.
Eric Hileman: [00:01:12] Sold? Is it like a pure bred cat? Usually
like you can’t give cats away. Like, there’s just so many cats. People are like, please take my kittens.
Ivan Chepurnyi: [00:01:22] No there is no issue with that to sell a it’s a European short hair and it was bred with neighbors, short hair as well. So it’s not like expensive, cat, you know, like you, you just pay a nominal amount. Like for instance, in our Ukrainian culture here, if you gift something. For something, right?
So let’s say you want to give to, seeds to grow something in your garden. And if you give it just for free without anything in return and Ukraine, it’s a sign like culturally, like, cause there was some kind of, for justice is that if you don’t pay for something, at least 1 cent, it won’t grow well.
So you have to give something in return. If someone gives you something for value. And is it the same applies to a home pets as well. So…
Eric Hileman: [00:02:31] We have a lot of strays here in America, like a lot.
Ivan Chepurnyi: [00:02:36] Yeah. But also America has a lot of land. Right? So there is a huge territory and it’s much more harder to control.
Eric Hileman: [00:02:45] It is harder to control. There’s big efforts to spay and neuter all of the wild cats and everything to try to keep the population down. And yeah, it’s tough.
Ivan Chepurnyi: [00:02:58] And Netherlands is much more smaller country and mostly it’s very densely populated. So it’s hard.
Eric Hileman: [00:03:04] Oh yeah. I mean, you’re, you’re pumping water out to make land there. Like you’re constantly pumping water out to keep the land you’ve reclaimed from the ocean and it’s different, very different.
Ivan Chepurnyi: [00:03:14] Yeah yesterday, we actually took a trip to a lake and I’m on this trip. We actually were riding the bicycle paths along a canal, and it was actually at least one meter above. The water level was one meter above us when we were riding a bicycle. So it was, you know, like when I thinking about global warming, I am start to considering like, maybe it’s the wrong choice to go into the Netherlands and stay here.
Eric Hileman: [00:03:45] Yeah you should buy a boat dude.
Ivan Chepurnyi: [00:03:48] But yeah, in general, just the quality of life, like you can take a bicycle ride anywhere you want. The nature here is amazing. Like yesterday I had…
Eric Hileman: [00:03:58] So many bikes in the Netherlands. People have told me, like, there’s a lot of bikes there, but I didn’t really know what a lot of bikes meant until I went there.
And I was like, this is way beyond a lot of bikes,
Ivan Chepurnyi: [00:04:12] Yeah like it’s. It’s kind of hard to find a parking for your bicycle, you know, when you go somewhere. So in United States, you, you probably have car parking issues right?
Here is the bicycle parking issues. So it’s sort of a different, and so, and other thing as well, like update on the barbecue. So last week you remember I was doing some barbecue, so I decided to buy a big, big grill. So right now I was using a small, ceramic one, Kamado grill, but now I’ve decided to buy a big one and, it’s arriving in a couple of weeks and then I’m going to prepare a complete Texas style barbecues at home here, You know, like there was a lot of travel restrictions right now. if I won’t come to Texas, Texas will come to me. You know?
Eric Hileman: [00:05:11] I see a lot of Twitter, pics of people, barbecuing. On the weekends. It seems to be everybody’s new favorite pastime.
Ivan Chepurnyi: [00:05:20] Yeah. It’s a kind of interesting activity. So let’s record an intro then.
Eric Hileman: [00:05:28] Yeah. let’s jump into it. Load in the Loop is sponsored by blackfire.io. I’m Eric Hileman, CEO, and co founder of MageMojo Magento hosting out of New York city. Purpose of this program is to take some of what we learned over the last 10 years of Magento specific hosting and evaluate one of our customer stores.
We’ll share with you what we find and hopes that it may help improve your Magento scales and the performance of your Magento stores. Along with me on this trip is my cohost Ivan.
Hi, my name is Ivan, Magento consultant, Specialized in performance, out of the Netherlands. I’m helping, with the help of Blackfire I’m helping, review Magento stores of MageMojo.
And not only MageMojo, but we still have a lot of backlog, right? On your side. So we still open to have someone also, aside from MageMojo having one hour a show. But the biggest problem right now is that yeah, you have to have everything pre installed. So it was the easiest way to go with suggest MageMojocustomers.
So tell us a little bit about the customer, Eric.
Yeah. I must garden as very popular with, you know, a little bit of food shortages. Not, not, not that there was any shortages, the supply chain was always fine, but everybody panicked bought. So like the, the demand is what actually skyrocketed and the shelves were empty.
So people were a little bit fearful of that. And, so they, you know, it’s a good time to start growing your own vegetables. And it’s also spring time and people are at home. So overall we saw like gardening stores doing really, really well during the pandemic.
Ivan Chepurnyi: [00:07:01] How about gardening in Brooklyn?
Eric Hileman: [00:07:04] People do it.
People have like terraces or rooftops. Like a lot of buildings will have a shared rooftop. So then they put stuff up there. Yeah. Or a balcony. You’ll see a lot of stuff on balconies.
Ivan Chepurnyi: [00:07:16] This is great. That’s great. Yeah. Interesting. So, let’s just start profiling, right? Let’s start with the homepage. you, you told before, so they have some issues with checkout, right?
Eric Hileman: [00:07:28] Yeah. Checkout seems to have some weird random issues. Like sometimes it’ll hang sometimes it’ll go through, so it seems like it’s an external dependency or something.
Ivan Chepurnyi: [00:07:39] So now we’re gonna, I’ll probablyjust do it in a conventional way first? Just try to profile a homepage check. First of all, if it works, it seems like, yeah, like profiling seems like working.
Hello to a squad foster response. Yeah, I think, is there a using full page? Cache is this is doesn’t work well with, Blackfire because there’s, this is a standard Magento, a full page gallery because it was a number of database queries are not Magento standard.
So this is definitely a full page cached page.
Yeah, for sure. so Jose don’t use varnish, right?
I don’t know, actually,
if you say
Dell, I haven’t checked it.
We’ve got, so we have to do a small tweak now. So now we definitely have to click a profile, everything. because yeah, it was a problem. Was that ones that, yeah. We find Jessica in a profile, a guest patient, doesn’t zoom going to give us any kind of valuable data, right?
So I’m just going to profile those requests. And I’ve just going to add some random string examples, a URL and Zen I’m gonna receive as a real, page render. On cached page.
Eric Hileman: [00:09:11] We see that one, a lot people will load varnish and then they’ll send out an email. And the marketing team adds a tracking parameter onto the end of the URL and it flown through varnish and they’re like, Oh my God, why is everything, why is there such a problem?
Why is everything slow? Why is this not holding up? We’re like, well, okay, well, we can see in your logs, you have these letters. Oh, that wasn’t us. That was the marketing team.
Ivan Chepurnyi: [00:09:36] but the problem here, you know, like not that marketing team added the barometer is the problem is that developers didn’t configure a varnish configuration or to exclude those parameters from cashing a cache because you know, why don’t you shoot gun, remove, specific, query parameters.
They are not related to your cash.
Eric Hileman: [00:09:54] Yeah, but the marketing team didn’t tell the developers that they were going to do it.
Ivan Chepurnyi: [00:10:00] Okay. why do we have a post request? This is kind of who you are. Yeah. Okay. let’s go into the tools directory right away. Yeah. Let’s profile a couple of pages. let’s see, looks like it’s not the cash right now.
Yeah. Great. Well, let’s scroll down to the Bay. Seems all fine, but this post requests and bothers me like what’s happening there. We’ll see soon. so let’s actually stop it and let’s see what was going on there.
Yeah, this is, I’m worried about the post request. So first of all, our universe, if you don’t know, posts, requests usually are not cashed by water at all, because those are considered always the name of requests and he does some kind of Memorial, PR newsletter popup with controller action index block.
Is that. Well, that is on every single page. So like you have a regular patients and it doesn’t the ox request and our Delores’s newsletter popup. You sit off integrating this newsletter popup as some kind of dynamic component. Yeah. Each of us does it very inefficiently. So that’s
Eric Hileman: [00:11:33] that I’ll be posting.
There’s no data going back by the day.
Ivan Chepurnyi: [00:11:38] Yeah. So this is this very interesting thing. Like why, why do you post it’s even the violation of principles of HTTP, right? So you shouldn’t post. when you were actually doing a get right. So there was some layout generation. So basically they just render a block.
They even don’t have any process in here. As you see, like all the queries that are happening here are related to the adjust, the configuration retrieval. Also, this one is interesting. Like why.
Why is it? Configuration is loaded.
Yeah. Let’s see. What’s going on in Aquarius. It just kind of who we are.
Hmm. No, it seems so fine. Oh, it’s just loading those websites. Okay, great then no issue. Is that okay? so this addition number one is they need to switch to water because you already provide water on your servers.
Eric Hileman: [00:12:54] And this is additional cost providers.
Ivan Chepurnyi: [00:12:58] He had no additional costs and, yeah, it doesn’t make sense to trigger your FPM, when, you can use just varnish right away.
Was out heating, your dynamics servers at all. So. This is kind of a weird that they don’t use it, but they use the standard Magento developer style. You, because Xeljanz at this, used as internal full page cache of Magento is intended. At mentioned Theravada and Magento documentations that it should be used only in development environment.
It shouldn’t be used in production productions. They insist on using the varnish because there’s a lot of benefits of using it, including actually. it let’s say loading your menu free a site includes. So it’s not rendering on every page. Unfortunately Magento’s is, is a box. Cause that ESI includes, still gets rendered within a page, but it’s not shown during the render process because it’s replaced it with a tag, but the block is still rendered.
So this is really told me the problem, but, yeah, I hope I will finally find a time to make the proper extensions of the removes since that surrendering process. okay. So what do we have here as well? we have here a homepage, so homepage is very nice. Number of requests as you see, like 555.
That’s a very round and nice number. And, it looks like we have this potato compressor, I think, we’ve seen zoo swung before on the show. I think it was one that was the first episodes with, some website. I don’t remember. I don’t recall exactly which one, but there was something related to the merging process.
Eric Hileman: [00:14:44] Yeah. I think we had potato once before.
Ivan Chepurnyi: [00:14:48] Oh, no, sorry. it’s I’ve seen this in one of my customers shops. So in general, remove what they took Homer compressor at all. Like it doesn’t give you any benefit. You better use either matchback, or baller. So I would use this one as the, as you see, like, Through all of the time spent on the homepage.
This one takes the biggest chunk, like 15 seconds. It was at 26 seconds.
Eric Hileman: [00:15:20] So people are looking at lighthouse scores or, these benchmarks, these synthetic benchmarks or scores. And they’re like, Oh, we need to install a compressor and get our scores up. But when they do that, they add all this extra server overhead.
On every page request, the time to
Ivan Chepurnyi: [00:15:38] fill it. You know what the biggest problem with measuring ZOS scores like Zarr. I’m not clear on your server cache when you run them. Right? So they are running in your browser like Zillow, the page, like you visit the patients and you click out it’s this page or run a light house, a profile on it.
And this lighthouse profile will get executed. Only, on the cash version was a Patriot already because you already resistant to this page before. So when you exhibit it, you don’t see a report. It’s about a very slow time to first bite. And here is definitely like, is able to exhibit it on uncashed backend page.
They would be, disappointed in a or lighthouse score. But, yeah, but in, in general, like you cannot achieve a good front end performance just by installing some extensions. This is a magic feels that a lot of extension developers try to sell you, but usually like extension doesn’t know about your Zim performance issues.
Like you cannot draw a match back on production because yeah. You need to have an access to the quoted base and you need to be able to execute the headless browser like Chrome.
Eric Hileman: [00:17:29] So yeah, it is. It’s a, I just saw it again the other day and now I can’t, it wasn’t Phantom JS, but I can’t think of what it was even now.
I just saw it.
Ivan Chepurnyi: [00:17:38] It’s what it was from.
Eric Hileman: [00:17:41] It’s
Ivan Chepurnyi: [00:17:41] for Chrome. I think
Eric Hileman: [00:17:43] now it’s something else.
Ivan Chepurnyi: [00:17:44] let me see here. Maybe it’s here.
Eric Hileman: [00:17:47] That’s it. It’s
Ivan Chepurnyi: [00:17:48] puppeteer. Yeah, but what I think is using JS or a headless Chrome. So it’s just a tool to communicate with those brothers.
So, yeah, in general, like, Oh, nephew
Eric Hileman: [00:18:06] has crime, no JS.
Ivan Chepurnyi: [00:18:07] Yeah. Yeah. So basically any kind of, front-end optimizations you perform on a render time was a page in a backend is never going to be efficient because, you could do this process during the deployment phase of your project. It doesn’t make sense to do it’s the wrong time and any extension you install.
We will always do it to the run time because, usually it expects a person who Justin so’s Magento and doesn’t know how to do a deployment process to have this extension working for them. So if you are, have a capability to use some kind of deployment tool, You you or edits into your deployment pipeline and like matchback or baller or, and if analysis may be on the markets, we don’t know.
It’s always changing.
Now we’re building tools for that here, but I’m wondering, do, do agencies and developers consider those deployment tools proprietary. So like if the merchant leaves the contract with the agency, They don’t have they have the code and source probably. But do they actually have the whole build process?
Ivan Chepurnyi: [00:19:40] I think it depends how customer this account merchant actually stops the process was, the agency, because I know at least a couple of customers.
Yes. Some of them will say and depend on internal agency procedures because let’s say agency maintains, they they’re on a CGI CD licenses. Like they maintain, On Seto for AWS service to spin up integration environments because yeah, there’s a bunch of costs involved. Of course we see, I see D and M sometimes merchants don’t want to invest in it.
If they let’s say just hired an agency and they spent money on his agency. however, as a price actually of. Maintaining its themselves is not as up to the heart. As soon as you ask someone to build for you a pipeline and make it working, you know, just maintaining it, doesn’t take much of your time.
And there’s already a lot of, I think, tools available in the market. Like there’s also a major deploy. Available is it you can just integrate into your product. Is Zoe. I know a couple of agencies, for instance, Alexander’s from the Netherlands and as they keep, is there a deployment tool together with the pro the project?
So within a product repository, you have complete deployment scripts. And the ways how you let’s say spin up your, staging environment, how you spin up your development environment and have you spin up your production environment. So everything is leaves together. Was it a positive? Of course it doesn’t have life X to the servers.
Eric Hileman: [00:21:18] Yeah, well, that’s the thing. So if that customer leaves, the agency, is that IP then assigned to the customer. It gets, it seems like it gets a little bit weird where the IP rights begin and end and the customers even really. How much of the code to the customer zone, do they just own the end artifact or do they
Ivan Chepurnyi: [00:21:41] actually, I had actually a customer who left an agency and switch to another one.
And this was like zero waving one of the biggest agencies in Magento ecosystem. And we’re switching to a smaller one and. for them. Yes, it was a lot of struggle, to get it, but they even had to sign a lot of waivers, legal labor waivers in order to tell that, Hey, we had a sense that the, we actually take responsibility.
It was a code. However, it’s really like when you spend, let’s say half a million euros on your project and you are not happy with your agency. And you actually want to hire some other company to work with it. And Zan, you have to fight for the codes that you’ve spent so much money on like this. This is just ridiculous.
You know, like sometimes I feel like the agencies are. Spending more money on their lawyers than spending money on their developers sexually
Eric Hileman: [00:22:43] it’s. Yeah. And I would imagine the next agency is going to say, well, no, that’s not very good. We need to redo that or we’ll use our own. And
Ivan Chepurnyi: [00:22:52] yeah, well, luckily for this customer, like, I helped them to properly get, get, get away.
Was it, so it was, I switched to a new agency and they’re happy right now. Like they’re a sailing stop because that agency, they logged them in, in their hosting environment. Ooh. Even like, is there, this was where to get stuff, you know, like I’m not agency or a customer, but. Yeah. You know, like those practices is they are kind of very gray, you know, very gray area.
And I really don’t don’t understand like how, how you can build your own gender projects in such a ways that you will look in costumer completely. You, you kind of remove all the oxygen. So if a customer decides to go, they have no other way. Except, you know, like work with you. So, yeah. And this is, this is.
Eric Hileman: [00:23:51] never use. And I don’t know, I don’t that, I guess some people would say I’m biased, but I would, I firmly against using agencies hosting because you are really, really locked into the agency at that point. I think that some of them are like, they’ll give you an aid or you. You give them rights to their AWS accounts.
So technically like the stuff’s in your AWS account, that’s not so bad, but still I wouldn’t.
Ivan Chepurnyi: [00:24:20] Yeah, this is, this is kind of a interesting topic. I think if it makes sense, maybe to duplicate someday show, you know, maybe in white, some merchant. And talk about yeah. What was the best way merchant or an agency and talk about, you know, different ways.
How would you deploy your Magento project? Because I think there was a lot of promotions who are logged in right now, in, through their solution providers and they don’t know any better, make us, they can’t compare it. Yeah, they can’t have anyone else, like when you just hosted at your agency, you never know, you know, is it efficient?
Is it implementations if you have or not? Because if let’s say you are hosted at major module at the byte at nexus Zell, Zen, you will see, at least some kind of information from a support where support, like you can contact, support and say, Hey. we have an issue with customers, not able to go through the checkout process and then they say, Hey, but did you know, like you have this thing happening in the background right now?
Is it actually walks you all your database.
Eric Hileman: [00:25:29] These queries are locking up. Look.
Ivan Chepurnyi: [00:25:32] Yeah. And this is the result of that one and that one. So it’s an external agency to get yeah. To fix the code and so on.
Eric Hileman: [00:25:44] we don’t see that a lot.
Ivan Chepurnyi: [00:25:47] Yeah. So basically right. If you’re a local in with agency hosting, you are completely walked out of a zoo wall transparency of the system. So like you are never going to be able to, you know, have complete, understanding what’s happening. So, yeah, let’s go back and take a look at other pages.
So, Oh, actually we didn’t take a look at David, a thing like this managing process. It takes a lot of time, but there is also a big chunk of time spent here as well. All right. So when we render a homepage and yeah, there was a lot of product sliders is there. They’re inefficient. As you see here, there is bunch of them.
Is there a salsa or do you use Magento product load? So is there a, some soundbite of free use functionalities that also wards product in the loop? and it was on the homepage, right? Was it homepage? Yeah. Yeah, I think so. Yeah, it was the homepage. So it was this part of a page. It’s taken a lot to a render as well, like the whole second, because it lost every single product.
Separately. however, yeah, we don’t see all, as a product load process here because probably as a product was already loaded in previous books here. Like we don’t see all the queries, but here is, well, for instance, we see again as the same thing with sliders is that take a lot of time to execute and there is some kind of.
Issues sexually with standard Magento. For instance here, I don’t know. Wait a second. It’s just not Magento
Eric Hileman: [00:27:38] product
Ivan Chepurnyi: [00:27:39] labels. This is kind of product labels extension. So as you see here, product labels through sham owl, and he has eight to group product.
And they, yeah, they could price, but it could be also that maybe it’s not, an issue with, the extension, but maybe it also core issue because extension may be just uses so, and available API for three being the price on the product list and Magento core, for instance, for a group product, we’ll take all the assigned, simple products.
Oh, it was a group product in order to find the minimal available price of a product to show. So let’s just go and homepage and just take a quick look here. So if I go, let’s say here into ant control. Yeah. So this is a group product you see, like Jose, how, two different variations, like, I dunno what this a three 20 Z.
it’s I know the gallon is sound for like, almost like four liters, right? So is this a big beacon bottle? And this one is probably smaller.
Oh, it’s almost swung liter. Yeah. Okay. I see.
So you see here, is there a stupor or two products on this product level, but, in order for Magento to show you, is the price here as well as shoving, probably some label. because there was some level labeled functionality, it says built in, it tries to get this price data and try to render this, information here.
Yeah. What is this profile? I think it, yeah, it is here. So here I see, for instance, that, is there some kind of Bryce or three happening, or if it was a group product, final price model. And then yeah, the same thing happens for every single product over here, actually. So for able to group products, there’s going to be who through all of this minimal price, had it actually results in slower access was a page.
So generally what you can do here, you can change the way how Magento shows is they don’t the product listings by preloading the data from index because Magento already has a minimal price of a group product and a price index. And this is just a problem for Magento not using this data from the price index on own price.
It was all over some product. However, is they can write a plugin around the price resolver and can check if product already has this data just with gums as data, instead of going for the standard resolver, otherwise fall back to the standard that over shouldn’t be a complex customization for them to do.
Zen. Is there an Azerbaijan. So we see a Nasr check for the, a group product price. So basically, what is this price thing? Why is this price thing is happening? Because as April, when we have some kind of a sale, a label that showed on the page like, Hey, is this product can sell and just compares the minimal price with maximum price.
However, the issue is here that actually. for group products, there is no other price and minimal price or for simple product. Like there is, there is no special price for group product because he just, peaks is the minimum values at this high level from Julissa falls, the products that are assigned to it.
So probably either as they have to remove this logic from his extension. or is a need to fix the issue was the core of Magento. So, yeah, mostly it’s labels. So the labels, are affecting the rendering time. I was a product sliders and yeah, this slows down a lot. And Zen
Eric Hileman: [00:31:52] seen it better labels extension.
Ivan Chepurnyi: [00:31:56] I think I never seen any good labels extension. But mostly, I think the problem is here is that label extension is tries to satisfy as much use cases as possible. Like Zay cell, not based on their performance, they sell based on the amount of features, the handling, Hey, we have new product feature. We have sale product feature.
We have, this label and that label, however, majority of merchants are using the labels just because they want to define some label from a drop down on the product level. And just show it on the product itself. They don’t use usually this automated things and majority of solution partners sexually can implement a label extension very easily.
just by grading a drop down attribute on a product level and then just rendering a label based on these dropdown attribute value. On the front end. Right? So you’ll, you don’t need a lot of, you know, development time to implement it. Even a front end developer can create it, like. Each asked to retrieve the data from a product.
The only thing for which is a backend development is needed is actually just create a setup script to create this new attribute. But you can even create it on a live store in a database, not in that way. It’s an admin panel and you can set a Z set, reboot should be used to in product listing. And then the data was just sat there with the automatically is going to be available on the front end.
So he would have reviews. And from the reviews I see, is that every single review or was it the shown on the homepage? Let’s see where, whereas those reviews are probably this book, right?
Eric Hileman: [00:34:05] That looks like an image.
Ivan Chepurnyi: [00:34:10] Yeah. So there’s even no product, you know, to quick on. You see? Yes.
Eric Hileman: [00:34:17] Weird. Or are they generating those images from some texts? Why wouldn’t you just put images on a slider for that?
Ivan Chepurnyi: [00:34:27] It’s just not very much. It’s, it’s a Baxter. I think it’s a text.
Eric Hileman: [00:34:34] Well, it is.
Ivan Chepurnyi: [00:34:36] Yeah. So it is a text. The problem is that it’s still loads here.
Is it wold product and it actually executes bunch of it rather than on things. Like, if you are loading a review, you don’t need the product at all. If you just want to, shows the reviews. So this is probably another extension may be used. Yeah. So. Here you see it advocacy review. So they probably use an extension because it provides you possibility.
Let’s say to show some around the product reviews, but they don’t use part from this extensions that’s related to products. And this products part is actually a does bunch of product loads in a loop. So what does he need to do either? Right. The functionality themselves or removes is slow. It’s completely because they don’t use even product data in a template.
So he was able, he was proud of the data in a template. It doesn’t make sense to load it at all.
Okay. here’s something bad. They’re doing an issue,
their shopper approved feats.
Eric Hileman: [00:35:51] Oh no. We use shopper approve and I, on our new site, I was working with their API and I can tell you, it goes down a lot. It went down several times, just in a week that I was working with it. And it’s slow. You do not want that in your
Ivan Chepurnyi: [00:36:09] ear.
So this is probably something related to some block or something like that. Yeah. So here it is. So is the shopper approved? This is okay. Something related to, as this beach, right?
Eric Hileman: [00:36:32] Aye. Well, that’s the, yeah. Okay. So that’s the little widget thing. Yeah.
Ivan Chepurnyi: [00:36:38] How about, or why do they show it two times? So
Eric Hileman: [00:36:41] I don’t know why are they curling it instead of just using JS to get it later on
Ivan Chepurnyi: [00:36:47] or whatever.
So is this, this, this is probably shown on every single page because it’s part of the footer. So this is adds a lot of load on the page and you have to make sure you know that, you don’t do it. If you need to, Lord some fee from a shopper approved, do it in the background, stores the data in a database and just load it, locally.
Like you don’t need to.
Eric Hileman: [00:37:15] That’s what we did. We have, we have a Cron that gets it once a day into a som file. And then we read the Jason file and do the page.
Ivan Chepurnyi: [00:37:23] Yeah. Maybe because this one doesn’t make sense. And this is probably some kind of an extension. So they just installed an extension. And this extension from one giant, one, three shopper approved, he’s actually doing it.
Eric Hileman: [00:37:36] that’s terrible.
Ivan Chepurnyi: [00:37:40] And then, yeah, Zed, that’s a bunch of let’s take a look. Also at the beginning, it was a page because there’s bunch of stuff as well, like tracking code for the email. This looks weird. This takes like two point health seconds.
so this looks like a . There is some kind of an issue with the cash.
well, that’s a real profiles this page again, let’s just click profile we’ll request. Yeah. So let’s refresh the page to make sure, you know, the tab just crashed. Why is it time just crashed?
Eric Hileman: [00:38:34] you were on your bone to a new tab, crash to Firefox thing, I guess.
Ivan Chepurnyi: [00:38:41] Yeah, but it was, yeah, I just installed the different distribution was in newer Firefox version, but yeah, this is weird.
Okay. Let’s take a look at this one. So let’s profile all the requests and I’m going to add here one, two, three, one, two, three
Eric Hileman: [00:39:05] new and interesting things in this one.
Ivan Chepurnyi: [00:39:08] Sorry.
Eric Hileman: [00:39:09] So we’re finding some new and interesting things in this one.
Ivan Chepurnyi: [00:39:13] Yeah. But I think like maybe they have just some issues with the cash or maybe it could be possible that there is some extensions of queers of cash. Every minute. I remember there was some customers were reporting that as their configuration cash has never been, appropriately, working.
So let’s take a look at their profile. So, yeah, let’s stop profiling. And let’s go into this one. W
Eric Hileman: [00:39:42] w what is, what would you recommend as the best way to see if caches are being, are working properly and not being cleared constantly or being used properly?
Ivan Chepurnyi: [00:39:55] Yeah, this is kind of hard to track because yeah.
You have to specifically do it yourself. Manually. Okay. So this, I think I opened the wrong page here. I think I opened this newsletter popup ProQuest. So here is the one, the home page. So again, 555 database queries. Let’s see if this configuration of thing is loaded again.
Eric Hileman: [00:40:28] Sure.
Ivan Chepurnyi: [00:40:28] And yeah, it’s loaded again.
So if I do enables this one again, profile request, record, and add couple of more numbers. Let’s see what will happen.
Eric Hileman: [00:40:51] I mean, that’s, that’s the thing. Customers think that, okay. My cash once I, once you hit it, once it’s going to be there and it’s going to be warm and no, like there’s a lot of events that happen that clear cash. We see it all the time. Cassius constantly clearing. And then the worst is they’ll say, all right, well, let me set up a cash warmer.
I’ll set up like amnesty FPC or whatever. And they’ll just blast the site constantly all day, like trying to keep caches or,
Ivan Chepurnyi: [00:41:20] yeah, this is the worst thing that happened through your store
Eric Hileman: [00:41:27] in our opinion. Yeah.
Ivan Chepurnyi: [00:41:29] I, I wrote a, a long time ago, an article where I was describing issues with performance optimizations and how developers sexually try to tackle it.
And one of the things that is the most common misconception is that Cassius for performance sketches is not for performance. It’s for scaling. It’s when you have to handle more users than you usually. Ken was your story. If you rely on the cash in order to optimize your page, load time, it’s a bad practice because there is so many on cached page that your readers will hit that in Zen.
There is no really no benefit of actually caching.
Eric Hileman: [00:42:10] Yeah, we have. Yeah, exactly. We’ve seen many instances where the more orders that go through the more cash is cleared, so the less helpful it actually is and thing it just falls apart quicker.
Ivan Chepurnyi: [00:42:22] Yeah. So let’s see how it goes. Now again, you see it’s again doing the same thing with the configuration cash.
So it looks like they have configuration cash disabled.
So this is kind of a quick fix.
Eric Hileman: [00:42:45] Why I wonder why.
Ivan Chepurnyi: [00:42:49] Or it could be possible that this functionality may be accesses some uncashed variation of a cache, you know,
but I highly doubt it because it looks like it’s justice down there. The system configuration. Yeah. It’s a standard Magento system configuration.
So in general, like you have a lot of concurrent visitors. This one will get worse because Magento uses looking in order to prevent a generation of new pages while the cash is being generated. So it means like if multiple customers hit on catch the page in Magento and each of these pages is going to give you a rate, a configuration cash.
it means that only one of them concurrently will be able to respond to while others will wait and we’ll wait till they get the cue to generate own cash. However, because the cash is disabled generated, cash is now preserved. So you just one, one customer or. , you know, like it’s going to be very hard to do it, so they need to enable configuration cash.
this is just, misconfiguration and Magento. let’s see. did they complain about any other page?
Eric Hileman: [00:44:34] let me check. Yeah. I think they had some checkout issues as well. cause the shoes,
Ivan Chepurnyi: [00:44:40] you were talking about constantly loading the stuff. So I think they see issues in checkout and not here because here, for instance, they help full page cache enabled.
Eric Hileman: [00:44:51] yeah, they should,
Ivan Chepurnyi: [00:44:52] it might be just a, you know, I’m just thinking like, yeah, you don’t have configuration capture enabled. That’s my problem was a heavy shoe, was a checkout. Because there’s a cash drives to generate itself. So it was a page number loading. So a lot of concurrent requests
Eric Hileman: [00:45:11] and consistent that would be an income.
So they say it will, it will load and spend and consistently what’s. So if you’re locking to try to generate config cash with other users on the site. Yes. That’s probably very inconsistent.
Ivan Chepurnyi: [00:45:26] Yeah. So I think that’s. What is the problems that they have. and we, I was just going to fill them with a bunch of profiles that the cash is never used for configuration.
So it means they just need to enable it in their Edmund panel.
Eric Hileman: [00:45:44] Yeah. I’ll ask a support to check and see,
I think it’s already gonna take. A lot of time for them to work on, because if we go right now in the category page, it’s also hard to profile it because we don’t have varnish enabled. So, you know, like it’s kind of, we have to do three weeks in order to profile the website. So I think we already spent quite a lot of time on it today.
Eric Hileman: [00:46:37] Yeah. we, we have a, we have a service that checks store owners stores for common performance misconfigurations and cash is one of them. So they should be receiving nag emails from us that says, Hey, like you’re missing these caches. Please enable these caches. And we even have a part of our terms of service as a requirement.
Like if this is a production site, we required people to have those enabled and working. So, yeah, let’s I think support to see if it’s actually enabled. Cause I’m curious, I’m curious if it is enabled, but it’s just not working properly
Ivan Chepurnyi: [00:47:14] and if could be possible also that some extension or some module intentional, intentionally disabled sketching, you know, and, is, this is very funny as, you know, like, And in Magento is a funny thing is actually you can disable trunk time.
You can disable cash. So let’s say you can create an absorber, is it will at drawn time say, Hey disables, this type of cap and my jumper just wanted to use this cash through on
Eric Hileman: [00:47:43] things. So what would you do then grab the code base for a string that’s like cash. False cash enabled false or
Ivan Chepurnyi: [00:47:51] has you only can do it by installing another extensions that will check often as a page, a Twitch, which Cassius has been enabled, you know,
Eric Hileman: [00:48:00] extensions and watching other extensions lawyers watching other lawyers.
Ivan Chepurnyi: [00:48:07] This is, this is kind of crazy, right? So, by buds, there’s no way you can do it, you know, just from serving that way because you can do it. So many things just by running a code was in Magento, a coder base, you know, that will change so many things. My system was so customizable that it’s good, that it’s customizable.
Like it allows people to build amazing things was Magento. However, at the same time, like you can’t rely just on the data in order to make sure you know, that everything is configured properly.
Eric Hileman: [00:48:39] So our supports shows us all the caches are. Enabled Ben Magento cash status config, layout, block HTML reflection, DB DDL, compile config EAV customer notifications can integration configure integration, API, Google product, full page config, web service translate, fish, pig, WordPress, and WP GTM categories.
Ivan Chepurnyi: [00:49:08] true.
But Zen wide by, do we see that the sexually disabled? Because it is, it’s
Eric Hileman: [00:49:19] a good question.
Ivan Chepurnyi: [00:49:21] That’s a quite weird izer or maybe they actually specifies the wrong radius configuration, however, is in Oh no. Full page. Cache would still work. Because probably with maybe they specified the correct configuration, but maybe for the main cash storage, they didn’t specify correct configuration.
Eric Hileman: [00:49:45] Yeah. I’m telling them to check the redness config. Now sometimes people do that. They’ll do a Reddis config, but they’ll put like an array there’ll be off in the array or something.
Ivan Chepurnyi: [00:49:58] Yeah. So this one could be a problem and yeah, in general,
I think that’s all for today, for this customer. yeah. We will, we will, we would love to take a look at your store as soon as you know, as is basically shows are getting fixed and Zana, we can dive deep more into the details butts. Definitely. Like, did she call it big issues as they described? Sounds reasonable.
If you consider the configuration of caches networking.
Eric Hileman: [00:50:34] Yeah. That would do it. Okay. Yeah, I have support checking the, Reddis config, just going over it. This is an easy thing to miss. if there’s, if it’s off, if there’s an array offset or something in there, that’s wrong to look at it and think it looks right.
Systems will detect that. It’s right. But it’ll be misfiring. but yeah, if that’s, if that’s okay, then it must be something, something in another extension somewhere that’s triggering it.
Ivan Chepurnyi: [00:51:05] otherwise, Zen will have really to get some developers to investigate why it happens. You know, why is there a cash is not working at all if it’s not misconfiguration?
Okay. So since everyone for joining the show and deals, the next time. feel free to submit your stores for you at a MageMojo, as well as at firstname.lastname@example.org. Right. Yeah, or it’s load in a loop.
Eric Hileman: [00:51:45] L I T L@gmail.com. I know email@example.com and then load in the loop on Twitter. And that’s why we link in the show notes cause we were unreliable.
Ivan Chepurnyi: [00:51:58] So, so take a look at the show notes and said, send me to your stores for review. And if you are not hosted at major module, make sure that you have Blackfire installed and we will provide you with the keys for the show. Is that we’re provided a wary nicely by Blackfire. Is that there? The show? Yeah.
Thank you very much. And deals the next week or sorry, not the next week in two weeks. Yeah, even two weeks.
Eric Hileman: [00:52:26] Thanks.
Ivan Chepurnyi: [00:52:27] Bye. Bye.
Other Articles You Might Like
How We Built A Successful Magento Hosting Company
So you’ve read the offer, the secret sauce, and you still don’t believe it. Well ok then, here’s the story of how we actually did it… Let’s travel back in time to 2008 where Magento first started…
Load In The Loop: Episode 10 – Hooks and Lattice
Load In the Loop: Episode 10 is here! Join Eric Hileman and Ivan Chepurnyi as they identify and fix some performance issues for Hooks and Lattice. Sponsored by blackfire: https://blackfire.io/ Follow us on Twitter! https://twitter.com/loadintheloop Ivan: firstname.lastname@example.org,…