Какой формат файла лучше всего подходит для сохранения полных веб-страниц (изображений и т. д.) в одном архиве?

Я работаю над проектом, в котором отдельные изображения и текстовые файлы хранятся в одном месте, как капсула времени. Теперь почти каждый проект можно сохранить в виде одного файла, например, DOC, PPT и ODF. Но полные веб-страницы не могут — они сохраняются как отдельный HTML-файл и папка с данными. Я хочу сохранить веб-страницу в одном архиве, и хотя существует несколько решений, "стандартного" не существует. Какой формат лучше всего подходит для HTML-архивов?

  • У Microsoft есть MHTML — файл, закодированный точно как MIME HTML. сообщение электронной почты. Он уже основан на существующем стандарте, а собственный MHTML был предложен как rfc2557. Это отличная идея, и она существовала всегда, за исключением того, что она была «предложенным стандартом» с 1999 года. Кроме того, реализации, отличные от IE, просто громоздки. IE и Opera поддерживают его; Firefox и Safari с громоздким расширением.

  • В Mozilla есть формат архива Mozilla — в основном ZIP-файл с разметкой и изображениями, с метаданными, сохраненными в формате RDF. Это потрясающая идея — Winamp делает это для скинов, а ODF и OOXML — для встроенных изображений. Мне это нравится, за исключением того, что: 1. Никто, кроме Mozilla, не использует его, 2. Единственное расширение, поддерживающее его, не обновлялось с Firefox 1.5.

  • URI данных становятся все более популярными. Вместо ссылки на внешнее местоположение в стиле MHTML или MAF вы кодируете файл прямо в разметке HTML как base64. В зависимости от вашего представления это упрощается, поскольку файлы находятся правильно там, где есть разметка. Тем не менее, поддержка все еще несколько слаба. Firefox, Opera и Safari поддерживают его без ошибок; IE, лидер рынка, начал поддерживать его только в IE8, да и то с ограничениями.

  • Затем, конечно, есть "Сохранить всю веб-страницу", где HTML-разметка сохраняется как "savedpage.html", а файлы — в отдельной папке "savedpage_files". Афаик, все так делают. Он хорошо поддерживается. Но работать с двумя отдельными элементами непросто и всегда проще. В моем проекте они должны быть в едином архиве.

Принимая во внимание поддержку браузера и простоту редактирования страницы, как вы думаете, какой лучший способ сохранить веб-страницы в одном архиве? Что? будет лучше в качестве "стандарта"? Или я должен просто пристегнуться и разобраться с файлом HTML и отдельной папкой? Ради моего проекта я мог бы это поддержать, но лучше этого избегать.


person Marco    schedule 03.11.2008    source источник
comment
Спасибо за ответы! Это действительно воняет, что нет стандарта, и его действительно нужно разработать. PDF подходит ближе всего, поскольку это широко поддерживаемый формат, но ZIP является хорошим выбором из-за его превосходной редактируемости. Браузеры действительно должны поддерживать ZIP-файлы imo, но до тех пор я могу использовать оба решения!   -  person Marco    schedule 04.11.2008
comment
MAFF основан на обычном формате ZIP с index.html в качестве точки входа для браузеров, чтобы распознать начальную страницу. Проверьте это: maf.mozdev.org/maff-file-format.html   -  person dns    schedule 24.02.2015
comment
Похоже, что ситуация все та же. Я хочу перейти с офисных документов на html документы, где необходима интерактивность. Я ищу решение, чтобы все в одном файле. Поскольку html5 позволяет использовать автономные веб-приложения, это может быть решением, которое может помочь и здесь. Что вы думаете? Автономный HTML: Создание автономных веб-приложений HTML5 и Учебное пособие. Как создать автономное веб-приложение HTML5 в стиле FT   -  person Stefan    schedule 06.09.2018


Ответы (7)


Мой любимый формат ZIP. Так как:

  • Это очень хорошо подходит для этой цели
  • Это хорошо задокументировано
  • Доступно множество реализаций для их создания или чтения.
  • Пользователь может легко извлечь отдельные файлы, изменить их и вернуть обратно в архив.
  • Почти каждая основная операционная система (Windows, Mac и большинство Linux) имеет встроенную программу ZIP.

Все альтернативы имеют некоторые недостатки:

  • С MHTMl вы не можете легко редактировать.
  • С данными URI я не знаю, насколько сложной будет реализация. (С ZIP даже я мог сделать это на PHP 3 года назад...)
  • Возможность хранить вещи в виде отдельных файлов имеет слишком много вещей, которые могут пойти не так и испортить ваш архив.
person Treb    schedule 03.11.2008
comment
Отличный совет, эти предложения указывают мне правильное направление. Спасибо! - person Marco; 04.11.2008
comment
Просто любопытно, под ZIP вы имели в виду автономный ZIP или формат архива Mozilla на основе ZIP? - person cavalcade; 17.12.2015

PDF-файлы поддерживаются почти во всех браузерах практически на всех платформах и хранят содержимое и изображения в одном файле. Их можно редактировать с помощью правильных инструментов. Это почти определенно не идеально, но это вариант для рассмотрения.

person Joel Anair    schedule 03.11.2008
comment
ДУХ! Почему я не подумал об этом? Да, PDF используется всеми и их мамами для обмена документами. Нелегко редактировать без инструментов, но важнее поддержка браузера. «Особенно, если я объединил PDF с другим решением, это оказалось идеальным. Спасибо! - person Marco; 04.11.2008

