Получить кэшированные рисунки от Ваших посетителей

12 декабря 2009

Джефф Этвуд ( Coding Horror славы) сидел за ужас, когда он понял, что его сервер упал, и его данные прошла, а какой-то причине, механизм резервного копирования не работал. Полные данные в Coding Horror и блог StackOverflow исчез.

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

Так что же Jeff теперь делать?

После кодирования ужас высокой трафик блога, я думаю, что есть способ вернуть хотя бы часть изображения. (Вероятность этого рабочие во многом зависит от трафика на сайт и немного удачи)

Вот шаги:

  1. Настройка веб-сервера для возврата 304 для каждого изображения запросу. Код статуса HTTP 304 означает, что файл не изменен, а это означает, что браузер будет получать файл из кэша, если он присутствует там. (Кредит: на этой суперпользователя ответ)
  2. В каждой страницы сайта, добавить небольшой скрипт, чтобы сделать снимок данных и отправить его на сервер.
  3. Сохранить изображение данных на сервере.
  4. Преобразование пиксельных данных, чтобы получить оригинальный images.Voila!

Захват изображения данных

Мы собираемся использовать функциональность Картина в HTML 5, чтобы вернуться изображения.

Вот код, вы должны вставить в страницы веб-сайта. Он получает все изображения в текущей страницы, загружает его в HTML Холст, получает пиксельных данных для изображений и отправляет его на сервер через пост Ajax.

Этот сценарий PHP (PHP Можно спасательных Jeff? ;) Чтобы быть справедливым, код серверной части тривиально) сохраняет данные в файлы на сервере. Обратите внимание, что сами файлы не будет изображения, они будут содержать только данные сенсора изображений. В дополнение к этому, мы также сохранения и имя исходного файла, и размеры изображения. Это означает, что мы можем легко восстановить исходное изображение, из этих данных. Данные каждого посетителя сохраняется в отдельный файл, чтобы просто чтобы убедиться, что у вас достаточно избыточности (Следите за своей избыточности заполнения дисков сервера)

Помните, что это доказательство концепции код. Вам придется изменить его для использования в обычных средах производства и получить реальную пользу от него. Есть много ограничений для этого кода. Само собой разумеется, что вы получите изображение данных от пользователей, только если они имеют изображения сохраняться в своих браузерах. Этот сценарий будет работать только в последней версии Chrome, Firefox, Safari, Opera т.д. (не все ожидаем, что он работать в IE в течение следующего десятилетия). В дополнение к этому, помните, что пиксельных данных будет во много раз больше, чем исходный размер файла, и вы, возможно, придется тщательно проанализировать использование дискового пространства данного сценария. (Я думаю, в чрезвычайной ситуации, ни один из них действительно имеет значение).

Вы должны изменить сообщение URL в скрипте чтобы они соответствовали вашим доменным именем.

Наконец, я проверил код и, кажется, работает (для меня, по крайней мере). Необходимо включить в JQuery страниц с помощью этого сценария и помнить, что из-за ограничений по безопасности в браузерах, вам придется поставить все эти файлы под тем же именем домена. Скажите, пожалуйста, Есть любые другие недостатки в коде.

[Updated: код изменения уменьшить размер файла на 50%. Десятичных чисел были преобразованы в шестнадцатеричную и пространства между ними номера удаляются. Размеры файлов могут быть дополнительно уменьшены с помощью полного набора символов.]

19 ответов до сих пор

Написать ответ