web-dev-qa-db-ja.com

完全なWebページ(画像など)を単一のアーカイブに保存するための最良の「ファイル形式」は何ですか?

タイムカプセルのように、単一の画像とテキストファイルを1か所に保存するプロジェクトに取り組んでいます。現在、DOC、PPT、ODFなど、ほとんどすべてのプロジェクトを1つのファイルとして保存できます。しかし、完全なWebページはできません-それらは別個のHTMLファイルとデータフォルダーとして保存されます。 Webページを単一のアーカイブに保存したいのですが、いくつかの解決策がありますが、「標準」はありません。 HTMLアーカイブに最適な形式はどれですか?

  • マイクロソフトは [〜#〜] mhtml [〜#〜] -基本的に、MIMEHTML電子メールメッセージとして正確にエンコードされたファイル。これはすでに既存の標準に基づいており、MHTML自体は rfc2557 として提案されました。これは素晴らしいアイデアであり、1999年以来「提案された標準」である以外は、永遠に存在しています。さらに、IE以外の実装は面倒です。 IEおよびOperaサポート; FirefoxとSafariの拡張が面倒です。

  • Mozillaは Mozillaアーカイブ形式 -基本的に、マークアップと画像を含むZipファイルで、メタデータはRDFとして保存されます。これは素晴らしいアイデアです。Winampはスキンに対してこれを行い、ODFとOOXMLは埋め込み画像に対して行います。私はこれが大好きですが、1。Mozilla以外の誰もそれを使用していません。2。それをサポートする唯一の拡張機能はFirefox1.5以降更新されていません。

  • データURI より人気が高まっています。 MHTMLまたはMAFの外部の場所を参照する代わりに、ファイルをbase64としてHTMLマークアップに直接エンコードします。ビューによっては、マークアップがある場所でファイルがrightであるため、合理化されています。ただし、サポートはまだやや弱いです。 Firefox、Opera、およびSafariは、問題なくサポートしています。 マーケットリーダーであるIEは、IE8でのみサポートを開始し、それでも制限がありました。

  • そしてもちろん、 「完全なウェブページを保存する」 ここで、HTMLマークアップは"savedpage.html"として保存され、ファイルは別の"savedpage_files"フォルダーに保存されます。アファイク、誰もがこれをします。それはよくサポートされています。しかし、2つの別々の要素を処理する必要があるのは単純ではなく、allで合理化されています。私のプロジェクトでは、それらを単一のアーカイブに含める必要があります。

ブラウザのサポートページの編集のしやすさWebページを単一のアーカイブに保存するための最良の方法は何だと思いますか?「標準」として最適なものは何ですか?それとも、腰を落ち着けてHTMLファイルと別のフォルダーを処理する必要がありますか?私のプロジェクトのために、私はそれをサポートできましたが、私はそれを避けるのが最善です。

34
Marco

私のお気に入りはZip形式です。理由:

  • それは目的のために非常によく満足しています
  • それは十分に文書化されています
  • それらを作成または読み取るために利用できる実装はたくさんあります
  • ユーザーは簡単に単一のファイルを抽出し、それらを変更してアーカイブに戻すことができます
  • ほとんどすべての主要なオペレーティングシステム(Windows、Mac、およびほとんどのLinux)には、Zipプログラムが組み込まれています。

選択肢にはすべていくつかの欠陥があります。

  • MHTMlでは、簡単に編集することはできません。
  • データURIの場合、実装がどれほど難しいかわかりません。 (Zipを使用すると、3年前にPHPでそれを実行できました...)
  • 物事を別々のファイルとして保存するオプションには、うまくいかず、アーカイブを台無しにする可能性のあるものが多すぎます。
16
Treb

PDFは、ほぼすべてのプラットフォームのほぼすべてのブラウザでサポートされており、コンテンツと画像を1つのファイルに保存します。それらは適切なツールで編集できます。これはほぼ間違いなく理想的ではありませんが、検討するオプションです。

4
Joel Anair

それはファイル形式の問題だけではありません。もう1つの重要な質問は、正確に何を保存するかですか?それは...ですか:

  1. 参照されているすべてのリソース(画像、CSS、JavaScript)を使用して、ページ全体をそのまま保存しますか?

  2. ある時点でレンダリングされたページをキャプチャする。 WebページDOMのレンダリングされた状態の静止画像?

MAF、MHTML、file + dirなど、ブラウザの最新の「名前を付けてページを保存」機能は、最初の方法を試みます。これは最終的に欠陥のあるアプローチです。

Webページは、ローカルアプリケーションであり、簡単に保存できる静的ドキュメントである場合があることを忘れないでください。潜在的な問題:

  1. 実際、1ページはJSによって動的に構築される複数のページであり、目的の状態にするにはユーザーの操作が必要です。

  2. AJAXアプリケーションは、リモートサービスとリモート通信を行うことができるため、オフラインビューで使用できなくなります。

  3. Javascriptコードの隠しリンク。そのようなリソースは、保存されたページの一部ではありません。 JSコードを解析しても、それらを検出できない場合があります。コードを実行する必要があります。

  4. 基本的なhtml要素の位置でさえ再計算される可能性があり、JSによって動的に計算される可能性があり、ローカルで再作成することが常に可能/簡単であるとは限りません。

  5. ページを保存したい状態にするには、何らかのJSメモリダンプが必要であり、これをロードする必要があります。

そして、さらに多くの問題...

チェックChrome SingleFile 拡張子。これは、前述のデータURIを使用してインライン化された画像を含む1つのhtmlファイルにWebページを保存します。あまりテストしていないため、言えません。 「揮発性」のajaxページをどれだけうまく処理できるか。

4
Espinosa

Zipファイルを使用します。

Zipファイルを一時ディレクトリに抽出してブラウザにindex.htmlファイルをロードするプログラム/スクリプトをいつでも作成できます。 index.ini/txtファイルを使用して、抽出時にロードする必要のあるファイルを指定することもできます。

基本的には、Mozilla Archive形式のようなものが必要ですが、ロードするファイルを指定するためだけに不要なrdfがらくたはありません。

MHTファイルは優れていますが、通常はbase64を使用してファイルを埋め込みます。これにより、ファイルサイズが本来よりも大きくなります(データURIは同じ方法です)。添付ファイルをバイナリとして追加することはできますが、16進エディターを使用して手動で追加するか、ツールを作成する必要があり、クライアントによるサポートはそれほど良くない場合があります。

もちろん、ブラウザが生成するものを使用したい場合は、MHT(OperaおよびIE少なくとも))の方が良いかもしれません。

3
Shadow2531

zipファイル以外のものを使用する言い訳はありません

1
Javier

さて、ブラウザのサポートと編集のしやすさが最大の懸念事項である場合、単一のファイル形式のエディタを提供する意思がなく、ブラウザであまりサポートされていない場合を除いて、ファイルとディレクトリのアプローチに固執していると思います。

内容を圧縮することにより、単一のファイルを作成できます。親ディレクトリを作成して、処理を容易にすることもできます。

0
Vinko Vrsalovic