¿Cuál es el mejor "formato de archivo" para guardar páginas web completas (imágenes, etc.) en un solo archivo? [cerrado]

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

Pregunta

Estoy trabajando en un proyecto que almacena imágenes individuales y archivos de texto en un solo lugar, como una cápsula del tiempo. Ahora, la mayoría de los proyectos se pueden guardar como un archivo, como DOC, PPT y ODF. Pero las páginas web completas no se pueden : se guardan como un archivo HTML y una carpeta de datos separados. Quiero guardar una página web en un único archivo, y si bien hay varias soluciones, no hay un "estándar". ¿Cuál es el mejor formato para archivos HTML?

  • Microsoft tiene MHTML , básicamente un archivo codificado exactamente como un mensaje de correo electrónico HTML MIME. Ya se basa en un estándar existente, y MHTML como propio se propuso como rfc2557 . Esta es una gran idea y ha existido desde siempre, excepto que ha sido un estándar propuesto. desde 1999. Además, las implementaciones que no sean IE son simplemente engorrosas. IE y Opera lo admiten; Firefox y Safari con una extensión engorrosa.

  • Mozilla tiene Mozilla Archive Format : básicamente, un archivo ZIP con el marcado y las imágenes, con metadatos guardados como RDF. Es una idea increíble: Winamp hace esto para máscaras, y ODF y OOXML para sus imágenes incrustadas. Me encanta, excepto, 1. Nadie más que Mozilla lo usa, 2. La única extensión que lo admite no se actualizó desde Firefox 1.5.

  • URI de datos se están volviendo más populares. En lugar de hacer referencia a una ubicación externa a la MHTML o MAF, codifica el archivo directamente en el marcado HTML como base64. Dependiendo de su vista, se optimiza ya que los archivos están justo donde está el marcado. Sin embargo, el soporte sigue siendo algo débil. Firefox, Opera y Safari lo admiten sin fallas; IE, el líder del mercado , solo comenzó a admitirlo en IE8, e incluso entonces con límites.

  • Entonces, por supuesto, hay " Guardar página web completa " donde el marcado HTML se guarda como " savedpage.html " y los archivos en un archivo separado Carpeta " savedpage_files " . Afaik, todos hacen esto. Está bien apoyado. Pero tener que manejar dos elementos separados no es simple y simplificado en todos . Mi proyecto necesita tenerlos en un archivo único .

Teniendo en cuenta el soporte del navegador y la facilidad de edición de la página , ¿cuál crees que es la mejor manera de guardar páginas web en un solo archivo? ¿Qué sería mejor como un "estándar"? ¿O debería simplemente abrocharme y lidiar con el archivo HTML y la carpeta separada? Por el bien de mi proyecto, podría apoyar eso, pero sería mejor evitarlo.

¿Fue útil?

Solución

Mi favorito es el formato ZIP. Porque:

  • Está muy bien suturado para este propósito
  • Está bien documentado
  • Hay muchas implementaciones disponibles para crearlas o leerlas
  • Un usuario puede extraer fácilmente archivos individuales, cambiarlos y volver a colocarlos en el archivo
  • Casi todos los principales sistemas operativos (Windows, Mac y la mayoría de Linux) tienen un programa ZIP incorporado

Las alternativas tienen algunas fallas:

  • Con MHTMl, no puede editar fácilmente.
  • Con los URI de datos, no sé lo difícil que sería la implementación. (Con ZIP, incluso podría hacerlo en PHP, hace 3 años ...)
  • La opción de almacenar cosas como archivos separados simplemente tiene demasiadas cosas que podrían salir mal y arruinar su archivo.

Otros consejos

Los archivos PDF son compatibles con casi todos los navegadores en casi todas las plataformas y almacenan contenido e imágenes en un solo archivo. Se pueden editar con las herramientas adecuadas. Esto definitivamente no es ideal, pero es una opción a considerar.

No se trata solo del formato de archivo. Otra pregunta crucial es ¿qué es exactamente lo que quieres almacenar? ¿Es:

  1. almacena toda la página tal como está con todos los recursos referenciados: imágenes, CSS y javascript?

  2. para capturar la página tal como se procesó en algún momento; una estática imagen de algún estado procesado de la página web DOM?

La página de guardado más actual como " funcionalidad en el navegador, ya sea para MAF o MHTML o file + dir, intenta la primera manera. Este es en última instancia un enfoque defectuoso.

