Как правильно вызывать динамический контент (в настоящее время с использованием ajax) внутри кэшированной страницы?

У нас есть новостной сайт, где мы кешируем полную страницу статьи.

Есть 4 области, которые должны оставаться динамичными на этой странице:

  1. Счетчик просмотров: мы добавляем +1 к view_counts этой статьи при загрузке страницы.
  2. Заголовок: в заголовке веб-сайта мы проверяем, существует ли session-> id или нет, если он отображается, мы отображаем приветствие [имя], мой профиль / выход из системы и, если нет, показываем регистр / вход в систему.
  3. Комментарии: Мы показываем комментарии, сделанные для этой статьи.
  4. Отслеживание поведения пользователя: мы отслеживаем каждое действие, совершаемое пользователями на сайте

Теперь мы можем думать об этом только через AJAX-вызовы:

$('#usercheck').load(<?php echo "'" . base_url() . "ajax/check_header'"; ?>);

И так далее.

Это создает огромную нагрузку на процессор, но какой будет правильный / альтернативный подход к этому?

Пожалуйста, смотрите прикрепленный:

Нагрузка за 60 минут

Высокие транзакции на сайте

7

Решение

Прежде всего, вам не нужно использовать AJAX для каждого возможного динамического контента, особенно в случае комментариев, вы также можете загрузить их через iframe,
Таким образом, вы не полагаетесь на Javascript для выполнения запроса.
Это может даже работать на счетчик.

Тем не менее, проблема заключается не в Javascript и не в сервере баз данных, что видно из вашего графика. Мне кажется, у вас есть несколько тяжелых контроллеров PHP, может быть, вы загружаете тяжелый фреймворк просто для того, чтобы иметь $session->id проверено.

Кроме того, что вы подразумеваете под «мы отслеживаем каждое действие»? Как вы их отслеживаете? Вы отправляете запрос AJAX от каждой мелочи или вы отсеиваете их с помощью JS и отправляете только один раз каждые 30 секунд или около того?

Мой совет заключается в том, чтобы вы учитывали размер вызываемого вами PHP-кода и уменьшали его столько, сколько можете, даже до нуля, если это кажется возможным (используя localStorage чтобы отслеживать ваш пользовательский сеанс после первого входа в систему), и, возможно, загружать счетчик и комментарии альтернативными способами.

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

Я собираюсь объяснить это лучше: ваша страница имеет N просмотров, поэтому, когда я загружаю его, вы запрашиваете N а затем отобразить п + 1 мне. Пока я читаю, одна и та же страница запрашивается и просматривается Икс раз другими пользователями. Ваш счетчик на сервере был обязательно обновлен до п + х, но счетчик на моей странице все еще говорит «n views».
Итак, какой смысл быть разборчивым и показывать п + 1 для меня и не обновляя его, таким образом, будучи выключенным Икс?

Итак, прежде всего контроллер счетчика должен быть максимально тонким, а что если вы загрузите его в iframe, автоматически обновляя без AJAX?

Как обновить iframe, не используя JavaScript?

Это будет держать счетчик в актуальном состоянии, вы можете рендерить его с помощью PHP только один раз за просмотр страницы, а затем просто статически обслуживать полученный HTML-файл.

0

Другие решения

Других решений пока нет …