How to enable leverage browser caching for nginx?

Follow

Comments

17 comments

  • Avatar
    Atthawut Prathumrat

    nginx not ngnix :P

  • Avatar
    Yulia Plokhotnikova

    @minzkung Thanks! I corrected it :)

  • Avatar
    Horacio Stolovitzky

    Is possible to enable globally?

  • Avatar
    Bulat Tsydenov

    @Horacio Stolovitzky, Hi! Please check this article again, it now contains the steps how to enable it globally.

  • Avatar
    Kironet (Edited )

    Hi, after implementing this(not globally), my dynamic website stopped showing styles, images, etc.., and loading has time increased from 1.5s to +-10s. What can cause that? 

  • Avatar
    Thanhkieu2022

    Leverage Browser Caching you should use the plugin: Leverage Browser Caching
    link down: https://wordpress.org/plugins/leverage-browser-caching/

    I used for website: http://www.thuocmaxman.vn/ and get 99/100 points. only ... / google analytics.js (2 hours)

  • Avatar
    Robert Asilbekov

    @Bogdan Dovgopol

    Instructions in the article cannot increase loading time.  It looks like some rewrite directives are missing. 

  • Avatar
    Ivan Postnikov

    @Thanhkieu2022

    Thank you for sharing this information. This is another way of enabling Leverage Browser Caching.

    Other Pleskians may find it useful.

  • Avatar
    Sharul Hafiz

    Tried on Wordpress. Wordpress is not compatible with this. Will result in 404.

  • Avatar
    Ivan Postnikov

    @Sharul

    For Wordpress try this plugin.

  • Avatar
    Miomir Besarabic

    @Thanhkieu2022, @Ivan Postnikov

    This plugin is only for Apache but this is article about leverage browser caching for nginx. Please don't post wrong information.

     

     

  • Avatar
    Ivan Postnikov

    @Miomir

    Thank you for the notice about the plugin.

    I have double checked it. It is applicable for Apache only.

     

  • Avatar
    Miomir Besarabic (Edited )

    This works if you add under Apache & nginx Settings in Additional nginx directives:

    Add Expires Headers

    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 365d;
    }
    location ~* \.(pdf|html|swf)$ {
    expires 90d;
    }

    Add Cache-Control Headers

    location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 90d;
    add_header Cache-Control "public, no-transform";
    }

    I have tested with Wordpress and it works great. If Serve static files directly by nginx option is enabled in Domains > example.com > Apache & nginx Settings, it is required to disable it.

    Pingdom and GTmetrix honor this.

  • Avatar
    Markus Wernecke

    Thank you very much for all amazing and helpful articles.

    I use nginx only in subscription settings (service plans)

    Please, please, for all those who use this environment it would be the greatest gift if you could write also support articles for using

    only nginx

    Wish you all the best. PLESK is awesome...

  • Avatar
    Ivan Postnikov

    Hello @Markus!

    Thank you for the feedback.

    Sure, new articles are driven by demand. If there will be questions or issues regarding using Nginx only, the corresponding articles will be created.

  • Avatar
    Peter Shaw

    This works well for my WordPress installation and sets the expires headers that I'm after, however URLs for "virtual files" that don't physically exist on the server in WordPress [such as robots.txt] now return a 404 page. I believe this is because no further Nginx processing takes place after the headers are set with the location directive.

    Much advice on the internet suggests the use of try_files directive but the solution I am looking for is more along the lines of "for any file that doesn't physically exist on the server, ask Apache for it". Is something along these lines possible?

    I give robots.txt as an example but the solution needs to be generic so it can also handle secure files that are stored outside of the webroot with rewriting carried out by Apache.

  • Avatar
    Alexandr Shadrin

    Hello,  @Peter Shaw.

    Please try combining the directives with the ones specified in the following knowledge base article:

    A WordPress website on a Plesk server shows "404 Not Found" on all pages except index.php, when running on FPM by nginx

     

Please sign in to leave a comment.

Have more questions? Submit a request