laravel 静态响应,静态图片响应,静态页面响应 非伪静态,操作笔记

《laravel 静态响应,静态图片响应,静态页面响应 非伪静态,操作笔记》

在此之前先了解 Cloudflare CDN加速緩存状态cf-cache-status的5种状态

cf-cache-status:HIT:你的文件已经命中CF缓存。这表示用户获取文件的方式途径为从CF缓存服务器中获取而非你的源服务器,不消耗你的服务器资源。

cf-cache-status:MISS:CF已经在缓存服务器中查找了你所请求的文件,但是并没有找到,CF的缓存服务器将会回源至你的服务器中获取该文件,当下次请求时该文件就会显示HIT

cf-cache-status: BYPASS:CF已经被要求不缓存该文件,用户将直接从网站源服务器中获取文件,这个通常是因为请求的文件响应了NO-Cache header

cf-cache-status:EXPIRED:自上次缓存之后,文件的缓存期限已经过期,CF将会再度回源至网站源服务器进行获取文件,当下次请求时该文件就会显示HIT

cf-cache-status:DYNAMIC:这个文件默认不会缓存,也没有对应的缓存配置,用户将从网站源服务器获取该文件。

起因

起因:图片经过压缩加水印等处理后输出到浏览器,但处理后的图片或HTML,Cloudflare不会缓存,这就是问题所在!

经过博主的反复测试:添加响应头,所有响应头跟nginx静态请求时一模一样,但结果都是 DYNAMIC 😞😞😞,只有在服务nginx不走php的情况下,cf-cache-status才会出现HIT,相反,一旦使用了php,所以的请求响应都会是cf-cache-status:DYNAMIC(不缓存) ,可能是博主的研究还不够透切,如有高人知道,请指点,不胜感激!!

无奈,只能使用一个折中的办法,第一次生成的文件放入缓存文件夹并直接响应 ,第二次响应则由 nginx的 try_files来调用缓存 ,不走php

生成缓存文件,统一放入缓存文件夹

# mkdir /www/cache 
# chmod 777 /wwww/cache

//软链接
# ln -s  /storage/cache(存在) /usr/share/xxxxx/public/cache(不存在)
ln -s /usr/share/nginx/html/77book.cn/mix.77book.cn/artisan /root/artisan

测试html是否请求成功

https://xxxx.net:/cache/$host_path/xxx/xxx.jpg

Nginx配置

.....
try_files  $uri  /cache/$host/$uri /index.php?$uri&$args;
.....

完成

后记,nginx输出的图片都是DYNAMIC,看来 Cloudflare缓存机制有点神奇

点赞

发表评论

邮箱地址不会被公开。 必填项已用*标注