Improving Website Image Load Speed with PHP-FPM Optimization: Compression, Lazy Loading, CDN, Parallel Loading, and Browser Caching
This article demonstrates how to accelerate website image loading by applying PHP‑FPM performance optimizations such as image compression with GD, jQuery lazy loading, CDN acceleration, multithreaded parallel fetching, and proper browser‑cache headers, providing complete code examples for each technique.
In today's internet era, images play a crucial role on websites, and fast image loading is essential for user experience. This article demonstrates PHP‑FPM performance optimization techniques to improve image load speed.
Image Compression
Image compression reduces file size, speeding up downloads. In PHP, libraries such as ImageMagick or the GD extension can be used. Below is an example using GD:
<?php
function compressImage($source, $destination, $quality) {
$image = imagecreatefromjpeg($source);
imagejpeg($image, $destination, $quality);
imagedestroy($image);
}
compressImage("source.jpg", "destination.jpg", 80);
?>Lazy Loading
Lazy loading delays image loading until the image enters the viewport, reducing initial page load time. The following jQuery example implements lazy loading:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$(function () {
$("img.lazy").lazyload();
});
</script>
<img class="lazy" src="placeholder.jpg" data-original="real-image.jpg" alt="Lazy Loaded Image">CDN Acceleration
Content Delivery Networks cache images on edge servers closer to users, accelerating delivery. Example using a CloudFlare CDN URL:
<img src="https://example.com/image.jpg" alt="CDN Accelerated Image">Parallel Loading of Multiple Images
Loading several images concurrently via multiple HTTP requests can reduce overall download time. The following PHP example uses multithreading to fetch images in parallel:
<?php
function getImage($url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
$urls = array("image1.jpg", "image2.jpg", "image3.jpg");
$responses = array();
$threads = array();
foreach ($urls as $url) {
$thread = new Thread('getImage', $url);
$thread->start();
$threads[] = $thread;
}
foreach ($threads as $thread) {
$thread->join();
$responses[] = $thread->getResponse();
}
foreach ($responses as $response) {
echo "<img src='data:image/jpeg;base64," . base64_encode($response) . "'>";
}
?>Browser Cache‑Based Image Loading
Setting appropriate HTTP cache headers allows browsers to reuse cached images, avoiding repeated downloads. The following PHP snippet configures a 7‑day cache period for an image:
<?php
$filename = "image.jpg";
$expiry = 60 * 60 * 24 * 7; // cache for 7 days
header("Pragma: public");
header("Cache-Control: max-age=" . $expiry);
header("Expires: " . gmdate("D, d M Y H:i:s", time() + $expiry) . " GMT");
header("Content-type: image/jpeg");
readfile($filename);
?>Conclusion
By applying PHP‑FPM optimization techniques such as image compression, lazy loading, CDN acceleration, parallel loading, and proper browser caching, website image load speed can be significantly improved, enhancing overall user experience.
php中文网 Courses
php中文网's platform for the latest courses and technical articles, helping PHP learners advance quickly.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.