Есть сайт, на котором можно ввести название и появится это видео и можно смотреть его, есть у него айди. Стоит задача такая: реализовать недавно просмотренные видео, сохраняя последнее время просмотра, дабы после возвращения на сайт можно было не искать момент где закончил смотреть и какие видео я смотрел.
Все это насколько я понимаю, нужно хранить в LocalStorage, тк регистрации на сайте нет. При открытие видео, нужно запускать секундный таймер и каждый раз перезаписывать данные в LocalStorage.
Но, я думаю это кастыль, запускать таймер секундный. Как правильно такое вообще реализовать?
Если регистрации не будет, то выбор небольшой - куки,локалстор, indexedDB. Для твоей задачи подходит локальное хранилище. По поводу же таймера - да будет работать, я бы что-то такое и делал. Только лучше сделать это через какой-нибудь сервис-воркер, чтобы наверняка браузер не "потушил" этот отсчет.
Наверное не сильно правильно записывать каждую секунду в LocalStorage, правильно было бы каждые 10-20 сек. делать запись, а еще правильнее было бы реагировать на разные события и тогда делать записи, например, закрытие страницы, смена страницы, смена видео, клик в не области видео. Но тут как ты видишь много вариантов, и много случаев, которые все навряд ли предусмотреть, так что я бы остановился на записи каждые 10-20 сек, банально проще)
на сколько мне известно, ютуб не секунда-в-секунду сохраняет последнее время просмотра, а с небольшой задержкой, а значит, если говорить о банальном, у ютуба есть таймер на каждые 10 секунд, где он заносит данные в бд с текущей меткой времени, на которой находится плеер.
upd. Конечно у этого метода есть и минусы - частая работа с бд, особенно если видео одновременно будет смотреть 100+ человек, то это в моменте может быть, грубо говоря, 100+ запросов к бд. Но оптимизация - это уже другой вопрос
Uno, а я и не отказывался от подобных вашим методам. Реализовать можно по разному. Если есть буферизация ролика, которая подгружает его небольшой кусок, то можно и во время подгрузки сохранять текущую метку. Там разница до нескольких минут будет, что тоже не особо критично