Qual é a melhor “formato de arquivo” para salvar completas páginas web (imagens, etc.) em um único arquivo? [fechadas]

StackOverflow https://stackoverflow.com/questions/260058

Pergunta

Eu estou trabalhando em um projeto que armazena imagens individuais e arquivos de texto em um único lugar, como uma cápsula do tempo. Agora, a maioria cada projeto pode ser salva como um arquivo, como DOC, PPT, e ODF. Mas páginas da web completas não pode - eles são salvos como um arquivo HTML separado e pasta de dados. Eu quero salvar uma página web em um único arquivo, e, embora existam várias soluções, não há "padrão". Qual é o melhor formato para arquivos HTML?

  • A Microsoft tem MHTML - basicamente um arquivo codificado exatamente como uma mensagem de email MIME HTML. Já está baseado em um padrão existente, e MHTML como a sua própria foi proposto como rfc2557 . Esta é uma ótima idéia e tem sido em torno de sempre, só que tem sido uma "norma proposta" desde 1999. Além disso, diferentes do IE implementações são apenas pesado. IE e Opera apoiá-lo; Firefox e Safari com uma extensão complicado.

  • A Mozilla tem Mozilla Archive Format - basicamente um arquivo ZIP com a marcação e imagens, com metadados salvos como RDF. É uma idéia incrível - Winamp faz isso para peles, e ODF e OOXML para suas imagens incorporadas. Eu amo este, exceto, 1. Ninguém mais exceto Mozilla usa, 2. A única extensão de suporte não foi atualizado desde Firefox 1.5.

  • Dados URIs estão se tornando mais popular. Em vez de fazer referência a um local externo a la MHTML ou MAF, você codificar o arquivo diretamente para o HTML marcação como base64. Dependendo do seu ponto de vista, é simplificada pois os arquivos são direito , onde a marcação é. Contudo, o apoio ainda é um pouco fraco. Firefox, Opera e Safari apoiá-lo sem gafes; IE, o líder de mercado , só começou a apoiá-lo no IE8, e mesmo assim com limites.

  • Então, naturalmente, há "Salvar página web completa" , onde o HTML de marcação é salvo como "savedpage.html" e os arquivos em uma pasta "savedpage_files" separado. Afaik, todo mundo faz isso. É bem apoiado. Mas ter que lidar com dois elementos separados não é simples e racionalizado em todas . Minhas necessidades do projeto para tê-los em um arquivo único .

Tendo em mente suporte ao navegador e facilidade de edição da página , O que você acha que é a melhor maneira de salvar páginas da web em um único arquivo? O que seria melhor como um "padrão"? Ou devo apenas fivela para baixo e lidar com o arquivo HTML e pasta separada? Por causa do meu projeto, eu poderia apoio isso, mas eu tinha melhor evitá-lo.

Foi útil?

Solução

O meu favorito é o formato ZIP. Porque:

  • É muito bem sutied com a finalidade
  • É bem documentado
  • Há um um monte de implementações disponíveis para a criação ou lê-los
  • Um usuário pode facilmente extrair arquivos individuais, alterá-los e colocá-los novamente no arquivo
  • Quase todos os principais sistemas operacionais (Windows, Mac e mais linux) tem um programa ZIP construído em

As alternativas todos têm alguma falha:

  • Com MHTML, você não pode editar facilmente.
  • Com os dados URI, eu não sei como é difícil a implementação seria. (Com ZIP, mesmo que eu poderia fazê-lo em PHP, 3 anos atrás ...)
  • A opção para guardar coisas como arquivos separados apenas tem demasiadas coisas que poderiam dar errado e estragar o seu arquivo.

Outras dicas

PDFs são suportados em quase todos os navegadores em quase todas as plataformas e armazenar conteúdo e imagens em um único arquivo. Eles podem ser editados com as ferramentas certas. Isso é quase definitivamente não é ideal, mas é uma opção a considerar.

Não é só questão de formato de arquivo. Outra questão crucial é o que exatamente você deseja armazenar ? É:

  1. armazenar página inteira como é com todos os recursos referenciados - imagens, CSS e javascript?

  2. a página de captura, uma vez que foi rendido em algum ponto no tempo; uma estática imagem de algum estado rendeu a página web DOM?

A maioria dos atuais "Salvar página como" funcionalidade no navegador, seja para MAF ou MHTML ou arquivo + dir, tentativas o primeiro caminho. Isto é, em última instância abordagem falho.

