In my case, it was caused by Cache-Control settings.
Reference to enter link description here
Prefetched files are stored in the HTTP Cache if the resource is cacheable, otherwise it will be discarded and not be used.
So, I checked my setting, and found that the Cache-Control header was setted with "max-age=0".
Then update max-age option to a longer duration, like 50000ms, it works.
Also, reference to enter link description here
The page is kept in the HTTP cache for five minutes, after which the normal Cache-Control rules for the document apply. In this case, product-details.html has a cache-control header with a value of public, max-age=0, which means that the page is kept for a total of five minutes.
But, I didn't figure out why it dosen't work in my case.