How to leverage browser cache using .htaccess on nginx?
You can specify your cache expiry in the vhost configuration on Nginx server, for example:-
location ~* \.(js|css|png|jpg|jpeg|gif|ico)(\?ver=[0-9.]+)?$ {
expires 1y;
}
You'll only be able to use location
in a server block however (and not http
block) but you could insert this into a separate file and then include it in each server
block that requires this though.
Read up on leverage browser caching at Google.
Vikas Swami
Vikas is a serial entrepreneur and a seasoned technology professional having more than 12+ years of end-to-end project execution expertise in Networking, Cloud Technologies, and IT Security.
Updated on September 18, 2022Comments
-
Vikas Swami over 1 year
I'm trying to increase the pagespeed of our website ubercore.co. I'm using PageSpeed Insights for Chrome extension to analyze the pagespeed. It has suggested me to "Leverage browser cache". This is where I'm stuck.
I've tried some modifications to .htaccess file like this:
## EXPIRES CACHING ## <IfModule mod_expires.c> ExpiresActive On ExpiresByType image/jpg "access 1 year" ExpiresByType image/jpeg "access 1 year" ExpiresByType image/gif "access 1 year" ExpiresByType image/png "access 1 year" ExpiresByType text/css "access 1 month" ExpiresByType application/pdf "access 1 month" ExpiresByType text/x-javascript "access 1 month" ExpiresByType application/x-shockwave-flash "access 1 month" ExpiresByType image/x-icon "access 1 year" ExpiresDefault "access 2 days" </IfModule> ## EXPIRES CACHING ##
and get nothing.
Later did some research and found that .htaccess is only for Apache server. Correct me if I'm wrong.
But, when I see the header response of our webpage found that the server is nginx. Then why my host has the .htaccess file in web root? I'm confused.
What I need in short: How to cache static contents for this site?
Useful links: Nginx wiki
Update 1:
Here is a screenshot of what I have, server is nginx:
My question is simple, I need to cache all static content given the environment.
Update 2: As suggested by dan found that the server is indeed Apache not nginx. I don't really understand it but let it be it's off topic.
Now my problem:
Server software : Apache/2.4.7 (Unix)
Need : .htaccess code to set browser cache expiry time.
-
dan about 10 yearsYou should first confirm if your web host is using nginx to serve your site, or as a proxy, and if the former, then ask how you might cache content specific to nginx, which would not use a .htaccess file.
-
Vikas Swami about 10 years@dan The server is nginx. But my host is a shared server and he had an .htaccess file in web root by default. I've updated the question with screenshots for you.
-
dan about 10 yearsAlthough the header may indicate it's being served with nginx, it could be served through a proxy as well. For example, if your hosting company uses a CDN, the header might indicate ngninx when it's served through Apache. You should confirm that your site is being served with nginx, and not proxied through a CDN. If that's the case, then you should edit the question to remove all .htaccess reference in your title and question since that's not relevant. Lastly, your final sentence is not really a question at all.
-
Vikas Swami about 10 years@dan Thanks for the quick response dan. If the server happens to be Apache then why my .htaccess code is not working. Btw, the non-www to www rewrite rule is working fine.
-
zigojacko about 10 yearsVote to reopen. It is clear what is being asked currently. I can also provide an answer.
-
Stephen Ostermiller about 10 years@GeoffJackson-zigojacko: reopened
-