2014-02-24 68 views
0

我是一個WordPress的小白,試圖從一個網格中顯示多個帖子的圖像。我正在處理的網站基本上會將「精選圖片」的許多帖子(最多56個)顯示在主頁上,並在點擊時在帖子中加載圖片。 下面是我正在使用的代碼:WordPresspress:緩慢圖像加載時拉(大量)張貼圖像

$ args = array('numberposts'=> 56,'order'=>'DESC','orderby'=>'date','category'=>' 120'); $ postslist = get_posts($ args);

  if(count($postslist) > 0){ 
       foreach ($postslist as $post) : setup_postdata($post); ?> 
        <div class='oneCell'> 
         <?php 
          $image = get_the_post_thumbnail($this_post->ID, 'full size'); 
          $imageSrc = substr($image, strpos($image, "src") + 5); 
          $imageSrc = substr($imageSrc, 0, strPos($imageSrc, "\"")); 

          $finalImage = "<img class='lazy' src='/images/grey.png' data-original='" . $imageSrc . "' />"; 
          $lastImage = "<a href='"; 
          $lastImage .= catch_that_image(); 
          $lastImage .= "'>"; 
          $lastImage .= $finalImage; 
          $lastImage .= "</a>"; 

          echo $lastImage; 
         ?> 
        </div> 
       <?php 
        $currentCount = $currentCount + 1; 
       endforeach; 

在循環中的$lastImage創建一個「a」的標籤,通過一個jquery控制顯示的圖像。控制不是問題,因爲它在網站的另一部分工作得很好。 當渲染時,它基本上呈現沒有圖像的灰色方塊(正是我所期望的),但非常緩慢,每隔1/2 - 3/4秒渲染一個盒子,一次一個,直到它們全部完成,那麼該頁面按預期工作。

我的猜測是因爲我的代碼不是最高效的。有人能指出我正確的方向來清理嗎?或者關於如何加快加載時間的一些想法?

回答

1

我相信這個延遲不是由瀏覽器試圖顯示圖像引起的,而是PHP用56個查詢壓倒了DB。

本地函數旨在拉取一個帖子的縮略圖。如果您要查詢N個帖子的圖像,則應該使用自定義腳本直接從一個查詢中的wp_postmeta表中檢索縮略圖。

除了修改查詢($ wpdb類提供查詢方法來完成此操作)之外,還可以使用任何緩存機制僅在每次請求圖像時首次點擊數據庫。甚至W3TC插件也可以緩存get_thumbnail函數的結果。