最强大的预加载图像的方法,以防止可见的图像加载?(没有JS)

Rob*_*sly 22 html php

我刚刚创建了一个图片上传功能,我有点失望.

在访问包含一张或多张照片的页面时,我遇到了:

  • 繁琐的加载时间(~0.5秒).

  • 不美观的图像加载(您可以看到从上到下的照片加载).

我的问题是:如何在将照片呈现给用户之前确保整张照片已加载(我试图找出一种方法来确保在image完全加载之前body)而不使用Javascript

注意:这个问题是假设正在从同一目录中的文件夹缓存加载照片.

Flu*_*nch 16

1.渐进式JPEG

为了避免图像的"从上到下"加载,您可以使用"渐进式jpeg",它在图片加载过程中呈现"模糊"版本,而不是"从上到下":Ex.:http://blog.patrickmeenan.com/2013/06/progressive-jpegs-ftw.html

2.嵌入式(以base64编码)

如果你真的想同时显示图片和页面,你应该将它们编码为base64并将它们包含在你的页面中:

<img src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAADIA..." alt="" />
Run Code Online (Sandbox Code Playgroud)

您可以通过PHP或任何服务器端脚本来完成.

<img src="data:image/jpeg;base64,<?=base64encode(file_get_contents($file_path))?>" alt="" />
Run Code Online (Sandbox Code Playgroud)

https://en.wikipedia.org/wiki/Data_URI_scheme#Web_browser_support

3.伪装成样式表(糟糕的黑客)

如果要在加载图像之前重新阻止渲染,可以在页面部分的<link rel=stylesheet>标记中将页面中的图像加倍<head>.

在加载CSS之前,浏览器不会显示页面,即使您的文件不是CSS,它也会加载并缓存它们,一旦加载,页面将呈现,您的图像将从缓存加载.

<html>
<head>
  <link rel="stylesheet" href="your_image_01.jpg" />
  <link rel="stylesheet" href="your_image_02.jpg" />
</head>
<body>
...
  <img src="your_image_01.jpg" alt="" />
  ...
  <img src="your_image_02.jpg" alt="" />
...
</body>
</html>
Run Code Online (Sandbox Code Playgroud)