Domanda

Oggi è stata sollevata una domanda qui e non ho una risposta evidente.

Supponiamo che concateniamo e minifiniamo tutti i file delle risorse (CSS e JavaScript) e li dichiarano nella "Master-Page".

Su un'app multi-page, se un file CSS cambia, verrà ricaricato sul caricamento della pagina intera successiva.

Su un'app una pagina singola, l'utente può continuare a lavorare per giorni e non ricaricare mai la pagina principale in cui vengono dichiarati i file CSS.L'utente non vedrà mai le modifiche fino a quando non viene rilasciato un Ctrl-F5.

Sono sicuro che qualcuno abbia già pensato a questo e avere un'esperienza da condividere :)

Per me, usando WebSewet non è un'opzione.Primo perché è eccessivo e secondo perché non tutti i miei clienti supportano la tecnologia.La stessa ragione per cui si applica a tutti i fallback di Webschets ... non continuerò a colpire i miei server a causa di questo.

Allora, qualsiasi idea chiunque?:)

BTW, stiamo usando AngularJS se ciò può aiutare per una soluzione specifica.

Grazie!

È stato utile?

Soluzione

Ho sempre attraversato questo stesso problema. La mia soluzione che è mineraria e potrebbe non rispondere ai criteri:

Quando pacchetto la mia app-app e la mia app server, condivido un file di configurazione contenente la versione corrente dell'app anteriore.

Front Side: il 75% dei miei percorsi cambia implicitamente chiamare un server web (ROTTURS modifica risoluzione). Quindi ogni volta che chiamo il mio server, includo un'intestazione HTTP personalizzata (o un Get / Post Param) contenente la versione client dell'App front.

lato server: Confronta la versione APP FRONT (quella nel browser dell'utente, caricata l'ultima volta l'utente aggiornato / caricato la spa) con la versione APP frontale del file di configurazione condivisa:

    .
  • Se la versione corrisponde: non faccio niente.
  • Se la versione non corrisponde a inviare un codice di errore di stato HTTP personalizzato (418 ad esempio)

Allora il lato anteriore: ho aggiunto un intercettore di risposta che intercetta qualsiasi codice di errore 418 e fai una forza-aggiornamento dell'intera app

È così. Fondamentalmente l'evento che "Verifica" se la versione APP front-app è più recente è un cambio di percorso (che chiama un ws tramite Ajax). Ma potresti aggiungere qualche intervallo di infinito a chiamare un ws dedicato ogni 5 minuti circa ... Posso aggiungere un codice se necessario.

Spero che questo aiuti;)

Altri suggerimenti

Supponendo che si stia utilizzando il routing di AngularJS tramite $ $ Route Service and Provider, quindi è possibile utilizzare l'evento $routeChangeSuccess per eseguire una richiesta di server se ci sono cambiamenti significativi che devono essere modificati; Se ce ne sono, puoi eseguire una finestra.Location.reload () per aggiornare la pagina e ottenere tutte le risorse aggiornate e HTMLS.

Il seguente processo può essere modificato a seconda di come si desidera implementarlo:

1 . Imposta un file di configurazione nel tuo server indicando la versione dell'app. Puoi anche scegliere di assegnare diverse versioni per file diversi ma dal momento che hai concatenato tutti i tuoi file di risorse, immagino che tu possa limitare le opzioni della versione nella configurazione.

2 . Creare un servizio che contiene tutte le informazioni necessarie (versioni di file dal server) e dei metodi per eseguire una richiesta di server sul server per verificare contro le versioni di file corrente memorizzate nel servizio.

3 . Usa $ RouteCangesCess Event per eseguire una richiesta di server utilizzando il servizio che hai creato Nel passaggio 2 , se la richiesta ha restituito una conferma valida che c'erano modifiche, quindi eseguire la ricarica della pagina Forza tramite window.location.reload().

Ho deciso di aggiungere i miei pensieri finali come una risposta anche qui:

Siamo andati per una soluzione ridotta per ora.

Come abbiamo un "servizio proxy" che è (ancora per ora) L'unico che interagisce con questa applicazione, abbiamo aggiunto la versione dell'applicazione sull'intestazione HTTP di tutte le risposte.Se riceviamo una versione più recente, viene visualizzato un popup che notifica l'utente e viene rilasciato un aggiornamento completo della pagina ...

Questa soluzione non funzionerà per le applicazioni che non hanno il proprio servizio "privato".

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