URLからデータを読み込むJavaScriptウィジェットがあります。ページデータのアドレスは?
往復を減らすために、2回目のHTTPリクエストを避け、HTMLページにデータを入れたいと思います。
JavaScriptウィジェットを変更しないままにしておくといいですね。
現在のHTMLページからデータを読み取るためのURLスキームはありますか?
例:代わりにhttps://....
このdom://....
URLからデータを読み込むJavaScriptウィジェットがあります。ページデータのアドレスは?
往復を減らすために、2回目のHTTPリクエストを避け、HTMLページにデータを入れたいと思います。
JavaScriptウィジェットを変更しないままにしておくといいですね。
現在のHTMLページからデータを読み取るためのURLスキームはありますか?
例:代わりにhttps://....
このdom://....
私はdataURIの主張者でもあり、ウェブページにデータを埋め込むための最も透過的な(クライアントコード通りの)方法です。
しかし、接続オーバーヘッドのためにパフォーマンスを低下させる小さな画像やその他のリソースを埋め込むために初めて使用されました。また、parallel download limitations of HTTP/1も含まれていました。 dataURIが30%のincrease in data sizeの(野球場推定)を引き起こす可能性があるので、データのエンコーディングが慎重であるため、このトレードオフは繊細ですが、dataURIが役に立たなくなる重要な点は、通常、
ここで重要なのは、1ページのアプリケーションシナリオでは、考慮する単一のデータフェッチ往復以上があることです。
は、次のような意味を持っていますページのバージョン。)
、往復自体にもかかわらず、別のラウンドトリップにデータを保持し、なります。
これらはすべて私の見解では大きな勝利ですデータを埋め込む必要性を真剣に検討することをお勧めします。初期の最適化であるため、多くの痛みやパフォーマンスの低下を招く可能性があります。特に、SPDYと今やHTTP/2がこれらの往復および接続番号の問題に対処するために既に導入されているためです。
のいいえ、それはあなたのために実行可能なアプローチだ場合は、data URIsを使用することができます。しかし、それは大量のデータのための最良の選択ではありません。
私はあなたのニーズを完全に把握しているかどうかはわかりませんが、zeroflagLの答えは正解かもしれません。オプションを破棄する前に http://blog.teamtreehouse.com/using-data-uris-speed-websiteも読んでください。
あなたはラウンドトリップを削減し、一つ以上を置くことができ、この機能を活用する:それはあなたのJavaScriptに少し適応を取るかもしれませんが
そうでない場合は、HTML5がdata blocks がhttps://developer.mozilla.org/en/docs/Using_XML_Data_Islands_in_Mozillaでそれについて読むと呼ばれる機能を持っていることを考えますにケース内のHTMLページへのデータセットは、スクリプトブロックにこのようなを名前空間:
<script id="purchase-order" type="application/xml">
<purchaseOrder xmlns="http://entities.your.own.domain/PurchaseOrderML">
またはこの
<script id="another-set-of-data" type="application/xml">
<dataSet xmlns="http://entities.your.own.domain/DataSetML">
したがって、JavaScriptは現在のHTMLページからデータを読み取ることができます。 ....例:
<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>
あなたはグローバルwindow
オブジェクトで、それが何であれ、データを入れて、後でそれを使用することができます。
ただし、コードを変更する必要があります。
HTTPで大きな勝利を得るには、大量のキャッシュが必要です。これはキャッシュできるGETですか?もしそうなら、それはブラウザによってキャッシュされ即座に戻るため、「2番目のHTTPリクエストを避ける」必要はありません。 – Clev3r
はい、そうです。私は永久にキャッシュするのが好きです。たとえば、e-Tagなどの検証で2回目のhttp-requestが再度実行されるからです。あなたのコメントは良いヒンジだった。ハッシュサムをURLに記述すると、データを永久にキャッシュすることができます。 – guettli