Дело не только в формате файла. Еще один важный вопрос: что именно вы хотите хранить? Это:

  1. хранить всю страницу как есть со всеми упомянутыми ресурсами - изображениями, CSS и javascript?

  2. захватить страницу в том виде, в каком она была отображена в какой-то момент времени; статическое изображение некоторого отображаемого состояния веб-страницы DOM?

Большинство современных функций «сохранить страницу как» в браузере, будь то MAF, MHTML или файл + каталог, пытаются использовать первый способ. Это в конечном счете ошибочный подход.

Не забывайте, что в наши дни веб-страницы — это скорее локальные приложения, чем статический документ, который вы можете легко сохранить. Возможные проблемы:

  1. одна страница на самом деле представляет собой несколько страниц, динамически создаваемых JS, требуется взаимодействие с пользователем, чтобы привести ее в желаемое состояние.

  2. Приложения AJAX могут осуществлять удаленную связь с удаленной службой, что делает ее непригодной для автономного просмотра.

  3. Скрытые ссылки в коде javascript. Тогда такой ресурс не является частью сохраненной страницы. Даже синтаксический анализ кода JS может их не обнаружить. Вам нужно запустить код.

  4. Даже положение основных элементов html может быть пересчитано, может быть вычислено динамически JS, и не всегда возможно/легко воссоздать его локально.

  5. Вам понадобится какой-то дамп памяти JS и загрузите его, чтобы привести страницу в желаемое состояние, которое вы надеялись сохранить.

И много-много других вопросов...

Проверьте расширение Chrome SingleFile. Он хранит веб-страницу в одном html-файле с изображениями, встроенными с использованием уже упомянутых URI данных. Я мало тестировал его, поэтому не могу сказать, насколько хорошо он обрабатывает «изменчивые» страницы ajax.

person Espinosa    schedule 21.04.2013

Используйте zip-файл.

Вы всегда можете создать программу/скрипт, которая извлекает zip-файл во временный каталог и загружает файл index.html в ваш браузер. Вы даже можете использовать файл index.ini/txt, чтобы указать файл, который должен быть загружен при извлечении.

По сути, вам нужно что-то вроде формата архива Mozilla, но без ненужной хрени rdf, чтобы просто указать, какой файл загружать.

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

Конечно, если вы хотите использовать то, что генерируют браузеры, MHT (по крайней мере, Opera и IE) может быть лучше.

person Shadow2531    schedule 03.11.2008
comment
Очень креативный ответ. Вы очень правильно используете ZIP-файл, а затем извлекаете его во временный каталог для моего проекта. Я мог бы в конечном итоге сделать это. Хороший совет и по другим форматам. Спасибо! - person Marco; 04.11.2008
comment
В зависимости от внедрения вам, возможно, даже не придется извлекать его во временный каталог, я знаю, что в PHP я могу напрямую читать содержимое ZIP на лету, поэтому мне не придется извлекать во временный файл, однако это увеличит Немного загружает процессор. - person UnkwnTech; 02.12.2008

я не вижу оправдания для использования чего-либо, кроме zip-файла

person Javier    schedule 03.11.2008
comment
Я согласен, и мне нравится, как вы это говорите ;-) - person Treb; 04.11.2008

Что ж, если поддержка браузера и простота редактирования являются самыми большими проблемами, я думаю, вы застряли с подходом «файл + каталог», если только вы не готовы предоставить редактор для одного формата файла и жить с не очень хорошей поддержкой в ​​браузерах.

Вы можете создать один файл, сжав содержимое. Вы также можете создать родительский каталог для облегчения работы.

person Vinko Vrsalovic    schedule 03.11.2008

Проблема в том, что html идет снизу вверх, а не сверху вниз. Посмотрите на имя вашего файла, которое сохранено в моем ящике, как «Какой лучший« формат файла »для сохранения полных веб-страниц (изображений и т. Д.) В одном архиве? - Stack Overflow.html»

Просто добавьте '|' и у кого-то возникают проблемы с копированием и вставкой резервных копий на запасной диск. В конце концов вы кончите. вырезание имени файла для его сохранения. Десятки или даже сотни одинаковых файлов index.html или index.php загромождают мои диски.

Частичное решение состоит в том, чтобы написать собственную CMS и использовать сценарии для сопоставления всех соответствующих файлов с базой данных плоских файлов, а затем использовать имя файла, размер, mtime и md5, чтобы получить уникальный идентификатор для каждого файла. Создайте индекс плоского файла, разрешающий 100 или 1000 тысяч записей. Цель состоит в том, чтобы написать один раз и использовать много раз. Итак, вам нужна настоящая CMS, вам нужен уникальный идентификатор, основанный на содержимом (например, index8765432.html), который находится в вашем files_archive. То же самое для других. Затем вы можете неразрушающим образом создать символическую ссылку из сохраненного исходного html в files_archive и просто воссоздать файл, используя php или альтернативный скрипт, если это необходимо. Не знаю, сработает ли это, поскольку я нахожусь в той же точке, что и вы - может быть, через неделю будет точно известно. Более полезный подход состоит в том, чтобы иметь структуру сверху вниз, основанную на ваших деловых или личных потребностях и связанных с ними задачах. Таким образом, ваши файлы могут быть организованы сверху вниз, а внешние — снизу вверх, чтобы сохранить исходное содержимое. Меня интересуют сервисы Web 3.0, и чем ближе вы подходите к взаимодействию между машинами, тем больше потребность в структурировании информации. Возможно, пришло время переосмыслить идею объединения всего в один файл. Таким образом, у вас есть сотни main.css, зачем объединять, когда решение сверху вниз может позволить вам изменить один файл вместо сотен.

person Devon Carter    schedule 21.10.2015