First, the refresh principle is different.
The request header of an HTTP request triggered by F5 usually contains If-Modified-Since or If-None-Match fields, or both;
The request header of the HTTP request triggered by CTRL+F5 does not have the above two headers, but it has a Pragma: no-cache or Cache-Control: no-cache field, or both.
Second, the server returns different.
F5 refresh server returns 304 unmodified; ;
Ctrl+F5 refresh returns HTTP status code 200, because when Ctrl+F5 sends a request, it will add Cache-Control:no-cache and Pragma:no-cache parameters in the request header.
Third, the refresh results are different.
The F5 refresh button only refreshes the current page and the local cache;
Ctrl+F5 will also refresh the page, but it will delete the files in the temporary folder in the browser and download them from the server again.
For example, if a website updates the style.css file, if you just press F5 to refresh it, the current page will still use the unmodified content of the style.css file. If you press Ctrl+F5, the style.css file will be downloaded from the server again and the modified style.css file will be used.