2016-02-23 6 views
6

Nell'applicazione Web attualmente in fase di debug, la pagina di indice ha un aspetto simile a quello riportato di seguito.È normale se uno script viene scaricato due volte durante la visualizzazione dagli strumenti di sviluppo

<head> 
    <base href="/"> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    <meta name="renderer" content="webkit" /> 
    <meta http-equiv="expires" content="0" /> 
    <meta http-equiv="cache-control" content="no-cache" /> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" /> 
    <link rel='stylesheet' href='u.css?1456217719620'></link> 
    <link rel='stylesheet' href='ll.css?1456217719620'></link> 
    <link rel='stylesheet' href='aa.css?1456217719620'></link> 
    <script src='c.js?NaN'></script> 
    <link rel="shortcut icon" href="/images/favicon.ico" /> 

    <script src='ll1.js?1456217719620'></script> 
    <script src='ll2.js?1456217719620'></script> 
    <script src='ll3.js?1456217719620'></script> 
    <script src='ll4.js?1456217719620'></script> 
    <script src='ll5.js?1456217719620'></script> 
    <script src='ll6.js?1456217719620'></script> 
    <script src='aa.js?1456217719620'></script> 
</head> 

<body> 
    <!-- Edit: As suggested in one of the reply, could it be because there are scripts like this in body? --> 
    <script type="text/javascript"> 
     (function() { 
     var u='//widget.uservoice.com/xxxxx.js'; 
     var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; 
     g.type='text/javascript'; g.async=!1; g.defer=!0; g.src=u; s.parentNode.insertBefore(g,s); 
     })(); 
     UserVoice = window.UserVoice || []; 
    </script> 

</body> 

Alcuni degli script appaiono due volte da strumenti di sviluppo (Chrome, vedi immagine sotto)

enter image description here

A volte entrambi sono 200 invece di 304 per la seconda richiesta.

È normale?

Cosa potrebbe averlo fatto apparire a volte due volte ea volte appare solo una volta?

[Modifica 1] È diverso da questa domanda How "304 Not Modified" works? Non sempre mostra 304, a volte entrambi sono 200 risposta. E questo potrebbe essere legato al modo in cui HTML e javascript sono scritti, non off-topic come suggerito dal moderatore.

enter image description here

Anche nginx registrato la richiesta di due volte

[23/Feb/2016:21:56:09 -0500] "GET /ll1.js?1456217719625 HTTP/1.1" 200 220276 
[23/Feb/2016:21:56:09 -0500] "GET /ll1.js?1456217719625 HTTP/1.1" 200 220284 

[Edit 2] Penso che potrebbe ha qualcosa a che fare con la richiesta di file "Large"? perché come si vede nell'immagine qui sotto, ho provato a caricare diversi file javascript, e alcuni di essi sono di dimensioni MB. Non ho fatto molto in javascript, la maggior parte dei file più piccoli contengono solo "console.log()", la versione più grande è solo "var xxx = ['Large Array'];"

enter image description here

+1

Possibile duplicato di [Come "304 Not Modified" funziona?] (Http://stackoverflow.com/questions/20978189/how-304-not-modified-works) –

+0

@DarrenSweeney Non penso che la domanda copra perché lo script sembra caricarsi due volte (memorizzato nella cache o meno) –

+0

Penso che questo possa essere utile http://stackoverflow.com/questions/1046966/whats-the-difference-between-cache-control-max-age-0- e-no-cache –

risposta

2

Se il codice Javascript modifica DOM e aggiungere nuovi <script> nodo quindi, il browser caricherà nuovo script puntata in attributo src. Quindi è possibile. Tuttavia, la seconda richiesta può essere fornita dalla cache del browser se il server web ha affermato che non è stato modificato (codice 304).

+0

Probabilmente questo non è il motivo (Check out la mia ultima modifica in questione). L'ultimo esempio HTML è abbastanza semplice, probabilmente ha qualcosa a che fare con la richiesta di file di grandi dimensioni? – forestclown

+0

HTML è abbastanza semplice, sì. Ma non posso dire lo stesso per javascript. Non so nemmeno quale codice ci sia o cosa facciano.La richiesta duplicata sembra essere avvenuta solo per file javascript più piccoli non di grandi dimensioni. –

+0

nei file più piccoli eseguo semplicemente "console.log ('')", nel file più grande eseguo semplicemente "var someVar = ['Large Array'];" – forestclown

Problemi correlati