WordPress home_url () чрезмерное использование I - PullRequest
0 голосов
/ 23 сентября 2019

Я только что установил newrelic и, к своему удивлению, понял, что простая функция WP home_url была в числе 4 самых трудоемких звонков в моем магазине woocommerce.Это удивительно и, откровенно говоря, действительно разочаровывает.

Посмотрите: enter image description here

Есть идеи, почему это может быть?Или что можно сделать, чтобы улучшить его?У меня также установлен WPML.

Обновление

Я переписал функцию, и должен сказать, что при первоначальном тестировании она способ быстрее.Смотрите это:

Total Execution Time (home_url):        0.44862604141235 Secs
Total Execution Time (faster_home_url): 0.0031168460845947 Secs

Функция (может быть добавлена ​​в файл функций темы):

function faster_home_url($path = '') {
    /**
     * Append language
     */

        if(ICL_LANGUAGE_CODE !== 'en') { // primary language
            $path = ICL_LANGUAGE_CODE . '/' . $path;
        }

    /**
     * Append domain
     */

        $path = $_SERVER['HTTP_HOST'] . '/' . $path;

    /**
     * Append HTTPS
     */

        $path = (($_SERVER['HTTPS'] === 'on') ? 'https' : 'http') . '://' . str_replace('//', '/', ($path . '/'));



    return $path;
}

1 Ответ

0 голосов
/ 23 сентября 2019

Если вы посмотрите на источник для функции home_url (), вы заметите небольшую серию вызовов функций, в конечном итоге вызывающих get_option ().Как объяснено в этом WPSE-ответе, функция get_option () кэшируется, что означает, что если значение параметра уже находится в памяти, get_option () возвращает это значение вместо повторного запроса к базе данных.В результате, даже если вы вызовете home_url () тысячу раз за один запрос, он будет запрашивать базу данных только один раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...