Não se esqueça páginas web há dias são bastante aplicações locais, em seguida, um documento estático, você pode facilmente armazenar. Possíveis problemas:

  1. uma página é na verdade várias páginas criar dinamicamente por JS, é necessária a interacção do utilizador para obtê-lo para o estado desejado

  2. aplicações AJAX pode fazer a comunicação remota com um serviço remoto tornando-o inutilizável para visualização off-line.

  3. links ocultos em código JavaScript. Tal recurso não é, então, parte da página armazenada. Mesmo a análise de código JS não pode descobri-los. Você precisa executar o código.

  4. Posição Mesmo de elementos básicos de html podem ser aferidas pode ser calculado dinamicamente JS e nem sempre é possível / fácil para recriá-lo localmente.

  5. Você precisaria de algum tipo de despejo de memória JS e carregar esta página para chegar ao estado desejado você esperava para armazenar

E muitas muitas questões mais ...

Verifique Chrome SingleFile extensão. Ele armazena uma página web para um arquivo html com imagens inlined usando URIs de dados já mencionados. Eu não testei muito, então eu não posso dizer o quão bem ele lida com páginas ajax "voláteis".

Use um arquivo zip.

Você pode sempre fazer um programa / script que extrai o arquivo zip em um diretório temporário e carrega o arquivo index.html no seu browser. Você poderia até usar um arquivo index.ini / txt para especificar o arquivo que deve ser carregado ao extrair.

Basicamente, você quer algo parecido com o formato Mozilla Archive, mas sem a porcaria rdf desnecessárias apenas para especificar o arquivo para carregar.

arquivos MHT são bons, mas eles costumam usar base64 para arquivos incorporar, o que tornará o tamanho do arquivo maior do que deveria ser (URIs de dados são da mesma forma). Você pode adicionar anexos como binário, mas você vai ter que fazer manualmente que com um editor hexadecimal ou criar uma ferramenta e suporte para ele por clientes pode não ser tão bom.

É claro, se você quiser usar o que navegadores gerar, MHT (Opera e IE, pelo menos) poderia ser melhor.

não vejo nenhuma desculpa para usar qualquer coisa diferente de um arquivo zip

Bem, se o suporte ao navegador e facilidade de edição são as maiores preocupações que eu acho que você está preso com a abordagem de arquivo + diretório, a menos que você está disposto a fornecer um editor para o formato de arquivo único e vivo com não muito bom suporte nos navegadores.

Você pode criar um único arquivo, comprimindo o conteúdo. Você também pode criar um diretório pai para facilitar o manuseio.

O problema é que html é bottoms-se não de cima para baixo. Olhe para o seu nome do arquivo que salvou na minha caixa como "Qual é a melhor 'formato de arquivo' para salvar páginas da web completas (imagens, etc.) em um único arquivo -? Stack Overflow.html"

Basta adicionar um '|' e um tem problemas para fazer copiar e colar backups para uma unidade de reposição. No final você acaba. cortar o nome do arquivo, a fim de salvá-lo. Dezenas / talvez centenas de index.html idênticos ou index.php estão bagunçando meus discos.

A solução parcial é escrever você possui CMS e usar scripts para mapear todos os arquivos relevantes para uma base de dados de arquivo simples - e então usar nome de arquivo, tamanho, mtime e md5 para obter uma identificação única para cada arquivo. Criar um índice de arquivo simples permitindo 100k ou 1000k registros. O objetivo é escrever uma vez e usar muitas vezes. Então você precisa de um verdadeiro CMS você precisa de um ID único com base no conteúdo (por exemplo index8765432.html) que vai na sua files_archive. O mesmo vale para os outros. Depois, você pode link simbólico não-destrutiva do HTML original salvo no files_archive e apenas recriar o arquivo usando um script PHP ou alternativa em caso de necessidade. Não sei se ele vai funcionar como eu estou no mesmo ponto você está em - talvez em uma semana vai saber com certeza. A abordagem mais útil é ter uma estrutura de cima para baixo com base no seu tarefas relacionadas negócios ou necessidades pessoais e. Assim, seus arquivos podem ser organizados de cima para baixo, mas os externos até baixo para preservar o conteúdo original. Meu interesse é em serviços Web 3.0 e quanto mais perto você chegar a máquina para a interação máquina maior será a necessidade de estruturar a informação. Talvez tempo para repensar a idéia de agrupar tudo em um único arquivo. Então você tem centenas de main.css por agrupar quando um top down solução pode deixar você modificar um arquivo em vez de centenas de pessoas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top