Loading speed with variations (resolved)
14 years 3 months ago - 14 years 3 months ago #54810
by esotechie
Loading speed with variations (resolved) was created by esotechie
Categories and product listings pages load with speed as you would expect.
When loading a page with a large number of variations, (3 colour and 7 sizes) the product page takes over 5 seconds to load, and this is running local (i am using MAMP for development).
Caching and ZIP are both one, and as I have said the rest of the site, including the pages from Hikashop that are not the product page load with speed.
It can not be image creation (e.g. creating thumbnails) as they have already been done on the first visit to the page.
I am baffled about the speed and rather worried about it's implications.
Any advice or feedback would be appreciated.
When loading a page with a large number of variations, (3 colour and 7 sizes) the product page takes over 5 seconds to load, and this is running local (i am using MAMP for development).
Caching and ZIP are both one, and as I have said the rest of the site, including the pages from Hikashop that are not the product page load with speed.
It can not be image creation (e.g. creating thumbnails) as they have already been done on the first visit to the page.
I am baffled about the speed and rather worried about it's implications.
Any advice or feedback would be appreciated.
Last edit: 14 years 3 months ago by esotechie.
Please Log in or Create an account to join the conversation.
14 years 3 months ago #54811
by esotechie
Replied by esotechie on topic Re: Loading speed with variations
Hmmm. I did a bit more testing switching things on and off and it seems to slow right down with "Display vote in products page" turned on. Turn off and the page loads in 3 seconds, which even though is slower than I would like, considerably better.
Please Log in or Create an account to join the conversation.
14 years 3 months ago #54844
by esotechie
Replied by esotechie on topic Re: Loading speed with variations
Some more information from my testing:
The bottleneck is in the file administrator->components->com_hikashop->classes->product.php
and the part of the code causing the slow load is:
I believe it is the line $variant->$field = @$element->$field; that does the most damage. Looking at the products it is the text in the description which is making it slow, reducing the description to a couple of words makes it fast. This means that any product with multiple variations and large text, are slow to load, which is not great.
The bottleneck is in the file administrator->components->com_hikashop->classes->product.php
and the part of the code causing the slow load is:
Code:
if(isset($element->$field) && is_array($element->$field) && count($element->$field)){
$array=array();
foreach($element->$field as $k => $v){
$array[$k] = (PHP_VERSION < 5) ? $v : clone($v);
}
$variant->$field=$array;
}else{
if($field=='product_name'){
$config =& hikashop_config();
if(!empty($variant->characteristics)){
$separator = $config->get('characteristics_values_separator',' ');
foreach($variant->characteristics as $val){
$variant->characteristics_text.=$separator.$val->characteristic_value;
}
}
}else{
$variant->$field = @$element->$field;
}
}
I believe it is the line $variant->$field = @$element->$field; that does the most damage. Looking at the products it is the text in the description which is making it slow, reducing the description to a couple of words makes it fast. This means that any product with multiple variations and large text, are slow to load, which is not great.
Please Log in or Create an account to join the conversation.
14 years 3 months ago #54930
by nicolas
Replied by nicolas on topic Re: Loading speed with variations
Hi,
Yes, as you can set a different description for each variant of a product, that code helps the system fill the default description of the main product for variants without a description (and that's the same for all the other fields in fact).
As a quick fix, you can disable the copy of the description here, and remove the div display variants description in the "show" file of the "product" view.
As a long term solution, we would have to optimize the code so that if none of the variants have a value for a field, we could just not copy the data to the variants and skip the display of the variants value for that field.
That would have the double benefit to reduce the page size and improve a bit the number of characteristics/variants a product could have before crashing (a few hundred variants at the moment for a normal server).
Yes, as you can set a different description for each variant of a product, that code helps the system fill the default description of the main product for variants without a description (and that's the same for all the other fields in fact).
As a quick fix, you can disable the copy of the description here, and remove the div display variants description in the "show" file of the "product" view.
As a long term solution, we would have to optimize the code so that if none of the variants have a value for a field, we could just not copy the data to the variants and skip the display of the variants value for that field.
That would have the double benefit to reduce the page size and improve a bit the number of characteristics/variants a product could have before crashing (a few hundred variants at the moment for a normal server).
Please Log in or Create an account to join the conversation.
14 years 3 months ago #54934
by esotechie
Replied by esotechie on topic Re: Loading speed with variations
Thanks for the reply Nicolas. Clear answer.
I'll have to wait and judge it on a project basis on :
1) if variants have different values
2) the size of the data
I'll have to wait and judge it on a project basis on :
1) if variants have different values
2) the size of the data
Please Log in or Create an account to join the conversation.
14 years 3 months ago #55024
by esotechie
Replied by esotechie on topic Re: Loading speed with variations
Sorry Nicolas but I can not see what I need to change in the file administrator->components->com_hikashop->classes->product.php to disable the variant description loads but still have the main product description to show. If I comment out $variant->$field = @$element->$field;, not description appears.
Please Log in or Create an account to join the conversation.
14 years 3 months ago #55065
by nicolas
Replied by nicolas on topic Re: Loading speed with variations
You need to remove that line yes. And as I said in my message, you also need to remove the div display variants description in the "show" file of the "product" view. That way the system will always use the description of the main product.
Please Log in or Create an account to join the conversation.
14 years 3 months ago - 14 years 3 months ago #55120
by esotechie
Replied by esotechie on topic Re: Loading speed with variations
Seems the issue was being magnified by the same issue as in my thread
"Comments and Vote unusable due to speed"
i.e. jQueryEasy.
Have to find an uneasy way to manage jQuery libraries
i.e. jQueryEasy.
Have to find an uneasy way to manage jQuery libraries
Last edit: 14 years 3 months ago by esotechie.
Please Log in or Create an account to join the conversation.
Time to create page: 0.205 seconds