Сложный шаблон ExpressionEngine: возможно ли отобразить ‹=1 секунду?

Я оптимизировал сложный шаблон ExpressionEngine, насколько мне известно, и я все еще стремлюсь получить время рендеринга менее 1 секунды, независимо от того, нужно ли мне внести корректировки на уровне приложения или на уровне сервера.

Рассматриваемая страница представляет собой сетку из 195 проектов, каждый из которых имеет несколько отношений «один ко многим» (клиент, поставщик, офис и т. д.), которые на самом деле отображаются и фильтруются. Эти отношения поддерживаются Playa.

без кеша: 16,0904 секунды, 50,11 МБ, 5264 запроса

после кэширования на уровне приложения: 2,0793 секунды, 28,37 МБ, 476 запросов

Падение в значительной степени является результатом кэширования шаблонов EE, кэширования тегов и параметров «отключения» канала согласно этой статье об оптимизации EE Wiki< /а>.

Все это происходит на сервере MediaTemple DV4 (LAMP) с 512 МБ памяти, который, я думаю, будет уничтожен с такой скоростью. Трафик рабочего сайта составляет ~4 тыс. просмотров страниц в день.

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

Существуют ли безопасные способы, не взламывая ядро ​​ExpressionEngine, снизить минимальное время рендеринга страницы до менее секунды? Я просто настроил себя на неудачу?


person Matt Stein    schedule 03.05.2012    source источник


Ответы (2)


Это то, в чем превосходна асинхронная загрузка ... если вы беспокоитесь о последствиях SEO, добавьте несколько ссылок на страницы, а затем скройте их с помощью javascript при инициализации вашего материала AJAX. Имхо, более 5 тысяч запросов без кеша совершенно неприемлемы. С 4k просмотров в день, некоторые люди будут поражены этим просмотром страницы, нарушающим кеш, и это будет некрасиво!

Несмотря ни на что ...

Я предполагаю, что большинство оставшихся запросов после кэширования исходят из Playa. Это создает много запросов. Добавление параметров cache и refresh непосредственно в пары тегов Playa поможет вам в этом.

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

Удачи. :)

person Derek Hogue    schedule 03.05.2012
comment
Я бы второй CE Cache, это действительно имеет большое значение, у меня была 8-секундная загрузка до 0,4. Конечно, это означает, что один пользователь при каждой перестройке кеша будет сталкиваться с более длительным временем загрузки, но эй... - person Peter Lewis; 04.05.2012
comment
Спасибо, Дерек (и Питер)! CE Cache уже меняет правила игры для меня, и хотя резервная разбивка на страницы не работает (страница имеет фильтрацию всех элементов), я не осознавал, что могу указать кэширование для Playa. . - person Matt Stein; 04.05.2012

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

Если возможно, разместите код своего шаблона здесь или на форумах EE, и, возможно, его можно будет упростить.

Еще пара идей:

  • удалите все сложные условные операторы (вместо них используйте If/Else и Switchee Марка Крокстона)
  • используйте модуль запросов или суперпоиск Solpace вместо записей каналов, а затем вместо этого вызывайте Playa через теги модуля Playa.
  • удалить любые вставки; используйте фрагменты или ничего вместо этого
  • удалить разделы шаблона и посмотреть, не являются ли они особенно интенсивными запросами

Удачи!

person Judd Lyon    schedule 04.05.2012