У нас есть новостной сайт, где мы кешируем полную страницу статьи.
Есть 4 области, которые должны оставаться динамичными на этой странице:
Теперь мы можем думать об этом только через AJAX-вызовы:
$('#usercheck').load(<?php echo "'" . base_url() . "ajax/check_header'"; ?>);
И так далее.
Это создает огромную нагрузку на процессор, но какой будет правильный / альтернативный подход к этому?
Пожалуйста, смотрите прикрепленный:
Прежде всего, вам не нужно использовать AJAX для каждого возможного динамического контента, особенно в случае комментариев, вы также можете загрузить их через iframe
,
Таким образом, вы не полагаетесь на Javascript для выполнения запроса.
Это может даже работать на счетчик.
Тем не менее, проблема заключается не в Javascript и не в сервере баз данных, что видно из вашего графика. Мне кажется, у вас есть несколько тяжелых контроллеров PHP, может быть, вы загружаете тяжелый фреймворк просто для того, чтобы иметь $session->id
проверено.
Кроме того, что вы подразумеваете под «мы отслеживаем каждое действие»? Как вы их отслеживаете? Вы отправляете запрос AJAX от каждой мелочи или вы отсеиваете их с помощью JS и отправляете только один раз каждые 30 секунд или около того?
Мой совет заключается в том, чтобы вы учитывали размер вызываемого вами PHP-кода и уменьшали его столько, сколько можете, даже до нуля, если это кажется возможным (используя localStorage
чтобы отслеживать ваш пользовательский сеанс после первого входа в систему), и, возможно, загружать счетчик и комментарии альтернативными способами.
Например, я полагаю, что вы проверяете счетчик только один раз на загрузку страницы, игнорируя последующие загрузки других пользователей, пока текущий пользователь читает статью, поэтому ваш счетчик может оказаться устаревшим, в зависимости от вашего движение.
Я собираюсь объяснить это лучше: ваша страница имеет N просмотров, поэтому, когда я загружаю его, вы запрашиваете N а затем отобразить п + 1 мне. Пока я читаю, одна и та же страница запрашивается и просматривается Икс раз другими пользователями. Ваш счетчик на сервере был обязательно обновлен до п + х, но счетчик на моей странице все еще говорит «n views».
Итак, какой смысл быть разборчивым и показывать п + 1 для меня и не обновляя его, таким образом, будучи выключенным Икс?
Итак, прежде всего контроллер счетчика должен быть максимально тонким, а что если вы загрузите его в iframe, автоматически обновляя без AJAX?
Как обновить iframe, не используя JavaScript?
Это будет держать счетчик в актуальном состоянии, вы можете рендерить его с помощью PHP только один раз за просмотр страницы, а затем просто статически обслуживать полученный HTML-файл.
Других решений пока нет …