Does a CSP nonce need to change on every page load?
Yes. A nonce must be freshly generated for each HTTP response using a secure random generator. If you cache a page together with its nonce, or reuse the same value, an attacker who observes one valid nonce could replay it inside injected markup, which defeats the protection. Static or cached pages usually need hashes instead.