2022-05-11 12:07:04
重新创建的img图片没有发起任何请求,是因为浏览器缓存机制导致的。
强缓存:如果缓存未过期,浏览器不会将请求发送到服务器,直接从缓存中读取资源。此时,在Network面板中虽然看不到新的请求,但可以看到缓存记录(如memory cache或disk cache)。
协商缓存:即使配置了协商缓存,如果浏览器认为缓存仍然有效(例如,通过Last-Modified或ETag判断),它可能仍然不会发起新的请求到服务器,而是直接从缓存中加载。这解释了为什么在Network面板中看不到任何请求记录。
添加随机数或时间戳:虽然你提到不想这样做,但这是最直接的方法来确保每次请求都被视为新的请求,从而绕过缓存。
使用AJAX请求:如你所述,通过AJAX发起请求可以更好地控制缓存行为。你可以设置请求头来强制验证缓存(如Cache-Control: no-cache或Pragma: no-cache),这样即使图片地址不变,服务器也会被询问是否返回新资源。
服务端配置:确保Nginx或其他服务器的缓存配置正确,以便在资源更新时能够正确处理协商缓存请求。