Создание табло на сайтах с большим трафиком - PullRequest
3 голосов
/ 21 июня 2010

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

  1. Топ-10 обновляется каждый раз, когда пользователь заходит на страницу - увеличение нагрузки на сервер, особенно при большом трафике, пользователь увидит как его / ее правильное положение как можно скорее.
  2. Top 10 регенерируется с установленным интервалом, например каждые 10 минут - генерирует только один набор результатов, вызывающий один всплеск каждые 10 минут, а не один раз каждые x секунд, если пользователь нажимает между обновлениями, он не увидит обновленную оценку.

У каждого есть свои плюсы и минусы, по вашему опыту, какой из них лучше всего использовать, или есть какие-то магические альтернативы?

РЕДАКТИРОВАТЬ - Обновление, после того, как я учел все, что я сказал, я решил перестроить эту часть приложения. Вместо того, чтобы иметь дело с отдельными баллами, которые я имею в виду с итоговыми данными, они затем сохраняются в отдельной таблице, которая действует как источник кэшированных данных.

Спасибо всем за отличный вклад.

Ответы [ 4 ]

1 голос
/ 23 июня 2010

В дополнение к ответу Марселя я бы предложил обновлять табло только при записи событий (например, нового или удаленного счета). Таким образом, вы можете хранить статические ответы для популярных запросов, таких как Топ-10 и т. Д. Используйте что-то вроде MemCache для хранения данных, кэшированных для запросов, или если вы не можете / не можете установить что-то вроде MemCache на свой сервер, сериализуйте общие запросы и пишите их в плоские файлы, а затем удалить / обновить их при записи событий. Пусть ваш код сначала найдет кэшированный результат (или файл), а затем, если он отсутствует, выполните запрос и создайте данные

0 голосов
/ 21 июня 2010

Чтобы добавить к предложению Джордана : я бы поместил карты показателей в отдельный файл (в формате HTML), который создается каждый раз, когда поступают новые данные, и только потом. Вы можете включить этот файл в страницу PHP, содержащую карту показателей, или даже позволить браузеру посетителя периодически извлекать его, используя XMLHttpRequests (для экономии пропускной способности). Пользователи с отключенным JavaScript или с помощью браузера, который не поддерживает запросы XMLHttp (редко в наши дни, но возможны), просто увидят статическую страницу.

0 голосов
/ 21 июня 2010

Модуль голосования Drupal будет обрабатывать это для вас, давая вам возможность, когда пересчитать. Если вы реализуете это самостоятельно, то кэширование топ-10 где-то является хорошей идеей - вы можете либо регенерировать его через регулярные промежутки времени, либо вы можете аннулировать кеш в определенные моменты. Вам нужно будет посмотреть, как часто люди голосуют, как часто это приводит к изменению 10 лучших страниц, как часто просматриваются 10 лучших страниц и какова производительность, связанная с их восстановлением.

Если вы не используете Drupal / MySQL, CouchDB будет полезен здесь. Вы можете создать представление, которое рассчитывает 10 лучших данных, и оно будет кэшироваться до тех пор, пока не произойдет что-то, что приведет к необходимости пересчета. Вы также можете вставить встроенный прокси-сервер http для кэширования результатов в течение заданного количества минут.

0 голосов
/ 21 июня 2010

Ничего не нужно в реальном времени, когда дело доходит до Интернета.Я бы пошел с вариантом 2 пользователи не заметят, что там оценка не меняется.Вы можете использовать JS, чтобы обновлять топ-10 каждый раз, когда очищается кеш

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...