Qual è il miglior formato di file & # 8220; & # 8221; per salvare pagine Web complete (immagini, ecc.) in un singolo archivio? [chiuso]

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

Domanda

Sto lavorando a un progetto che memorizza singole immagini e file di testo in un unico posto, come una capsula del tempo. Ora, quasi tutti i progetti possono essere salvati come un unico file, come DOC, PPT e ODF. Ma le pagine web complete non possono : vengono salvate come file HTML e cartella dati separati. Voglio salvare una pagina Web in un singolo archivio e, sebbene esistano diverse soluzioni, non esiste uno "standard". Qual è il formato migliore per gli archivi HTML?

  • Microsoft ha MHTML - sostanzialmente un file codificato esattamente come un messaggio di posta elettronica HTML MIME. È già basato su uno standard esistente e MHTML come suo è stato proposto come rfc2557 . Questa è un'ottima idea ed è in circolazione da sempre, tranne per il fatto che è stato uno "standard proposto" dal 1999. Inoltre, implementazioni diverse da IE sono solo ingombranti. IE e Opera lo supportano; Firefox e Safari con un'estensione ingombrante.

  • Mozilla ha Formato archivio Mozilla - sostanzialmente un file ZIP con il markup e le immagini, con metadati salvati come RDF. È un'idea fantastica: Winamp lo fa per le skin e ODF e OOXML per le loro immagini incorporate. Adoro questo, tranne: 1. Nessun altro tranne Mozilla lo usa, 2. L'unica estensione che lo supporta non è stata aggiornata da Firefox 1.5.

  • URI dei dati stanno diventando sempre più popolari. Invece di fare riferimento a una posizione esterna come MHTML o MAF, si codifica il file direttamente nel markup HTML come base64. A seconda della vista, è ottimizzato poiché i file sono corretti dove si trova il markup. Tuttavia, il supporto è ancora piuttosto debole. Firefox, Opera e Safari lo supportano senza problemi; IE, il leader di mercato , ha iniziato a supportarlo solo su IE8, e anche allora con dei limiti.

  • Quindi ovviamente c'è " Salva pagina web completa " dove il markup HTML viene salvato come " savedpage.html " e i file in un separato Cartella " savepage_files " . Sì, tutti lo fanno. È ben supportato. Ma dover gestire due elementi separati non è semplice e ottimizzato in tutto . Il mio progetto deve averli in un archivio singolo .

Ricordando supporto del browser e facilità di modifica della pagina , quale pensi sia il modo migliore per salvare le pagine Web in un singolo archivio? Quale sarebbe meglio come "standard"? O dovrei semplicemente allacciarmi e occuparmi del file HTML e della cartella separata? Per il bene del mio progetto, potrei supportarlo, ma è meglio evitarlo.

È stato utile?

Soluzione

Il mio preferito è il formato ZIP. Perché:

  • È molto ben sfruttato allo scopo
  • È ben documentato
  • Sono disponibili molte implementazioni per crearle o leggerle
  • Un utente può facilmente estrarre singoli file, modificarli e rimetterli nell'archivio
  • Quasi tutti i principali sistemi operativi (Windows, Mac e la maggior parte di Linux) hanno un programma ZIP incorporato

Le alternative hanno tutte qualche difetto:

  • Con MHTMl, non puoi modificarlo facilmente.
  • Con gli URI dei dati, non so quanto sia difficile l'implementazione. (Con ZIP, anche io potrei farlo in PHP, 3 anni fa ...)
  • L'opzione per archiviare le cose come file separati ha troppe cose che potrebbero andare storto e rovinare il tuo archivio.

Altri suggerimenti

I PDF sono supportati su quasi tutti i browser su quasi tutte le piattaforme e archiviano contenuti e immagini in un singolo file. Possono essere modificati con gli strumenti giusti. Questo non è quasi sicuramente l'ideale, ma è un'opzione da considerare.

Non è solo una questione di formato di file. Un'altra domanda cruciale è che cosa esattamente si desidera memorizzare ? È:

  1. archivia l'intera pagina così com'è con tutte le risorse di riferimento: immagini, CSS e javascript?

  2. per catturare la pagina come è stata renderizzata in qualche momento; uno statico immagine di alcuni stati renderizzati della pagina web DOM?

Pagina di salvataggio " più corrente come " la funzionalità nel browser, che si tratti di MAF o MHTML o file + dir, tenta il primo modo. Questo è in definitiva un approccio imperfetto.

