2016-07-29 19 views
-2

私は別のウェブサイトから1000以上の画像を取得しており、ユーザーが段階的にスクロールダウンするときにサーバー側で要求したいと考えています。私の問題は、それらがすべて一緒に読み込まれていると私はスクロール中に部分的にそれらを読み込む方法がわかりません。 Lazyloadは私の問題のクライアント側だけを解決します。PHP:サーバー側のページ設定で画像をスクロールする方法

CODE:

$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" />'); 
     } 
    } 
} 

@EDIT:

が、私は自分のサーバーにすべてのデータをクロールして、クライアント側でlazyload.jsでそれを出力すると私の問題を解決しました。

+0

img.onload = loadNextImage; –

+0

クライアント側からサーバー側を管理することはできません。ユーザーがスクロールすると、これはサーバー機能ではなくクライアントイベントです。 PHPはここで何もしません。あなたはjavascriptを使用する必要があります。 –

答えて

2

溶液を各srcが空であるせ、出力するデータタグ(例えばdata-img-src)の画像源で、次いでimgがビューになるとデータ・タグと(JSを使用して)、それを置き換えることができます。良いことは、imgの幅と高さをインラインで出力することです。これは、すべてのlazyloadプラグインではありませんが、ほとんどの場合、どのように動作するのですか?パフォーマンスを念頭に置いた最良のソリューションの1つです。まずイメージロードを無効にするためにjsを実行する必要はないからです。

私は個人的にこのためのプラグインを見つけ、プラグインの仕様に一致するようにPHPを修正します。

関連する問題