No olvide que las páginas web son días más bien aplicaciones locales que un documento estático que puede almacenar fácilmente. Posibles problemas:

  1. una página es, de hecho, varias páginas construidas dinámicamente por JS, se necesita la interacción del usuario para llevarlo al estado deseado

  2. Las aplicaciones AJAX pueden hacer comunicación remota con un servicio remoto que lo presta inutilizable para ver fuera de línea.

  3. Enlaces ocultos en código javascript. Dicho recurso no forma parte de la página almacenada. Incluso el análisis del código JS puede no descubrirlos. Necesita ejecutar el código.

  4. Incluso la posición de los elementos html básicos puede ser recalculada puede ser calculada dinámicamente por JS y no siempre es posible / fácil recrearlo localmente.

  5. Necesitaría algún tipo de volcado de memoria JS y cargarlo para obtener la página al estado deseado esperaba almacenar

Y muchos más problemas ...

Compruebe Chrome extensión SingleFile . Almacena una página web en un archivo html con imágenes en línea utilizando los URI de datos ya mencionados. No lo he probado mucho, así que no puedo decir qué tan bien se maneja "volátil" páginas ajax.

Use un archivo zip.

Siempre puede crear un programa / script que extraiga el archivo zip en un directorio temporal y cargue el archivo index.html en su navegador. Incluso podría usar un archivo index.ini / txt para especificar el archivo que se debe cargar al extraer.

Básicamente, desea algo como el formato Mozilla Archive, pero sin la basura rdf innecesaria solo para especificar qué archivo cargar.

Los archivos MHT son buenos, pero generalmente usan base64 para incrustar archivos, lo que hará que el tamaño del archivo sea más grande de lo que debería ser (los URI de datos son de la misma manera). Puede agregar archivos adjuntos como binarios, pero tendrá que hacerlo manualmente con un editor hexadecimal o crear una herramienta y el soporte para los clientes podría no ser tan bueno.

Por supuesto, si desea utilizar lo que generan los navegadores, MHT (Opera e IE al menos) podría ser mejor.

no veo ninguna excusa para usar otra cosa que no sea un archivo zip

Bueno, si el soporte del navegador y la facilidad de edición son las principales preocupaciones, creo que está atrapado con el enfoque de archivo + directorio a menos que esté dispuesto a proporcionar un editor para el formato de archivo único y vivir con un soporte no muy bueno en los navegadores.

Puede crear un solo archivo comprimiendo el contenido. También puede crear un directorio principal para facilitar el manejo.

El problema es que html es de abajo hacia arriba, no de arriba hacia abajo. Mire el nombre de su archivo que se guardó en mi caja como "Cuál es el mejor" formato de archivo "" para guardar páginas web completas (imágenes, etc.) en un solo archivo? - Stack Overflow.html "

Simplemente agregue un '|' y uno tiene problemas para copiar y pegar copias de seguridad en una unidad de repuesto. Al final terminas. cortar el nombre del archivo para guardarlo. Docenas / quizás cientos de index.html o index.php idénticos están abarrotando mis unidades.

La solución parcial es escribir su propio CMS y usar secuencias de comandos para asignar todos los archivos relevantes a una base de datos de archivos planos; luego use fileName, size, mtime y md5 para obtener una identificación única para cada archivo. Cree un índice de archivo plano que permita registros de 100k o 1000k. El objetivo es escribir una vez y usar muchas veces. Por lo tanto, necesita un CMS real, necesita una identificación única basada en el contenido (por ejemplo, index8765432.html) que va en su archivo_archivo. Lo mismo para los demás. Luego, puede hacer un enlace simbólico no destructivo desde el html original guardado a files_archive y simplemente recrear el archivo usando un php o un script alternativo si es necesario. No sé si funcionará, ya que estoy en el mismo punto en el que estás, tal vez en una semana lo sabrás con seguridad. El enfoque más útil es tener una estructura de arriba hacia abajo basada en sus necesidades comerciales o personales y tareas relacionadas. Por lo tanto, es posible que sus archivos estén organizados de arriba hacia abajo, pero los externos de abajo hacia arriba para preservar el contenido original. Mi interés está en los servicios Web 3.0 y cuanto más se acerque a la interacción máquina a máquina, mayor será la necesidad de estructurar la información. Tal vez es hora de repensar la idea de agrupar todo en un solo archivo. Entonces tiene cientos de main.css por qué agruparse cuando una solución de arriba hacia abajo podría permitirle modificar un archivo en lugar de cientos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top