У нас есть сайт, написанный на Drupal 6.
Мы хотим использовать механизм кэширования Drupal для повышения производительности, но когда мы его включили, мы обнаружили проблемы, поскольку на нашем сайте данные сеансов отображаются на каждой странице.Система кеширования Drupal работает только для статического содержимого страницы, и наши данные сеанса фактически означают, что ни одна из наших страниц не является статической.
Мы нашли два решения для этого:
Перепишите блок, который показывает данные сеанса, так, чтобы он загружал нестатические данные, используя Ajax, чтобы основной контент HTML был статичным.Недостатками этого является то, что это будет означать довольно большую работу, а также то, что это уменьшит функциональность для пользователей, не поддерживающих Javascript, и специализированных браузеров (т.е. программ чтения с экрана).
Переместить данные сеанса на iframe
или аналогичный.Это просто звучит неправильно, и я не хочу этого делать, но я думаю, это решит проблему.
или найду альтернативную систему кэширования, которая позволит нам кэшировать сайттаким образом, чтобы иметь дело с небольшим блоком динамических данных на каждой странице.Это наш предпочтительный вариант, но мы не смогли добиться какого-либо прогресса в поиске чего-либо, поэтому вопрос здесь.
Так что, если у кого-то есть какие-либо предложения, которые помогут нам с выбором3, пожалуйста, дайте нам знать.Спасибо.
(ps - я знаю, что в Drupal 7 есть улучшенная система кеширования, которая может помочь с этим, но мы еще не готовы перейти на D7)
[EDIT] HavenЯ не добился большого прогресса в этом, поэтому я открою его за вознаграждение.
Я посмотрел, как Ubercart справляется с подобной ситуацией (так как это один из самых популярных модулей Drupal ив принципе имеет ту же проблему, что и мы).Они справляются с этим, когда в информационном блоке корзины отображается статический текст, когда пользователь не вошел в систему (например, «Нажмите здесь, чтобы просмотреть корзину»), и только динамические данные корзины отображаются на каждой странице, когда пользователь вошел в систему. Мыне чувствую, что это на самом деле решает проблему;это просто уклоняется от этого, и это не то, что мы хотим.Но я боюсь, что если Ubercart прибегнет к этому, это может оказаться единственным вариантом.