Cloudflare APO is basically useless for serious advertisers and campaigns

Per the recommendation here – – I am creating this post.

Cloudflare APO is basically useless for serious advertisers and campaigns.

The issue is dynamic content is inferred to exist when a query string exists. Fair.

This is ignored if it matches Cloudflare’s pre-determined “most likely is not for dynamic content” list from the link above. Awesome.

But basically this means if you have just a single custom query param outside of their list for misc. custom analytics… APO is basically doing nothing for each of those requests for protecting an origin server.

An ignore query string feature would be awesome. How do we get this to be a feature?

But don’t you want those query strings passed through to your server for analytics?

1 Like

Nope and sorry if post is coming across as harsh. I’ll give simplified example of what I mean:

  • Imagine an agency with a WordPress powered page that allows them to embed a HubSpot form.

    • For reference the embed code is basically a JS snippet that generates a form on page load.
  • Now imagine they sent an email blast to 1-2MM people that had the their name in an email generated URL like so (There’s other params, IDs, sourcing, etc… firms like to pass around better but I’m just using first name since it’s easy to illustrate.)

  • Then let’s say you use the HubSpot API where onLoad you build the form with their name in the input value. Aka: input name="first_name" value="sdayman"

Cloudflare APO basically wouldn’t do much here to my knowledge. An origin server would effectively be open to 1-2MM unique URL requests (aka, basically useless). Cloudflare has realized this bottleneck from what I can tell and has common UTM and FB params ignored.

My request is to have an option to ignore query params effectively making the website near static. Right now the work around is just write custom cache keys with Workers which defeats the purpose and goal of APO in my opinion of just being super duper 5 second easy for $5/month. Simple caching for simple WordPress websites.

1 Like

I’m not big on marketing, but don’t you want those query strings for clickhere?first_name=sdayman passed through to the server? What other reason would you have to add that query string on a clickable link in a mail blast?

By the way, I suppose that if you don’t want those query strings coming through, you can use a Transform rule to strip that out. I do that for version strings. This may the part where @michael comes in and tells me it doesn’t work this way.


but don’t you want those query strings for clickhere?first_name=sdayman passed through to the server

Sometimes… Sometimes not. This is for third-party JS that just pass stuff to each other on init (which I think is pretty common). In the example I gave the form is generated via third-party JS. It’s not static in the HTML or rendered by the server.

transform stuff…

Interesting… I will have to mess and test this - thanks! A custom worker cache key is nice trick too I mentioned as an alternative. I still think APO is missing a big opportunity here to consider or add as a insta-feature which is I think the angle.

1 Like

Agreed. Cookies and Query Strings. Though I think all that is handled at the edge where users don’t have control over it. It’d be nice to shift that to the plugin, but I suspect APO caching is a single Worker template pushed out to all edge nodes.

Hey - Just following up here. I will be disabling Cloudflare APO.

I am confirming you can write a rule to ignore query params with a page transform rule of cache everything.

This basically bullet proofs any site WordPress website that doesn’t require query params / search.

So thanks for the tip.

I hope this post gets Cloudflare to rethink the strategy of what an automatic platform optimization should do for people who want to pay for insta-cache.

An an image for reference for anyone else coming on how fast and big of an impact.

Turned on at 130pm