For one, you can make PoW progressive based on the number of requests you've encountered from the same IP address. This does hurt users behind NAT so it's not ideal, but it might be time we moved past NAT.
Secondly, 5 seconds is a lot but not unheard of; you could start PoW in the first lines of your html and load the rest of the assets while you're otherwise busy burning cpu time. 20ms quickly adds up at the scale scrapers operate. Which, according to cloudflare is > 50% of web requests.
For one, you can make PoW progressive based on the number of requests you've encountered from the same IP address. This does hurt users behind NAT so it's not ideal, but it might be time we moved past NAT.
Secondly, 5 seconds is a lot but not unheard of; you could start PoW in the first lines of your html and load the rest of the assets while you're otherwise busy burning cpu time. 20ms quickly adds up at the scale scrapers operate. Which, according to cloudflare is > 50% of web requests.