Hi @v1101,
Check if ignore query string is enabled at CDN caching level, this might be the reason these JSON response are not getting cached when its accessed using dispatcher url & getting cached when its accessed using CDN website url. another option is, you can set below mentioned response header in backend servlet so that this response will not cached.
response.addHeader("Cache-Control","no-store no-cache");