Come posso verificare la presenza di un file javascript nella cache dell'utente. Se ha aggiornato la pagina o visita il sito dopo qualche tempo. Non ho bisogno di scaricare di nuovo quel file js. I file js vengono ripuliti dopo la chiusura di un sito.Controllare la cache del browser per un file js
risposta
Il fatto che un file javascript sia memorizzato nella cache dipende da come è configurato il server Web, da come è configurato il browser dell'utente e anche da come sono configurati i server proxy HTTP tra il server e l'utente. L'unico bit che puoi controllare è come è configurato il tuo server.
Se si desidera la migliore possibilità che il proprio javascript venga memorizzato nella cache, il server deve inviare le intestazioni HTTP corrette con il file javascript. Esattamente come lo fai dipende da quale server web stai usando.
Qui ci sono un paio di link che potrebbe aiutare:
Apache - http://httpd.apache.org/docs/2.0/mod/mod_expires.html
Il browser sarà automaticamente dopo quello che ha in esso la propria cache. Esistono tuttavia vari meccanismi che puoi usare per controllarlo.
sguardo nelle varie intestazioni di cache HTTP, come ad esempio:
- Last-Modified
- Valida
- ETag
Il Scade intestazione è il più critico di questi, quando si tratta alla cache sul lato client. Se imposti un header Expires di gran lunga futuro (ad esempio, 10 anni) il browser non (in teoria) non guarderà di nuovo al server per quel file. Ovviamente è necessario un metodo per cambiare il nome del file quando il contenuto del file cambia. La maggior parte delle persone gestisce questo aggiungendo un numero di build al percorso del file.
Il browser si prenderà cura della cache per voi.
Quando la cache viene svuotata dipende in parte dalle impostazioni del browser e in parte dalle intestazioni inviate. Se imposti l'intestazione Expires
, il browser non deve richiedere nuovamente il file finché non è scaduto. Leggendo il HTTP Headers potresti esserti utile.
Questa domanda è profondamente confusa fino al punto di inutilità, e non ho idea del motivo per cui è salita. Per prima cosa dici, senza spiegare perché, che vuoi controllare se il browser ha un file nella cache (che è possibile, ma solo tramite attacchi temporali, non ci sono API per questo). Quindi dici di volerlo sapere per evitare di scaricare nuovamente il file, ma il browser * gestisce quella logica per te * se gli dai il titolo giusto, quindi questa motivazione sembra non avere senso. Infine, si pone un'altra domanda non pertinente e poco chiara sul fatto che i file js "vengano ripuliti" dopo che un sito è stato "chiuso". Eh? –
@MarkAmery puoi collegare la spiegazione del controllo "attacco di temporizzazione"? – setec
@setec Ecco un articolo accademico su di esso da 15 anni: http://sip.cs.princeton.edu/pub/webtiming.pdf. Da allora non è stato risolto, nonostante fosse un buco di privacy. La versione tl; dr è: crea un tag '' con attributi 'onload' e' onerror' che puntano all'URL che ti interessa, e usa JavaScript per calcolare quanto tempo impiega uno dei gestori per essere chiamato. Se è inferiore a un paio di millisecondi, l'utente ha avuto l'URL di destinazione nella cache. –