questões de desempenho no carregamento dinamicamente objetos JavaScript
-
20-08-2019 - |
Pergunta
O que é mais rápido,
-
Usando um pedido XMLHTTP Get e de usar eval () para a reponsetext
-
Usando a técnica JSONP para carregar um script e, em seguida, evaling o innerHTML do script.
-
dinamicamente adicionando uma tag script na cabeça de um documento onde o objeto javascript está sendo atribuído a uma variável?
Meu instinto me diz que esta deve ser a opção 3, mas eu não sei como eval compara com o uso de uma marca de script. Quaisquer pensamentos?
Solução 3
Eu concordo biblioteca JSON2 é provavelmente o caminho a percorrer para eval () 'ing. Mas para o transporte, parece que o mecanismo JSONP é mais rápido que XMLHTTPRequest por alguma análise que John Resig fez.
Outras dicas
É possível variar com base no navegador e alguns outros fatores então eu acho que se você realmente quer o melhor desempenho você deve fazer alguns testes e perfil deles. Por um lado, eval () o desempenho pode variar enormemente dependendo do que você está eval () 'ing
Você deve apenas utilizar a JSON2 biblioteca para análise dados JSON, como a utilização de eval
não é seguro (usando resultados eval
em um grande número de potenciais exploits local), ele é lento (especialmente no mais recente jitting motores JS) e, finalmente (e mais importante) o objeto JSON fornecido pela biblioteca JSON2 é tornando-se parte do script ECMA (eg. javascript) padrão, o que significa que os navegadores estão agora a implementar a análise JSON (e stringification) nativamente resultando em muito melhor desempenho.
Felizmente, se você usar a biblioteca JSON2 ele detecta a existência de uma implementação nativa do objeto JSON e não substituí-lo, então apenas arbitrariamente usando ele vai te dar uma implementação segura de que irá magicamente se tornar mais rápido, como o suporte ao navegador melhora.