ネイティブの怠惰なローディング-ビデオ要素はなぜそれを持っていないのですか?
10713 ワード
怠惰なローディングは、初期ページ負荷のために重要でないリソースを特定するための戦略であり、必要なときだけそれらをロードする.それは、長さを短くする方法ですcritical rendering path , これはページ負荷時間の削減に変換されます.それは、より速いウェブサイトにつながります.
我々は能力を怠惰な負荷の画像とiframeをブラウザで今すぐに
それは、ちょうど私になぜ私を不思議にしましたか
私は知らないが、確かに希望!😕🤞
最近記事を書くとき、私はいくつかの機能をデモに短い画面録画をしました.私は自動再生ビデオとしてそれを含めたかったです、あなたがアニメーションGIFを使うかもしれないところに類似しています.それは私がビデオのためのネイティブ怠惰なローディングがあると気づいた時です.
閉じるこの動画はお気に入りから削除されていますWebP 代わりに.WebPはGIFと同じアニメーションをサポートしていますが、より良い圧縮をサポートしていますか?
あなたはonline video to WEBP converter この仕事のために.
私は、このトピックに深くそれを掘っていなかったので、私がやっていたから少しの正接でした!しかし、私はこの話題に関してGoogle DEVSによって最近の十分な記事(後半2019)を読みました"Lazy-loading video" . 彼らは、異なって扱われるビデオを埋め込む2つの異なったユースケースを記述します.話題をよりよく理解するためにこれらを見てみましょう.
あなたはビデオ上のコントロールを持っているし、ビデオを再生するユーザー.
あなたは
ブラウザのデフォルト動作
いくつかのブラウザでは、ビデオの背景があります.あなたはそれを使用してよりよく見えるようにすることができます
ユーザーがビデオの再生ボタンをクリックすると、ビデオが読み込まれます.
これは私のユースケースでした.
このような怠惰な読み込みライブラリを使用してvanilla-lazyload , または、独自のJavaScriptコードを書くことができます.
独自のコードを書くには長すぎません.
HTMLでは
この機能の追加のように私に見える.追加できます
提案箱はどこですか.😄
我々は能力を怠惰な負荷の画像とiframeをブラウザで今すぐに
loading
attribute .<img src="cat.jpg" alt="felix the cat" loading="lazy">
<iframe src="video-player.html" title=".." loading="lazy"></iframe>
Support for lazy-loading is good . 画像の怠惰な読み込みは、現在すべての主要なブラウザによってサポートされています.しかし、それはまだiframeのためのビットパッチです.Firefoxはiframeの怠惰な読み込みをサポートしていません、そして、それは現在サファリで実験的な旗の下にあります.そこで、我々はそこにgettingです!それは、ちょうど私になぜ私を不思議にしましたか
video
要素が見落とされました.ほとんどのビデオがYouTubeで今住んでいるとiframe経由でウェブサイトに埋め込まれているためですか?私は知らないが、確かに希望!😕🤞
最近記事を書くとき、私はいくつかの機能をデモに短い画面録画をしました.私は自動再生ビデオとしてそれを含めたかったです、あなたがアニメーションGIFを使うかもしれないところに類似しています.それは私がビデオのためのネイティブ怠惰なローディングがあると気づいた時です.
閉じるこの動画はお気に入りから削除されていますWebP 代わりに.WebPはGIFと同じアニメーションをサポートしていますが、より良い圧縮をサポートしていますか?
あなたはonline video to WEBP converter この仕事のために.
私は、このトピックに深くそれを掘っていなかったので、私がやっていたから少しの正接でした!しかし、私はこの話題に関してGoogle DEVSによって最近の十分な記事(後半2019)を読みました"Lazy-loading video" . 彼らは、異なって扱われるビデオを埋め込む2つの異なったユースケースを記述します.話題をよりよく理解するためにこれらを見てみましょう.
ユースケース1:ユーザーが再生を開始するビデオ
あなたはビデオ上のコントロールを持っているし、ビデオを再生するユーザー.
あなたは
preload
attribute でvideo
ロードを制御する要素.提供することでpreload="none"
, ブラウザはビデオデータを読み込むのを防ぐべきです.<!-- disable preloading -->
<video controls preload="none" width="300" poster="img/cover.jpg">
<source src="files/sample.mp4" type="video/mp4">
</video>
を含まないautoplay
ここで属性は、ビデオをロードすることができますpreload="none"
!ブラウザのデフォルト動作
preload
石に設定されていないので、明示的にこれはおそらく良いアイデアです.いくつかのブラウザでは、ビデオの背景があります.あなたはそれを使用してよりよく見えるようにすることができます
poster
属性はプレビュー画像を表示します.ユーザーがビデオの再生ボタンをクリックすると、ビデオが読み込まれます.
ユースケース2:アニメーションGIF置換としてのビデオ
これは私のユースケースでした.
このような怠惰な読み込みライブラリを使用してvanilla-lazyload , または、独自のJavaScriptコードを書くことができます.
独自のコードを書くには長すぎません.
HTMLでは
src
属性source
代わりに、ビデオのURLを隠してくださいdata-src
属性.マークvideo
「怠惰な」クラスで.<video class="lazy" autoplay muted loop playsinline width="600" height="300" poster="cover.jpg">
<source data-src="screen-recording.webm" type="video/webm">
<source data-src="screen-recording.mp4" type="video/mp4">
</video>
JavaScriptコードは IntersectionObserver
API を検出するvideo
“lazy”クラスを持つ要素が表示され、src
属性をそれぞれsource
ビデオURLを持つ要素.document.addEventListener("DOMContentLoaded", function() {
var lazyVideos = [].slice.call(document.querySelectorAll("video.lazy"));
if ("IntersectionObserver" in window) {
var lazyVideoObserver = new IntersectionObserver(function(entries, observer) {
entries.forEach(function(video) {
if (video.isIntersecting) {
for (var source in video.target.children) {
var videoSource = video.target.children[source];
if (typeof videoSource.tagName === "string" && videoSource.tagName === "SOURCE") {
videoSource.src = videoSource.dataset.src;
}
}
video.target.load();
video.target.classList.remove("lazy");
lazyVideoObserver.unobserve(video.target);
}
});
});
lazyVideos.forEach(function(lazyVideo) {
lazyVideoObserver.observe(lazyVideo);
});
}
});
閉じるこの動画はお気に入りから削除されています.この機能の追加のように私に見える.追加できます
preload="lazy"
; またはloading
属性は他の2要素にマッチします.提案箱はどこですか.😄
Reference
この問題について(ネイティブの怠惰なローディング-ビデオ要素はなぜそれを持っていないのですか?), 我々は、より多くの情報をここで見つけました https://dev.to/robole/native-lazy-loading-why-doesnt-the-video-element-have-it-4onoテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol