Юзерпики на «Яндекс.Фотках»
Вчера в Татарстане был выходной, поэтому пока мы ехали на машине за город, я сделал заготовку для хранения юзерпиков на «Яндекс.Фотках», а вечером её доделал. Сейчас все юзерпики в фоне переливаются туда в порядке запроса пользователем в закрытый альбом специального пользователя, которого я завёл.
До этого юзерпики по сложным правилам (с использование адреса почты из SRE OpenID или vCard, favatar, gravatar, pavatar, юзерпиков из «Ярушки» и ЖЖ и т. д.) получались для каждого человека в комментариях и загружались каждый раз с совершенно разношёрстных ресурсов.
Это было плохо по трём причинам. Во-первых, они были все разного размера и приводились к моим 40×40 браузером, то есть пользователи грузили лишние килобайты. Во-вторых, частенько канал до сайта с каким-либо юзерпиком был плох и загружалось с него всё медленно, а то и вообще не загружалось. В-третьих, юзерпики иногда пропадают (сайты закрываются, пользователи их меняют), поэтому вместо картинок в старых заметках иногда зияли дыры.
Есть и четвёртая причина, не знаю насколько она значимая. Некоторые юзерпики (побайтно) повторяются, но так как браузер не знает, что с двух разных УРЛов грузится та же картинка, он грузит её два раза. У меня сейчас не так — я хеширую картинку и по хешу ищу совпадение. Есть вероятность совпадения хеша, но юзерпики не слишком-то важные данные, чтобы бояться коллизий.
Сейчас юзерпики грузятся только в фоне, то есть какое-то время он грузится с «настоящего» адреса и только через какое-то время — с «Яндекс.Фоток». Так как запросов в стеке пока очень много (сейчас загружено 779 картинок и их число растёт очень быстро), процесс перекладывания может растянуться на часы. В будущем, когда бо́льшая часть будет уже лежать на «Фотках», этот процесс сократится до минут.
Очевидный вопрос, а как сделана инвалидация?
Комментарий для alexeyten.ya.ru:
По времени. Пока я не сделал её, но время обновления храню.
А сервер подобные ухищрения не сильно нагружают?
Комментарий для www.orcinus.ru:
Перекладывание юзерпика? Там одно IO, масштабирование быстро делается, я отвергаю слишком большие юзерпики.
Комментарий для Евгения Степанищева:
Комментарий для praeivis.lt:
Очень хотим детей, да. Но я очень надеюсь, что и временя на хобби останется.
1252 юзерпика пока. Интересно, где там предел?
Да, я тоже так думал... пока не родились 2 девочки. Времени больше нет! Счетаю теперь месяцы, когда им будет хотябы пару лет, может тогда чуть легче станет. Хотя и в этом тоже уже сомнения пошли видя как мучаются друзья с одним-двухгодовалым-ребёнком.
В целом из профессионального интереса, а как работает скрипт для конвертации? Пользуетесь аналогом celery (rabbitmq worker’а) для PHP? Или простой иттерацией?
Комментарий для companyowner.myopenid.com:
У моих друзей было заметно изменение в жизни, но не всё так плохо. Они, например, объездили с ней всю Европу.
Комментарий для http://about.me/rembish:
Всё очень просто: в файл кладутся строчки заданий, вынимаются первые. Чего там городить-то? :)
Комментарий для Евгения Степанищева:
А файл с заданиями один? Ты его блокируешь на запись при удалении выполненных заданий и добавлении новых? Если каждое задание делать в отдельном файле с уникальным именем, блокировать не надо будет,а воркер будет вместо чтения и удаления строк листить и удалять файлы.
Мы тоже планируем отпуск, но без детей — иначе это не отпуск будет. А на счёт не всё так плохо... по вечерам я любил позаниматься research & development, изучать что-то новенькое, какие-то технологии поковырять; всё именно то, что ты сейчас делаешь. После рождения детей с трудом хватает время на разгребание рутины по делам компании. Про хобби вообще забыл (занимался бегом, играл на фано, читал книги). Ты не подумай, дети забирают очень много и в замен дают не меньше, но готовься к конкретным переменам в жизни, когда будешь ценить каждую секунду свободного времени. :)
Комментарий для desh:
Да не, мне такие сложности-то ни к чему. Время ожидания у фоновых задач ничтожно. По крайней мере сейчас.
Комментарий для companyowner.myopenid.com:
Если честно, мне всё равно :) Хочу детей :)
Комментарий для Евгения Степанищева:
от собственно детей тоже многое зависит :)
Комментарий для zg.livejournal.com:
Да уж :)