0

I'm looking at performance for a few list pages, and finding that low search is being called to find some Store variables within a channel entries tag. For example, getting {product_details:price} in a channel entries tag results in Low_search_ext/custom_field_modify_data being called 2x for each entry.

So getting 4 Store tags in a channel entries list of 24 products ends up having a bit of overhead (relatively):

(abbreviated from the graph example below)
    {exp:channel:entries
        channel="products"
        limit="24"
    }   
        {product_details:price}
        {product_details:regular_price}
        {product_details:sale_price}
        {product_details:on_sale}
    {/exp:channel:entries}

Template debug (called 190+ times):

begin: (0.145485/13.82MB) - Calling Extension Class/Method: Low_search_ext/custom_field_modify_data
...
end: (0.351349/14.96MB) - Calling Extension Class/Method: Low_search_ext/custom_field_modify_data

Graph view (courtesy of EE Debug Toolbar): The long plateau is the search for the Store variables

I am using caching so once it's cached it's not a big deal, but am trying to find ways to speed this up for the pre-cached page load.

1 Answer 1

3

It's rather awkward that hook is being called every time. Low Search uses the hook to update collections when a channel field is deleted; it's the only hook that can be used to for that action. However, the same hook appears to be called for other reasons too, but LS won't take any action there.

You can disable LS for that hook only by setting the enabled column to n in the exp_extensions table for class Low_search_ext and method/hook custom_field_modify_data. Then EE won't call LS for that hook, which should improve things. Do keep in mind that if you delete a field that is part of a search collection, you then need to update the collection manually.

However, the most ideal solution would be for EE to call a separate hook for field deletion, so LS can use that instead of this multi-purpose hook.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.