使用php的laravel框架写的项目, 无法实现浏览器缓存

来源:3-7 Nginx作为静态资源web服务_浏览器缓存场景演示

愤怒的米饭

2020-04-13

老师好.
我使用LNMP环境, 用php7.2, laravel5.8写了一个网站. 希望通过配置nginx.conf实现浏览器缓存.
nginx配置文件如下:
图片描述
由于担心laravel框架自己设置请求头, 我还特意添加了fastcgi_ignore_headers . 但是从浏览器查看到的情况来看, 依然无法实现浏览器缓存, 在浏览器端可以看到max-age, last-modify, expires等字段, 但是响应码始终是200 , 不是304. 如下图:

图片描述

我想请教三个问题:

  1. 为什么我设置浏览器缓存不能成功? 应该如何做?
  2. 如上图一. 我的nginx.conf配置中. fastcgi_ignore_headers 是不是只设置在.php的location中就可以了? 图片和js文件那两个location就不需要了吧? 因为只有.php那个location是走fastcgi的. 图片和js文件那两个location类似于动静分离, 没有走fastcgi的逻辑, 所以就不需要了. 我这样理解对么?
  3. 如上图一, 我在conf文件配置中, 所有的location中, max-age配置的都是3600s; 为什么在上图三中, 请求.js或.css静态文件时, max-age的值是10800秒, 而图二中, 请求php动态接口时显示的是正常的3600秒?
写回答

1回答

Jeson

2020-04-14

1、我的nginx.conf配置中. fastcgi_ignore_headers 是不是只设置在.php的location中就可以了? 图片和js文件那两个location就不需要了吧? 因为只有.php那个location是走fastcgi的. 

是的 理解没错。

2、如上图一, 我在conf文件配置中, 所有的location中, max-age配置的都是3600s; 为什么在上图三中, 请求.js或.css静态文件时, max-age的值是10800秒, 而图二中, 请求php动态接口时显示的是正常的3600秒?

这里 你用expires来设置。

expires 1h;

看看是否匹配预期?


0
1
愤怒的米饭
老师, 我想知道第一个问题是什么解? 为什么我所有的配置都做了, 但是浏览器依然显示200, 不是304?
2020-04-14
共1条回复

Nginx入门到实践-Nginx中间件应用+搭建Webserver架构

中间件、负载均衡、应用层安全防护、动静分离、Nginx+LUA开发等

4183 学习 · 908 问题

查看课程