Какой подход применить для обновления времени на сайте?
Здравствуйте. Необходимо реализовать поддержку нескольких часов на сайте 10+- с разными часовыми поясами. Как это лучше сделать ?
-- Идея №1 Каждую секунду через Ajax получать всё время для каждого часового пояса и обновлять соответствующие div'ы. Но если будет много клиентов , это же очень тяжело будет серверу получать ежесекундные запросы от каждого клиента.
-- Идея №2 Первоначально загрузив страницу получить время для каждого часового пояса и потом только прибавлять ежесекундно по 1 секунде к каждому времени через Js (setIntervals). Да вычисления будут выполняться на стороне клиента и снимет нагрузку с сервера, но если код будет выполнятся везде по разному, скажем больше секунды, то время по факту будет отставать.
-- Идея №3 На данный момент самая непонятная , есть различные реализации "постоянных подключений" к серверу.(polling,long-poll) comet и всё тому подобное. По сути реализует в себе Идею №1 и по этому не очень нравиться.
-- Идея №4 Использовать webSocket , да поддерживаться в относительно новых браузерах и это минус (хотя всё равно если честно всё что ниже IE 10 ) . Однако ещё один толстый минус, читал вроде как у этого функционала были проблемы с безопасностью (старые статьи возможно) и по этому webSocket отключены по умолчанию в некоторых браузерах, таких как Opera & Mozilla, кто что знает на этот счёт?
Собсна сам вопрос, как подступиться , чтобы не тратить время зря на заведомо неудачный вариант?
Т.е. брать время у клиента и узнавать в каком часовом поясе оно и от него уже +- другие пояса отражать, просто время может быть не верное , а часовой пояс стоять другой или нет ?
Kekoc: Какая разница правильное или нет? Главное, что секунды у него меняются правильно. Просто плюсуйте к нему/отнимайте от него необходимое количество секунд до нужного часового пояса.
Первый раз формируете правильное время во всех нужных часовых поясах на сервере. Передаете эти значения клиенту. От каждого отнимаете время клиента - получаете таблицу корректировок.
Ну или иначе. Берете свое эталонное время на сервере, передаете ее клиенту, у него высчитываете погрешность/ошибку времени и прибавляете ее ко всей таблице Ваших часовых поясов, которая построена к эталонному времени.
Да действительно хорошая идея сравнить на сколько отличается время на клиенте от времени на сервере,а затем с учётом погрешности считать уже с клиента, спасибо!
Комбинируйте варианты 1 и 2.
Обновление по ajax раз в минуту, а остальное время просто добавляйте по 1 секунде.
Время будет точным и нагрузка на сервер снизится соответственно.