URL a la dirección en los datos de página?

Tenemos un widget de JavaScript que carga datos de una URL.

Para networkingucir los viajes networkingondos, me gustaría evitar una segunda request HTTP y poner los datos en la página HTML.

Sería genial si pudiera dejar el widget de JavaScript sin cambios.

¿Hay un esquema de URL para leer datos de la página HTML actual?

Ejemplo: en lugar de https://.... this dom://....

También soy partidario de URLs de datos, ya que son la forma más transparente (para el código del cliente) de implementar la incorporación de datos en páginas web.

Sin embargo, primero se usaron para incrustar imágenes pequeñas y otros resources que obstaculizarían el performance debido a la sobrecarga de connection y también a las limitaciones de descarga paralela de HTTP / 1 . La compensación es delicada ya que codificar datos como dataURI puede causar un aumento de 30% en el tamaño de los datos , sin embargo, el punto crítico donde los dataURI dejan de ser útiles es alnetworkingedor del tamaño de las imágenes pequeñas, que generalmente son órdenes de magnitud por encima de los datos serializados. .

El punto crítico aquí para un escenario de aplicación de una sola página es que hay más que un solo viaje de ida y vuelta para considerar.

Incrustar los datos para que los utilicen las secuencias de commands de la página en HTML estático tiene las siguientes implicaciones:

  • El HTML en sí mismo no se puede almacenar en caching (solo con una copy en caching para cada set diferente de datos embeddeds y cada versión de la página).
  • Las (múltiples versiones de) la página completa deben generarse en un server que también tenga conocimiento de cómo get los datos.
  • Los datos en línea pueden bloquear la representación de la página hasta un time perceptible para el usuario (esto podría solucionarse insertando los datos al final del HTML, pero la ejecución del script del cliente probablemente tendría que esperar por completo, y también hacer cosas como mostrar una carga indicador más difícil de implementar.)

Por otro lado, mantener los datos en un viaje de ida y vuelta separado, a pesar del viaje de ida y vuelta, haría lo siguiente:

  • Probablemente mantenga su implementación ya funcionando tal como está
  • Permita que los clientes utilicen el HTML almacenado en caching y las secuencias de commands que solo necesitarían una actualización en un cambio de versión real (había una especificación fallida llamada AppCache para este propósito, ahora reemplazada por los trabajadores de service experimentales)
  • Permita que HTML y scripts sean activos totalmente estáticos que pueden ser servidos desde CDN "tontos" que son más rápidos y cercanos al browser del cliente y no necesitan consultar la database o ejecutar ningún código del lado del server

En mi opinión, todas esas son grandes ganancias, por lo que te recomiendo que consideres seriamente la necesidad de incorporar datos, ya que podría tratarse de una optimization temprana que puede provocar mucho dolor y una disminución real del performance. Especialmente porque SPDY y ahora HTTP / 2 ya están llegando para abordar estos problemas de ida y vuelta y número de connection.

No, pero puede usar los URI de datos , si ese es un enfoque factible para usted. Sin embargo, no es la mejor opción para grandes cantidades de datos.

No estoy seguro de haber captado por completo sus necesidades, la respuesta zeroflagL podría ser una respuesta correcta; posiblemente lea también http://blog.teamtreehouse.com/using-data-uris-speed-website antes de descartar la opción.

De lo contrario, aunque podría llevar un poco de adaptación a su javascript, considere que HTML5 tiene una característica llamada bloques de datos que se lee en https://developer.mozilla.org/en/docs/Using_XML_Data_Islands_in_Mozilla :

Al aprovechar esta function, puede networkingucir los viajes de ida y vuelta y colocar uno o más sets de datos en la página HTML, en el caso de bloques de script de espacios de nombres como este:

 <script id="purchase-order" type="application/xml"> <purchaseOrder xmlns="http://entities.your.own.domain/PurchaseOrderML"> 

o esto

 <script id="another-set-of-data" type="application/xml"> <dataSet xmlns="http://entities.your.own.domain/DataSetML"> 

por lo tanto, su javascript puede acceder a datos que los leen desde la página HTML actual; ….ejemplo:

 <script> function runDemo() { var orderSource = document.getElementById("purchase-order").textContent; var parser = new DOMParser(); var doc = parser.parseFromString(orderSource, "application/xml"); var lineItems = doc.getElementsByTagNameNS("http://entities.your.own.domain/PurchaseOrderML", "lineItem"); var firstPrice = lineItems[0].getElementsByTagNameNS("http://entities.your.own.domain/PurchaseOrderML", "price")[0].textContent; document.body.textContent = "The purchase order contains " + lineItems.length + " line items. The price of the first line item is " + firstPrice + "."; } </script> 

Puede poner los datos, sea lo que sea, en el object de window global, y usarlos más adelante.

Pero eso requiere que cambies el código.