У меня есть несколько сценариев, которые мне в конечном итоге нужно будет рассмотреть через несколько месяцев. Просто задаю вопрос, чтобы тем временем я мог обдумать обсуждение.
Я использую Zend Framework для своего стека приложений. Я использую APC для кэширования сервера (вместо memcache, поскольку я не верю, что memcache дает мне какие-либо преимущества, даже если мое приложение распространяется).
Мое приложение было создано для работы без JavaScript, а затем для поддержки JavaScript я разбиваю страницу и отображаю версию, дружественную к JavaScript.
Если вы проанализируете простую страницу, может быть, 80% ее основных функций, которые можно кэшировать для каждого пользователя. Затем 20% настраивается для этого пользователя. Например, я могу захотеть отобразить
- Последние 5 просмотренных товаров
- Избранные предметы
Эти два «виджета» будут специфическими для каждого пользователя. Я рассматривал возможность использования ESI для этих компонентов, но потом понял, что наиболее трудоемким аспектом любого/моего приложения Zend Framework является процесс начальной загрузки и диспетчеризации. Итак, если мое приложение в настоящее время занимает 80 мс без кэширования. Например, 90% относительного времени тратится на загрузку и хуки плагинов, если бы я использовал ESI для загрузки этих двух «виджетов», то я бы эффективно добавлял нагрузку на каждую страницу? Так как я буду инициировать еще один запрос 80 мс для каждой кэшированной страницы.
В этом случае вы бы посоветовали просто загрузить настраиваемые виджеты/фрагменты через JavaScript, который можно получить после загрузки исходной страницы. Явным преимуществом этого является то, что всегда есть только один запрос, который кэшируется, а затем все, что настроено, извлекается в одном запросе после того, как начальная страница (которая кэшируется) была обслужена.
Если я ищу максимальную производительность, это кажется лучшим решением?