2012-12-30 15 views
5

A quanto mi risulta, se un elemento è memorizzato nella cache dal browser web è determinata da:il caching del browser quando i file vengono serviti da un file-condivisione di rete

  1. Quali le intestazioni di risposta dicono al browser di fare (ad esempio, , Cache-Control e Expires).
  2. La presenza di un validatore (ad esempio, ETag o intestazione Last-Modified).

In che modo si differenzia per file serviti da una condivisione file di rete? Su diversi browser? Considerate questo JavaScript comprendono:

<script type="text/javascript" src="\\SOMECOMPUTER\folder\file.js"></script> 

Sarà browser obbedire a un tag meta come questo quando i file di rete sono coinvolti?

<META HTTP-EQUIV="EXPIRES" CONTENT="Mon, 31 Dec 2011 11:12:01 GMT"> 

Sto trovando pochissima documentazione su questo argomento.

+2

Questo non risponde alla tua domanda, ma se fossi io cercherei di evitare il collegamento come questo e invece assicurarmi che il server web abbia accesso alla condivisione tramite un percorso sul server ad esempio 'http: // intranet/files' potrebbe in effetti essere 'z: \ SomeShare', che è un'unità di rete mappata a' \\ SomeComputer \ files' – prodigitalson

+0

Sfortunatamente evitare la distribuzione di file share non è un'opzione per noi. Stiamo implementando un'app web pesante JS nelle intranet con i mandati dei dipartimenti IT su dove possiamo mettere le cose. A volte un server Web intranet è disponibile, ma più spesso non lo è. –

+0

HTTP controlla la cache - non utilizzando un server Web tutto ciò che HTTP fa per te esce dalla finestra. –

risposta

1

Le intestazioni HTTP vengono prese in considerazione solo mentre il file viene inviato tramite il protocollo HTTP. L'accesso ai file (sia locale che condiviso) NON passa attraverso HTTP, quindi non puoi controllare la cache con questo.

I file HTML hanno il controllo cache nella sezione <head> con metatag. Quindi, se vuoi controllare la cache per il file .html, puoi farlo. Quanto sopra non è purtroppo vero per i file .js, non è possibile controllare il caching del file js in questo modo.

Suggerirei 2 opzioni:

  • Configurare un piccolo server HTTP, e recuperare i file .js da lì - in questo modo è possibile controllare il timeout van cache intestazioni HTTP
  • Inline il codice JavaScript in una pagina HTML (nei tag <script>...</script>) e controllare la memorizzazione nella cache tramite i tag <meta>. In questo modo è possibile caricare questo file in un <div src="\\server\cachedfile.html" \> - il div potrebbe essere anche nascosto dopo il caricamento.

Penso che la seconda opzione sia migliore, perché il controllo della cache <meta> è più affidabile e persino più controllabile.

4

Modifica: Dopo aver effettivamente eseguito altri test, è possibile accedere al file in questo modo con IE8, Firefox e Google, supponendo che siano state impostate le autorizzazioni appropriate, mi dispiace per la confusione precedente.

Ora è appena tornato al punto di memorizzare nella cache i file java-script (o qualsiasi altro), che è sì. Quindi, ecco come si potrebbe risolvere il problema che:

Using <meta> tags to turn off caching in all browsers? (Questo sembrava funzionare bene per me così sembra che i browser ascolteranno i meta tag per i file di rete come questo)

How to force IE to reload javascript? (Questo funziona proprio come come eviterai di memorizzare nella cache chiamate ajax aggiungendone l'ora come variabile inutilizzata)

Problemi correlati