Cloudflare Caching
-
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. Theexpress.sidcookie 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 aresobject is https://github.com/julianlam/nodebb-plugin-sso-oauth/blob/master/library.js#L124, but setting the cookie fails becauseres.cookieis undefined.Is there any way I can set a custom cookie on login, or ensure that NodeBB does not set an
express.sidcookie for guests? -
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. Theexpress.sidcookie 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 aresobject is https://github.com/julianlam/nodebb-plugin-sso-oauth/blob/master/library.js#L124, but setting the cookie fails becauseres.cookieis undefined.Is there any way I can set a custom cookie on login, or ensure that NodeBB does not set an
express.sidcookie for guests?@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.
-
@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.
@chartung you can also check out the scaling tips here:
-
@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 No, Cloudflare can use the
cache-controlresponse 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 thecache-controlheaders can only help with the former, not the latter. -
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. Theexpress.sidcookie 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 aresobject is https://github.com/julianlam/nodebb-plugin-sso-oauth/blob/master/library.js#L124, but setting the cookie fails becauseres.cookieis undefined.Is there any way I can set a custom cookie on login, or ensure that NodeBB does not set an
express.sidcookie for guests?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
/forumsto bypass the cache. -
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. Theexpress.sidcookie 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 aresobject is https://github.com/julianlam/nodebb-plugin-sso-oauth/blob/master/library.js#L124, but setting the cookie fails becauseres.cookieis undefined.Is there any way I can set a custom cookie on login, or ensure that NodeBB does not set an
express.sidcookie for guests?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?
-
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?
@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.