Laravel Valet显示旧同名图片,删除后仍可访问问题求助
Laravel Valet 静态资源缓存问题:替换/删除图片后仍显示旧内容
问题核心是Valet依赖的Nginx默认开启了静态资源缓存机制,导致替换或删除public目录下的图片后,Nginx仍返回缓存的旧内容;而php artisan serve用的是PHP内置服务器,没有缓存,所以会正确返回资源不存在的状态。
解决方法如下:
强制刷新浏览器缓存
直接通过浏览器硬刷新跳过本地缓存:Windows/Linux按Ctrl + Shift + R,Mac按Cmd + Shift + R,强制重新请求服务器资源。清除Nginx的服务器端缓存
Valet的Nginx缓存默认存在系统缓存目录,Mac系统执行以下命令清除:sudo rm -rf /usr/local/var/nginx/cache/*执行后再重启Valet:
valet restart(Linux系统缓存目录一般为
/var/cache/nginx/,替换路径即可)给静态资源加版本号(长期方案)
在图片URL后追加版本参数,比如:<img src="/images/avatar.jpg?v=2" alt="Avatar">每次更新图片时修改版本号,这样浏览器会识别为新资源,避免缓存问题,同时不影响生产环境的缓存策略。
修改Valet配置禁用静态资源缓存(开发环境专用)
找到对应站点的Nginx配置文件(路径:~/.valet/Nginx/[你的域名].conf),添加以下配置段:location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires -1; add_header Cache-Control "no-cache, no-store, must-revalidate"; }保存后执行
valet restart,这样Nginx就不会缓存指定类型的静态资源,适合开发时频繁修改资源的场景。
内容的提问来源于stack exchange,提问作者Rizki
相关产品推荐
相关产品推荐

