2017-09-25 2 views
0

Mon site charge javascript externe avec protocole relatif, à savoirEst-ce que le protocole relatif ou absolu affecte les performances de prélecture DNS?

<script type="text/javascript" src="//somewhere.com/script.js"></script> 

(Note:. la balise de script est injecté de manière asynchrone pour récupérer le script après chargement de la page)

mais mon étiquette dns-prefetch est protocole absolu, à savoir

<link rel="dns-prefetch" href="http://somewhere.com/script.js"> 

donc lorsque le site est chargé via HTTPS le prefetch est http et le script est https. Il n'y a aucun avertissement dans la console Chrome à ce sujet. En plus de garder ces constantes, y a-t-il un avantage de performance à changer le lien prefetch dns au protocole relatif?

Je pensais que tout ce que dns prefetch soi-disant est de résoudre une adresse IP à partir d'un nom d'hôte, il pourrait être bénéfique d'utiliser http dans la prélecture pour éviter d'avoir à faire le handshake SSL. Mais cela suppose que le lien dns-prefetch demande au navigateur de faire une requête réseau, ce dont je ne suis pas sûr est ce qui se passe.

+0

Il n'y aurait pas de prise de contact tls de toute façon. DNS n'a pas une telle chose. – captncraig

+0

Prefetch n'est même pas vraiment nécessaire pour des choses comme les scripts qui sont chargés immédiatement de toute façon. C'est plus pour les choses initiées plus tard par les interactions de l'utilisateur, comme les liens, ou le contenu que vous pourriez tirer dans le futur. – captncraig

+0

'// some.script.js' n'est pas une URL de protocole relatif. '// SERVER_NAME/some.script.js' serait une telle URL de protocole. –

Répondre

1

Les trois lignes suivantes, lorsque pris en charge par le navigateur, font la même chose:

<link rel="dns-prefetch" href="http://SERVERNAME/some.script.js"> 

<link rel="dns-prefetch" href="https://SERVERNAME/some.script.js"> 

<link rel="dns-prefetch" href="//SERVERNAME/some.script.js"> 

Ils essaient de demander des documents A et ressources AAAA du résolveur DNS, si ces informations ne sont pas déjà présentes dans le cache du service de nom de navigateur.

Par conséquent, les performances sont les mêmes.