Non dimenticare che le pagine Web sono giorni piuttosto applicazioni locali, quindi un documento statico che puoi facilmente archiviare. Problemi potenziali:

  1. una pagina è in effetti diverse pagine create dinamicamente da JS, è necessaria l'interazione dell'utente per portarlo allo stato desiderato

  2. Le applicazioni AJAX possono eseguire la comunicazione remota con il servizio remoto rendendolo inutilizzabile per la visualizzazione offline.

  3. Link nascosti nel codice javascript. Tale risorsa non fa quindi parte della pagina memorizzata. Anche l'analisi del codice JS potrebbe non scoprirli. Devi eseguire il codice.

  4. Anche la posizione degli elementi html di base può essere ricalcolata può essere calcolata dinamicamente da JS e non è sempre possibile / facile ricrearlo localmente.

  5. Avresti bisogno di una sorta di dump della memoria JS e caricalo per riportare la pagina allo stato desiderato speravi di archiviare

E molti altri problemi ...

Controlla Chrome SingleFile . Memorizza una pagina Web in un file html con immagini allineate utilizzando URI di dati già menzionati. Non l'ho testato molto, quindi non posso dire quanto sia in grado di gestire "volatile" pagine Ajax.

Usa un file zip.

Puoi sempre creare un programma / script che estrae il file zip in una directory temporanea e carica il file index.html nel tuo browser. È anche possibile utilizzare un file index.ini / txt per specificare il file che deve essere caricato durante l'estrazione.

Fondamentalmente, vuoi qualcosa come il formato Mozilla Archive, ma senza la merda rdf non necessaria solo per specificare quale file caricare.

I file MHT sono buoni, ma di solito usano base64 per incorporare i file, il che renderà la dimensione del file più grande di quanto dovrebbe essere (gli URI dei dati sono allo stesso modo). Puoi aggiungere allegati come binari, ma dovrai farlo manualmente con un editor esadecimale o creare uno strumento e il supporto da parte dei clienti potrebbe non essere buono.

Naturalmente, se si desidera utilizzare ciò che i browser generano, MHT (Opera e IE almeno) potrebbe essere migliore.

Non vedo scuse per usare qualcosa di diverso da un file zip

Bene, se il supporto del browser e la facilità di modifica sono le maggiori preoccupazioni penso che tu sia bloccato con l'approccio file + directory a meno che tu non sia disposto a fornire un editor per il singolo formato di file e vivere con un supporto non molto buono nei browser.

Puoi creare un singolo file comprimendo il contenuto. Puoi anche creare una directory principale per facilitare la gestione.

Il problema è che html è bottom up e top down. Guarda il nome del tuo file salvato sulla mia scatola come "qual è il migliore" formato file " per salvare pagine Web complete (immagini, ecc.) in un singolo archivio? - Stack Overflow.html "

Basta aggiungere un '|' e si ha difficoltà a fare i backup di copia e incolla su un'unità di riserva. Alla fine finisci. tagliare il nome del file per salvarlo. Dozzine / forse centinaia di identici index.html o index.php stanno ingombrando i miei dischi.

La soluzione parziale è quella di scrivere il proprio CMS e usare gli script per mappare tutti i file rilevanti su un database di file flat, quindi utilizzare fileName, size, mtime e md5 per ottenere un ID univoco per ciascun file. Crea un indice di file flat che consenta record da 100k o 1000k. L'obiettivo è scrivere una volta e usarla più volte. Quindi hai bisogno di un vero CMS hai bisogno di un ID univoco basato sul contenuto (ad esempio index8765432.html) che va nel tuo file_archive. Idem per gli altri. Quindi puoi creare un collegamento simbolico in modo non distruttivo dall'html originale salvato a files_archive e, se necessario, ricreare il file utilizzando un php o uno script alternativo. Non so se funzionerà perché sono nello stesso punto in cui ti trovi, forse tra una settimana lo sapremo per certo. L'approccio più utile consiste nell'avere una struttura dall'alto verso il basso in base alle esigenze aziendali o personali e alle attività correlate. Quindi i tuoi file potrebbero essere organizzati dall'alto verso il basso ma quelli esterni dal basso verso l'alto per preservare il contenuto originale. Il mio interesse è per i servizi Web 3.0 e più si avvicina l'interazione da macchina a macchina, maggiore è la necessità di strutturare le informazioni. Forse è tempo di ripensare l'idea di raggruppare tutto in un unico file. Quindi hai centinaia di main.css perché raggruppare quando una soluzione top down potrebbe permetterti di modificare un file invece di centinaia.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top