【问题标题】:PHP: How to load images onscroll with server-side paginationPHP:如何使用服务器端分页加载图像
【发布时间】:2016-12-04 01:37:19
【问题描述】:

我从另一个网站获取超过 1000 张图片,我想在用户逐步向下滚动时在服务器端请求它们。我的问题是它们一起加载,我不知道如何在滚动期间部分加载它们。 Lazyload 仅解决了我的问题的客户端。

代码:

$url = 'http://mydomain/page/';
$string = '';
for($i=0; $i<10; $i++){
    $string .= FetchPage($url.$i);
  }
$image_regex_src_url = '/<img[^>]*'.
'src=[\"|\'](.*)[\"|\']/Ui';

preg_match_all($image_regex_src_url, $string, $out, PREG_PATTERN_ORDER);

$images_url_array = $out[1];

foreach ($images_url_array as $image) {
    $elements = explode('/', $image);
    $name = end($elements);
    $checkname = explode('.', $name);
    if(end($checkname) === 'jpg' || end($checkname) === 'png'){
        $img = 'images/'.$name;
        list($width, $height) = getimagesize($image);
        if($height < 4000 && $height > 300) {
            if(!file_exists($img)){
                file_put_contents($img, file_get_contents($image));
            }
            print_r('<img src="'.$img.'" width="900" />');
        }
    }
}

@编辑:

我解决了我的问题,将所有数据抓取到我的服务器,然后在客户端使用lazyload.js 将其输出。

【问题讨论】:

  • img.onload=loadNextImage;
  • 您无法通过客户端管理服务器端。当用户滚动时,这是一个客户端事件,而不是服务器功能。所以 PHP 在这里什么也没做。您必须使用 javascript。

标签: javascript php html css pagination


【解决方案1】:

一种解决方案是在数据标签(例如data-img-src)中输出图像源,让每个src 为空,然后在img 为在视图中。一件好事也是输出img 宽度和高度内联。这是大多数(如果不是全部??)延迟加载插件的方式,我认为这是考虑到性能的最佳解决方案之一,因为您不需要运行一堆 js 来首先禁用图像加载。

我会亲自为此找到一个插件并修改 php 以匹配插件规范。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-27
    • 1970-01-01
    相关资源
    最近更新 更多