如何实现Google AMP项目的 lazy loading 图像加载?
据我所知,lazy loading 意味着在渲染以上折叠内容后,图像会在某个时间点被加载到客户端。似乎有三种延迟加载的变体:
1.视口 - 通过其与视口的接近触发图像加载 2.设置延迟 - 通过定时器触发图像加载 3.手动 - 客户端事件触发图像加载
所有这些方法都可以使用JavaScript实现。但是,AMP不允许使用JavaScript,只允许使用自定义AMP脚本。
视口方法是最理想的,因为它将内容加载最小化。AMP具有支持视口方法启动和停止视频的自定义脚本。但是,似乎没有类似于amp-img的支持。
设置延迟似乎可以在amp-animation中得到支持。这似乎是一种相当复杂的方法。此外,延迟方法是不可取的,因为最佳延迟取决于可变的互联网带宽。
延迟方法也可以使用PHP实现。但是,PHP在服务器端解析。这意味着页面必须重新加载,这完全违背了延迟加载的目的。
手动方法似乎是唯一剩下的方法。以下代码片段创建两个按钮,可以选择性地显示或隐藏图像。
amp-img id='img1' ... hidden
button on="tap.img1.show()"
button on="tap.img1.hide()"
对于移动站点,show按钮可以嵌入到以上折叠内容中,因此用户在浏览站点时可以触发它。但是,这似乎是一种不太完美的解决方法。
Google AMP是否有效地限制了延迟加载到手动方法,还是有其他方法可以实现视口或延迟延迟加载?
提前感谢您。
据我所知,lazy loading 意味着在渲染以上折叠内容后,图像会在某个时间点被加载到客户端。似乎有三种延迟加载的变体:
1.视口 - 通过其与视口的接近触发图像加载 2.设置延迟 - 通过定时器触发图像加载 3.手动 - 客户端事件触发图像加载
所有这些方法都可以使用JavaScript实现。但是,AMP不允许使用JavaScript,只允许使用自定义AMP脚本。
视口方法是最理想的,因为它将内容加载最小化。AMP具有支持视口方法启动和停止视频的自定义脚本。但是,似乎没有类似于amp-img的支持。
设置延迟似乎可以在amp-animation中得到支持。这似乎是一种相当复杂的方法。此外,延迟方法是不可取的,因为最佳延迟取决于可变的互联网带宽。
延迟方法也可以使用PHP实现。但是,PHP在服务器端解析。这意味着页面必须重新加载,这完全违背了延迟加载的目的。
手动方法似乎是唯一剩下的方法。以下代码片段创建两个按钮,可以选择性地显示或隐藏图像。
amp-img id='img1' ... hidden
button on="tap.img1.show()"
button on="tap.img1.hide()"
对于移动站点,show按钮可以嵌入到以上折叠内容中,因此用户在浏览站点时可以触发它。但是,这似乎是一种不太完美的解决方法。
Google AMP是否有效地限制了延迟加载到手动方法,还是有其他方法可以实现视口或延迟延迟加载?
提前感谢您。