#javascript #jquery #ajax
#javascript #jquery #ajax
Вопрос:
Я создал часы реального времени, которые обновляются каждую секунду. Когда я запускаю его локально, я не вижу ошибок. Однако, когда я загрузил его на свой веб-хост, я видел много сообщений об ошибках в консоли при каждом запуске AJAX-кода.
Я думаю, именно по этой причине веб-хост приостановил работу моего сайта, сообщив, что мой сайт выполнил слишком много запросов.
Вот мой код:
$(document).ready(function() {
setInterval(function() {
$('#time').load('timewithdate.php')
}, 1000);
setInterval(function(){
$('#time2').load('time.php')
}, 1000);
})
Комментарии:
1. Что, если я удалю второй запрос времени? Будет ли ошибка?
2. Да, но это займет больше времени. Вам не следует повторно опрашивать сервер отчасти потому, что в конечном итоге вы столкнетесь с одной и той же проблемой, а отчасти потому, что более эффективно создать таймер обратного отсчета на стороне клиента без необходимости тратить ресурсы сервера.
Ответ №1:
Я не уверен, какой ответ вы ищете. Ваш код — это определенный способ убить сервер: он выполняет 2 вызова на сервер каждую секунду для каждого клиента (подробнее о DDOS). Нет необходимости вызывать сервер, просто используйте javascript, чтобы получить текущее время и отформатировать его так, как вы хотите. У вас может быть что-то вроде этого:
$(document).ready(function() {
setInterval(function() {
let curTime = new Date();
let date = curTime.toLocaleDateString();
let time = curTime.toLocaleTimeString();
$('#time').text(date " " time);
$('#time2').text(time);
}, 1000);
})
Ответ №2:
Ошибка заключается в том, что вы фактически подвергли DDOS-атаке свой собственный сервер с 2 запросами каждую секунду * количество одновременных клиентов. Я бы настоятельно рекомендовал вам удалить эти AJAX-запросы и выполнить обратный отсчет на стороне клиента.
Если вы пытаетесь синхронизировать часы со временем сервера, получите время с сервера при загрузке страницы, а затем добавьте к нему секунды на стороне клиента. Не используйте AJAX для этого и не используйте AJAX-опрос в будущем. Это анти-шаблон.
Комментарии:
1. выполните обратный отсчет на стороне сервера -> Конечно, вы имели в виду «на стороне клиента»
2. Хорошо, как бы мне выполнить это на стороне сервера, я использую PHP для этого. Я хочу автоматически обновлять время каждую секунду. Спасибо.
3. Вы этого не делаете; в этом весь смысл. Сделайте это на клиенте. Если вам абсолютно необходимо синхронизировать время клиента и сервера, изучите websockets, но это будет смена парадигмы с точки зрения того, как должна быть структурирована логика вашего сайта.