Rendering del formato di markdown personalizzato: lato client o lato server?

1

Sto lavorando su un progetto sia su iOS / Android / macOS / Linux (Windows è opzionale, e sicuramente nessuna versione del sito web). Esistono molti dati correlati alle pagine Web e il team ha deciso di archiviare i dati in un formato di markdown specifico (non nel normale formato * .md) per soddisfare i requisiti del dominio specifico trattato. I file di markdown personalizzati sono archiviati in un database online e sono molto più compatti di altri formati, ad es. html per risparmiare spazio e traffico.

Ora, affinché i client possano leggere i contenuti, dobbiamo analizzare i markdown sul lato server o lato client. Il piano è di convertire in html e visualizzarlo in una visualizzazione web sul lato client. Questo è un dilemma a causa di quanto segue:

  1. L'invio dei dati in formato markdown consente di risparmiare molto traffico in quanto il formato è stato progettato per essere compatto.

  2. La velocità di analisi non è un problema. Ogni file di markdown è piuttosto breve. Le cache rimarranno sui computer client, quindi il reparsing non è necessario.

  3. Memorizzare entrambe le versioni html (come cache) e markdown sembra uno spreco di spazio e scartare le versioni di markdown è scomodo se dobbiamo modificarle ulteriormente.

Sono a conoscenza di diverse domande su Stack Overflow che suggeriscono all'unanimità l'analisi lato server, ma in realtà non rispondono alle mie esigenze. Innanzitutto, l'analisi non viene eseguita nei browser, quindi non verranno scaricate librerie aggiuntive. Inoltre, suggeriscono un'analisi iniziale sul lato server e ripubblicano sul lato client se il contenuto cambia. Tuttavia, nel mio caso i markdown sono statici e agli utenti non è consentito apportare modifiche. Inoltre, riguardano il normale formato di markdown (* .md) invece di un formato personalizzato.

L'unico vantaggio dell'analisi sul lato server che posso pensare è di evitare la duplicazione del codice. Le versioni mobili verranno scritte con Flutter (quindi le parti principali sono scritte in Dart). La versione macOS coinvolgerà alcuni Swift e C ++ e la versione Linux riguarderà il C + + e forse un po 'di Java per la GUI (in modo che sarebbe più facile portare il prodotto a Windows se necessario in futuro). So che posso scrivere tutto in C ++ direttamente, ma ad oggi chiamare C ++ da Flutter è ancora un problema.

Poiché questa è una situazione molto più generale, penso di aver bisogno di un consiglio qui. Qualsiasi aiuto è apprezzato.

    
posta tonychow0929 09.11.2018 - 08:26
fonte

1 risposta

3

Tutto si riduce a una cosa: quali sono le tue principali preoccupazioni con questo sistema? Sta riducendo lo spazio di archiviazione richiesto? L'uso della larghezza di banda? La CPU del server usa? Il markdown personalizzato è qualcosa che ai tuoi clienti non dovrebbe essere permesso di vedere l'architettura di?

A me sembra che nascondere il fatto che tu usi il markdown proprietario non è un problema, e hai chiaramente affermato che il piano era troppo ridotto nella larghezza di banda e nell'archiviazione; Pertanto, da quello che hai detto potresti prendere in considerazione l'idea di eseguire il rendering sul lato client, ma solo se la tua preoccupazione per la larghezza di banda e lo spazio di archiviazione sono maggiori delle tue preoccupazioni in termini di tempo di sviluppo.

    
risposta data 09.11.2018 - 15:05
fonte

Leggi altre domande sui tag