Обновлять страницу PHP каждые 10 секунд - PullRequest
0 голосов
/ 02 мая 2009

Я хотел бы загружать / обновлять определенную страницу каждые 10 секунд для просмотра обновленных данных, извлеченных из базы данных.

Я использовал META для этого

 <META HTTP-EQUIV=Refresh CONTENT='10; URL=livedata.php'>

Но все же я согласен, что мы также делаем это используя:

  • Javascript для загрузки div с помощью settimeout
  • Динамическое обновление Ajax

Было бы замечательно, если бы вы поделились проблемами с производительностью, используя META, динамическое обновление AJAX, время ожидания Javascript. Также поделитесь лучшим способом сделать это.

Примечание. Необходимо обновить всю страницу, а не конкретный кадр или раздел.

Ответы [ 6 ]

4 голосов
/ 02 мая 2009

Использование AJAX наименее навязчиво для пользователя, поскольку пользователь не замечает, что что-то обновляется / перезагружается до тех пор, пока оно не завершится.

Обратите внимание, что AJAX может работать лучше или хуже, чем META, в зависимости от ситуации:

  • Если обновляемые данные малы по отношению к полному размеру страницы HTML, AJAX лучше, чем META, потому что с AJAX вы можете отправлять только разницу данных и / или вы можете отправлять данные в более компактном формате, чем HTML .
  • Запуск JavaScript накладывает бремя на браузер пользователя. Если у пользователя открыто 20 вкладок (что не редкость), и каждая из них запускает некоторый setTimeout в фоновом режиме, это может иметь огромное значение для отзывчивости браузера, чтобы преобразовать все из них в обновление без JavaScript.
2 голосов
/ 16 мая 2009

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

также, если вы используете Ajax, то дисплей будет лучше, потому что вы не видите, что вся страница гаснет и перерисовывается снова и снова.

2 голосов
/ 02 мая 2009

Если вы планируете обновить всю страницу, использование тегов <META> - самый чистый способ. Просто кажется неудобным иметь таймер JS, обновляющий вашу страницу, когда у вас есть полностью поддерживаемый способ сделать это только для HTML.

Однако, если вам просто нужно обновить определенную часть страницы, используйте AJAX. Это лучше с точки зрения пользовательского опыта, а также производительности.

1 голос
/ 16 мая 2009

обратите внимание, что вы также можете использовать header () в PHP, чтобы выполнить то же, что и метатег. Просто убедитесь, что вы делаете вызов header () перед другим выводом.

1 голос
/ 16 мая 2009

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

Для меня большая разница в использовании сервера. Если у вас есть 100 пользователей, обновляющихся каждые 10 секунд, это уже около 10 запросов в секунду. В зависимости от логики, которую вы должны создать страницу (которая, вероятно, динамична), это может привести к стремительному росту использования сервера. Убедитесь, что вы осторожны с этим.

0 голосов
/ 02 мая 2009

С помощью jQuery вы можете сделать это):

var seconds = 10;
var id = setInterval(function()
{
     $('#container').load('whatever.php');
}, 1000*seconds);

:)

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