簡體   English   中英

FF和Safari和IE的延遲問題

[英]Latency problem on FF and safari and IE

所以我建立了一個功能來掃描基於$ _GET var的目錄,代碼為:

    $dir="img/".$_GET["gal"];
    $a=scandir($dir);
    $b=array_slice($a,2);


    for($i=1,$j=1;$i,$j<=count($b);$i++,$j++){
    $marginRight=($i==6||$i==12||$i==18||$i==24||$i==30||$i==36)?"margin-right: 0":"margin-right: 13px";
    if($i<10 && $j<10)
    echo '<div class="GalThumbs" style="'.$marginRight.'"><a href="'.$dir.'/'.$_GET["gal"].'-0'.$j.'.jpg"  rel="example3"><img src="'.$dir.'/'.$_GET["gal"].'-0'.$i.'.jpg"/></a></div>';
    else{
     echo '<div class="GalThumbs" style="'.$marginRight.'"><a href="'.$dir.'/'.$_GET["gal"].'-'.$j.'.jpg"  rel="example3"><img src="'.$dir.'/'.$_GET["gal"].'-'.$i.'.jpg"/></a></div>';
     }
   /* if($i==11)
    break;  */

}

如果要掃描的圖像超過十個,則會發生延遲(瀏覽器重繪變慢),我使用注釋發現了這一點:

if($i==11)
    break;

如果它是 :

  if($i==10)
        break;

不會有延遲。 不明白這是怎么回事。

讓我們看一下您的代碼,我想您在所有代碼及其作用中都迷失了方向。 通過一點清理,您應該能夠輕松調試延遲問題。

讓我們從for循環開始:

for($i=1,$j=1;$i,$j<=count($b);$i++,$j++)

兩個迭代器變量都並行設置。 我確定您在編寫內容時就已經考慮過,但這沒有任何意義。 如果不確定如何繼續,請嘗試減少問題。

一個變量完成任務。 同樣在這里:

if($i<10 && $j<10)

然后我偶然發現了這一點:

$marginRight=($i==6||$i==12||$i==18||$i==24||$i==30||$i==36)?"margin-right: 0":"margin-right: 13px";

您實際上正在尋找模數 :將$i的余數除以6

if / else塊都包含相同的代碼。 根本不需要使用它。

然后,我假設要進行調試,請使用break退出for循環。

除此之外,您的代碼還可受益於縮進。

而且實際上只讀取目錄以獲取文件數,因此可以減少代碼以獲取文件數。

我們試試吧:

$gal = $_GET["gal"]; // FIXME sanitize the input
$dir = sprintf('img/%s', $gal);
$max = count(scandir($dir))-2;

for($i=1; $i<=$max; $i++)
{
    $marginRight = ($i % 6 ? '13px' : '0');
    $style = sprintf('margin-right: %s', $marginRight);        
    $src = sprintf('%s/%s-0%d.jpg', $dir, $gal, $i);      

    echo '<div class="GalThumbs" style="', htmlspecialchars($style), '">',
           '<a href="', htmlspecialchars($src), '" rel="example3">',
             '<img src="', htmlspecialchars($src),'"/>',
           '</a>',
         '</div>'
    ;

    // FIXME debug
    /* if($i==11) break;  */
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM