[英]Load speed on an image-intensive webpage
我目前在一個投資組合網站上工作,在那里我必須在同一頁面上加載大量照片。
這些圖像是通過PHP動態加載的,目前,我選擇了預先保存這些圖像的縮略圖版本並進行加載。
但是,我擔心的是,如果該站點有大量用戶,這可能不是最佳解決方案:我基本上會將每個圖像的重復數乘以用戶上傳的圖像數。
我的問題是,對於這個問題是否有更好的解決方案? 一種在不損害太多空間的情況下盡快加載頁面的方法?
萬分感謝。
加載包含大量圖像的網頁會很慢。 其原因是由於傳輸這些圖像所需的帶寬。
您有幾種選擇
以平鋪模式加載完整圖像。 這些圖像將是完整圖像,只是調整大小以適合“縮略圖”視圖。 這樣做的好處是您只保存1張圖像,但是該圖像是全尺寸的,因此加載時間很長。
按照您說的那樣加載縮略圖。 這樣做的好處是性能,但是您需要為每個圖像存儲兩個副本。 另外,根據您處理縮略圖創建的方式,您可能會要求用戶上傳圖像的兩個副本以提供自己的縮略圖...這可能會發臭。
加載縮略圖,但在上傳時動態生成縮略圖。 您實際上是在磁盤上保留映像的兩個副本,但是您是通過一些php映像修改API動態創建的。 這樣可以更快地加載,但是仍然會占用磁盤空間。 它還最小化了提供縮略圖的用戶/管理要求。
根據要求,按需加載縮略圖。 這種方法需要進行一些測試,因為我從未嘗試過。 基本上,您將調用php圖像修改API(或將其更好地外包給本機解決方案!)來創建要使用的一次性(或緩存的)縮略圖。 您可能會說“ OMG,這將花費很長時間!”。 我認為,如果您應用適當的緩存機制,那么這種方法實際上可能會有用,這樣您就不會不斷地重新創建相同的縮略圖。 它將限制帶寬,並且由於這里的限制因素是網絡連接,因此它可能比僅發送完整圖像更快(因為創建縮略圖的限制因素現在是CPU /內存/硬盤)。
我認為#4是一個有趣的概念,可能值得探討。
我認為是:
A.利用高速緩存(系統高速緩存,標頭中的高速緩存,HTTP高速緩存..所有高速緩存)
B.不要一直產生Thumb
C.使用諸如Gearman
或beanstalkd
的Job Queing系統生成拇指,這樣您就不必立即做
D.使用Imagick
更有效
E.分頁
F.僅在修改原始文件后,示例才會生成Thumb
$file = "a.jpg" ;
$thumbFile = "a.thumb.jpg" ;
$createThumb = true;
if(is_file($thumbFile))
{
if((filemtime($file) - 10) < filemtime($thumbFile));
{
$createThumb = false;
}
}
if($createThumb === true)
{
$thumb = new Imagick();
$thumb->readImage($file);
$thumb->thumbnailImage(50, null);
$thumb->writeImage($thumbFile);
$thumb->destroy();
}
考慮對所有圖像使用精靈或拼貼,以便僅加載一個較大的圖像,從而節省帶寬並減少頁面加載時間。
同樣,正如已經建議的,分頁和異步加載可以改善它。
參考文獻:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.