🚀 Apache & Nginx GZIP + Cache Optimization Guide
Improve your server performance, boost page loading speed, and achieve higher Google PageSpeed scores with proper GZIP compression and browser caching setup.
Improve your server performance, boost page loading speed, and achieve higher Google PageSpeed scores with proper GZIP compression and browser caching setup.
1️⃣ GZIP (Compression)
GZIP reduces the size of files sent from your server to the visitor’s browser. This speeds up page load time and saves bandwidth.
📁 Apache – /etc/httpd/conf.d/deflate.conf
Code:
<IfModule mod_deflate.c>
# Compress HTML, CSS, JS, XML, and fonts
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/x-font-otf
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE font/opentype
AddOutputFilterByType DEFLATE font/otf
AddOutputFilterByType DEFLATE font/ttf
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE image/x-icon
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
# Fix for older browsers
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent
</IfModule>
📁 Nginx – /etc/nginx/conf.d/gzip.conf
NGINX:
gzip on;
gzip_disable "MSIE [1-6]\\.(?!.*SV1)";
gzip_proxied any;
gzip_comp_level 5;
gzip_types
text/plain
text/css
application/javascript
application/x-javascript
text/xml
application/xml
application/rss+xml
text/javascript
image/x-icon
image/bmp
image/svg+xml;
gzip_vary on;
2️⃣ Cache (Browser Caching)
Browser caching stores static files (like images, CSS, and JS) on the user's device for a certain period. This makes pages load much faster on repeat visits.
📁 Apache – /etc/httpd/conf.d/expires.conf
Code:
LoadModule expires_module modules/mod_expires.so
ExpiresActive On
ExpiresDefault "access plus 14 days"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType text/css "access plus 1 month"
ExpiresByType text/javascript "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType application/pdf "access plus 1 month"
ExpiresByType application/x-shockwave-flash "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 month"
ExpiresByType text/html "access plus 1 day"
📁 Nginx (inside your server block)
NGINX:
location ~* \.(jpg|jpeg|gif|png|svg|ico|css|js|pdf|woff|woff2)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}
3️⃣ Restart Services
After saving all configuration files, restart Apache or Nginx to apply changes.
Bash:
# Restart Apache
systemctl restart httpd
# Restart Nginx
systemctl restart nginx
✅ GZIP compression and caching are now active on your server!
You can verify with these tools:
GZIP Test • Cache Test
You can verify with these tools:
GZIP Test • Cache Test
Last edited by a moderator: