Какова стоимость производительности резервного механизма Magento? - PullRequest
1 голос
/ 11 января 2012

Magento имеет резервный механизм, который помогает предотвратить ошибки и проблемы с темой, проверяя наличие ожидаемых файлов через определенный набор путей. Это реализовано так :

/**
 * Check for files existence by specified scheme
 *
 * If fallback enabled, the first found file will be returned. Otherwise the base package / default theme file,
 *   regardless of found or not.
 * If disabled, the lookup won't be performed to spare filesystem calls.
 *
 * @param string $file
 * @param array &$params
 * @param array $fallbackScheme
 * @return string
 */
protected function _fallback($file, array &$params, array $fallbackScheme = array(array()))
{
    if ($this->_shouldFallback) {
        foreach ($fallbackScheme as $try) {
            $params = array_merge($params, $try);
            $filename = $this->validateFile($file, $params);
            if ($filename) {
                return $filename;
            }
        }
        $params['_package'] = self::BASE_PACKAGE;
        $params['_theme']   = self::DEFAULT_THEME;
    }
    return $this->_renderFilename($file, $params);
}

Как разработчик темы Magento, у вас есть два варианта: вы можете добавить как можно меньше к своей новой теме и зависеть от запасного варианта, или вы можете скопировать все из резервной темы в вашу новую тему и изменить ее (в этом случае запасной вариант должен перебрать меньшее количество файлов, прежде чем найти свою цель). Первый подход рекомендуется. Последнее не.

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

Я искал в Интернете, но не нашел никакой информации по этому вопросу, и я еще не достаточно знаком с Magento, чтобы самому описать запасной вариант. Есть ли какая-либо информация о фактической стоимости производительности этого резервного механизма?

Ответы [ 2 ]

4 голосов
/ 11 января 2012

Стоимость исполнения - 37.

Менее запутанно: Ваш вопрос, к сожалению, не отвечает.Хотя (очевидно) затраты на указание этих файлов и каталогов снижаются, Magento (и любое приложение LAMP) столкнется с узкими местами производительности из-за накладных расходов SQL и ЦП гораздо быстрее, чем из-за других факторов.Настройка производительности современных веб-приложений, как правило, происходит не на уровне приложения, а вместо этого рассматривает приложение как неизменяемый двоичный объект и приобретает / настраивает наилучшую возможную настройку оборудования.

Если кто-то сравнил Magento с включенным или выключенным запасным вариантом, он не поделился информацией публично.

0 голосов
/ 05 мая 2016

Производительность снижается, но, как сказал Алан, это будет зависеть от архитектуры вашего сервера в большей степени, чем от приложения.

Стоит отметить, что у Magento также есть запасной механизм для файлов кода, который также может бытьстоит вам драгоценных миллисекунд.В отличие от отступления темы, для этого есть обходной путь.Magento называет его «компилятором».

Обычно, по запросу на загрузку класса, Автозагрузчик ищет в четырех местах файл PHP: app / code / local , app / code / community , app / code / core и, наконец, lib .Полезно, если вы хотите перегружать определенный код ядра своей собственной версией, но медленно из-за огромного количества классов, разбросанных по файловой системе.

Таким образом, Magento Compiler гарантирует, что автозагрузчик должен смотреть только в включает / src и будет открывать меньше файлов.

В теории это не должно иметь большого значения, поскольку ваш сервер должен кэшировать эти файлы, но выПридется прочитать всю статью, чтобы понять, почему она не так уж и сложна.

http://www.byte.nl/blog/should-i-use-the-magento-compiler

Неофициальные данные : в магазине сПри большом количестве сторонних модулей мы сократили время до первого байта с ~ 2 секунд до ~ 1,6 секунд, просто включив компиляцию.

Слово предупреждения : некоторыеСторонние модули построены неправильно, и они приводят к поломке всего хранилища при включенной компиляции.Обычно это происходит из-за того, что они пытаются include_once или require_once какой-либо файл с относительным путем, и это не сработает, поскольку файл находится в другом каталоге, когда включена компиляция.

...