2016-02-23 3 views
6

In der Webanwendung, die ich gerade debugge, sieht die Indexseite ungefähr wie folgt aus.Ist es normal, wenn ein Skript zweimal heruntergeladen wird, wenn es von den Entwicklertools aus angezeigt wird?

<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> 

Einige der Skripte erscheinen zweimal von Entwickler-Tools (Chrome, siehe Bild unten)

enter image description here

Manchmal sind beide 200 statt 304 für die Zweite Anfrage.

Ist das normal?

Was könnte dazu führen, dass es manchmal zweimal erscheint und manchmal nur einmal erscheint?

[Edit 1] Es ist anders als diese Frage How "304 Not Modified" works? Es zeigt nicht immer 304, manchmal sind beide 200 Antwort. Und dies könnte damit zusammenhängen, wie HTML und Javascript geschrieben werden, nicht wie vom Moderator vorgeschlagen.

enter image description here

Auch nginx aufgezeichnet, um die Anfrage zweimal

[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] Ich denke, es könnte etwas mit "Large" Dateianfrage zu tun hat? Wie im Bild unten zu sehen, habe ich versucht, mehrere Javascript-Dateien zu laden, und einige von ihnen sind paar MB groß. Ich habe nicht viel im Javascript getan, die meisten der kleineren Dateien enthalten nur "console.log()", die größere Version ist nur "var xxx = ['Large Array'];" in src Attribut

enter image description here

+1

Mögliche Duplikate von [Wie "304 Not Modified" funktioniert?] (Http://Stackoverflow.com/questions/20978189/how-304-not-modified-works) –

+0

@DarrenSweeney Ich glaube nicht, dass diese Frage deckt Warum scheint das Skript zweimal geladen zu werden (im Cache gespeichert oder nicht)? –

+0

Ich denke, das kann hilfreich sein http://stackoverflow.com/questions/1046966/whats-the-difference-between-cache-control-max-age-0- und-no-cache –

Antwort

2

Wenn Ihr Code Javascript DOM modifiziert und fügen Sie neue <script> Knoten dann, Browser zeigte neues Skript laden. So ist es möglich. Die zweite Anforderung kann jedoch vom Browser-Cache geliefert werden, wenn der Webserver sagt, dass er nicht geändert wurde (Code 304).

+0

Wahrscheinlich ist dies nicht der Grund (Check out meine letzte Bearbeitung in Frage). Das neueste HTML-Beispiel ist ziemlich einfach, hat wahrscheinlich etwas mit großer Dateianforderung zu tun? – forestclown

+0

HTML ist ziemlich einfach, ja. Aber das kann ich nicht für Javascript sagen. Ich weiß nicht einmal was Code drin ist oder was sie machen.Doppelte Anfrage scheint nur für kleinere Javascript-Dateien nicht groß. –

+0

in den kleineren Dateien führe ich einfach "console.log ('')" aus, in der größeren Datei führe ich einfach "var someVar = ['Large Array'];" – forestclown

Verwandte Themen