Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
We Distribute
  1. Home
  2. Technical Support
  3. Cloudflare Caching

Cloudflare Caching

Scheduled Pinned Locked Moved Technical Support
7 Posts 3 Posters 0 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • C This user is from outside of this forum
    C This user is from outside of this forum
    chartung@community.nodebb.org
    wrote on last edited by
    #1

    To minimize load on our servers, I would like to set Cloudflare to cache as much of the content as possible.
    I'm assuming that any image files or anything with a css/js/json file extension is safe to cache.
    Obviously we can't cache html content for logged-in users, since there is user-specific data included in the headers.
    As far as I can tell, it should be safe to cache html content for guests as long as the TTL is short (guests cannot post on our site, if that's relevant). However, it's not clear how we can implement that. The express.sid cookie is set for guests, so we can't just cache when that cookie is absent. It should be possible to set a custom cookie on login and clear that cookie on logout, but I can't find anywhere to set that cookie. I'm using a fork of https://github.com/julianlam/nodebb-plugin-sso-oauth, and the only place I can find a res object is https://github.com/julianlam/nodebb-plugin-sso-oauth/blob/master/library.js#L124, but setting the cookie fails because res.cookie is undefined.

    Is there any way I can set a custom cookie on login, or ensure that NodeBB does not set an express.sid cookie for guests?

    julian@community.nodebb.orgJ djensen47@community.nodebb.orgD 3 Replies Last reply
    0
    • C chartung@community.nodebb.org

      To minimize load on our servers, I would like to set Cloudflare to cache as much of the content as possible.
      I'm assuming that any image files or anything with a css/js/json file extension is safe to cache.
      Obviously we can't cache html content for logged-in users, since there is user-specific data included in the headers.
      As far as I can tell, it should be safe to cache html content for guests as long as the TTL is short (guests cannot post on our site, if that's relevant). However, it's not clear how we can implement that. The express.sid cookie is set for guests, so we can't just cache when that cookie is absent. It should be possible to set a custom cookie on login and clear that cookie on logout, but I can't find anywhere to set that cookie. I'm using a fork of https://github.com/julianlam/nodebb-plugin-sso-oauth, and the only place I can find a res object is https://github.com/julianlam/nodebb-plugin-sso-oauth/blob/master/library.js#L124, but setting the cookie fails because res.cookie is undefined.

      Is there any way I can set a custom cookie on login, or ensure that NodeBB does not set an express.sid cookie for guests?

      julian@community.nodebb.orgJ This user is from outside of this forum
      julian@community.nodebb.orgJ This user is from outside of this forum
      julian@community.nodebb.org
      wrote on last edited by
      #2

      @chartung can CloudFlare just cache by respecting the cache control headers? That'd be the easiest and I'd be surprised if it could not.

      julian@community.nodebb.orgJ C 2 Replies Last reply
      0
      • julian@community.nodebb.orgJ julian@community.nodebb.org

        @chartung can CloudFlare just cache by respecting the cache control headers? That'd be the easiest and I'd be surprised if it could not.

        julian@community.nodebb.orgJ This user is from outside of this forum
        julian@community.nodebb.orgJ This user is from outside of this forum
        julian@community.nodebb.org
        wrote on last edited by
        #3

        @chartung you can also check out the scaling tips here:

        Link Preview Image
        Scaling - NodeBB Documentation

        Documentation portal for NodeBB Forum Software

        favicon

        (docs.nodebb.org)

        1 Reply Last reply
        0
        • julian@community.nodebb.orgJ julian@community.nodebb.org

          @chartung can CloudFlare just cache by respecting the cache control headers? That'd be the easiest and I'd be surprised if it could not.

          C This user is from outside of this forum
          C This user is from outside of this forum
          chartung@community.nodebb.org
          wrote on last edited by
          #4

          @julian No, Cloudflare can use the cache-control response header to determine how long to cache content, but not whether to cache content.
          Even if it was possible to cache based on response headers, it wouldn't be useful in this case; we want to ensure both that we're not serving user-specific content to guests (or other users) and that we're not serving guest-specific content to users, and the cache-control headers can only help with the former, not the latter.

          1 Reply Last reply
          0
          • C chartung@community.nodebb.org

            To minimize load on our servers, I would like to set Cloudflare to cache as much of the content as possible.
            I'm assuming that any image files or anything with a css/js/json file extension is safe to cache.
            Obviously we can't cache html content for logged-in users, since there is user-specific data included in the headers.
            As far as I can tell, it should be safe to cache html content for guests as long as the TTL is short (guests cannot post on our site, if that's relevant). However, it's not clear how we can implement that. The express.sid cookie is set for guests, so we can't just cache when that cookie is absent. It should be possible to set a custom cookie on login and clear that cookie on logout, but I can't find anywhere to set that cookie. I'm using a fork of https://github.com/julianlam/nodebb-plugin-sso-oauth, and the only place I can find a res object is https://github.com/julianlam/nodebb-plugin-sso-oauth/blob/master/library.js#L124, but setting the cookie fails because res.cookie is undefined.

            Is there any way I can set a custom cookie on login, or ensure that NodeBB does not set an express.sid cookie for guests?

            djensen47@community.nodebb.orgD This user is from outside of this forum
            djensen47@community.nodebb.orgD This user is from outside of this forum
            djensen47@community.nodebb.org
            wrote last edited by
            #5

            I had to enable Cloudflare to cut out a massive flood of Chinese bots/crawlers. I have to Pro plan so websockets should be supported but I get nothing but errors now:

            nodebb.min.js?v=qg59f2a0n14:70  POST https://www.axisandallies.org/forums/socket.io/?_csrf=556...a5a&EIO=4&transport=polling&t=PiQDHrJ&sid=AyNfwAoKNwtqarQqAP63 400 (Bad Request)
            

            I have a rule for everything under /forums to bypass the cache.

            1 Reply Last reply
            0
            • C chartung@community.nodebb.org

              To minimize load on our servers, I would like to set Cloudflare to cache as much of the content as possible.
              I'm assuming that any image files or anything with a css/js/json file extension is safe to cache.
              Obviously we can't cache html content for logged-in users, since there is user-specific data included in the headers.
              As far as I can tell, it should be safe to cache html content for guests as long as the TTL is short (guests cannot post on our site, if that's relevant). However, it's not clear how we can implement that. The express.sid cookie is set for guests, so we can't just cache when that cookie is absent. It should be possible to set a custom cookie on login and clear that cookie on logout, but I can't find anywhere to set that cookie. I'm using a fork of https://github.com/julianlam/nodebb-plugin-sso-oauth, and the only place I can find a res object is https://github.com/julianlam/nodebb-plugin-sso-oauth/blob/master/library.js#L124, but setting the cookie fails because res.cookie is undefined.

              Is there any way I can set a custom cookie on login, or ensure that NodeBB does not set an express.sid cookie for guests?

              djensen47@community.nodebb.orgD This user is from outside of this forum
              djensen47@community.nodebb.orgD This user is from outside of this forum
              djensen47@community.nodebb.org
              wrote last edited by
              #6

              If I turn off Cloudflare proxy, the problem stops. Also, my setup is like this:

              internet -> Cloudflare -> HAProxy —vpc-> NodeBB servers

              I'm wondering if I need to configure something between Cloudflare and the proxy?

              julian@community.nodebb.orgJ 1 Reply Last reply
              0
              • djensen47@community.nodebb.orgD djensen47@community.nodebb.org

                If I turn off Cloudflare proxy, the problem stops. Also, my setup is like this:

                internet -> Cloudflare -> HAProxy —vpc-> NodeBB servers

                I'm wondering if I need to configure something between Cloudflare and the proxy?

                julian@community.nodebb.orgJ This user is from outside of this forum
                julian@community.nodebb.orgJ This user is from outside of this forum
                julian@community.nodebb.org
                wrote last edited by
                #7

                @djensen47 what CF SSL settings are you working with? I think when CF terminates your SSL WS could go wonky... We use CF and web sockets work okay.

                1 Reply Last reply
                0
                Reply
                • Reply as topic
                Log in to reply
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes


                • Login

                • Don't have an account? Register

                • Login or register to search.
                Powered by NodeBB Contributors
                • First post
                  Last post
                0
                • Categories
                • Recent
                • Tags
                • Popular
                • World
                • Users
                • Groups