laravel - Laravel 和 Google 应用引擎 flex 环境。在 nginx 配置中设置缓存控制不起作用
问题描述
我正在构建一个 laravel 应用程序,并且正在尝试启用浏览器缓存。
我试图在位于我的应用程序根目录的自定义 nginx-app.conf 文件中设置 expires/cache-control。(https://cloud.google.com/appengine/docs/flexible/php/reference/app-yaml)
nginx-app.conf 的内容:
location ~* \.(?:css(\.map)?|js(\.map)?|jpe?g|png|gif|ico|cur|heic|webp|tiff?|mp3|m4a|aac|ogg|midi?|wav|mp4|mov|webm|mpe?g|avi|ogv|flv|wmv|svgz?|ttf|ttc|otf|eot|woff|woff2) {
expires 30d;
add_header Pragma public;
add_header Cache-Control "max-age: 2592000,public";
}
但是标题仍然包含来自谷歌的 600 秒的默认缓存控制。
cache-control: max-age=600
cache-control: public
content-encoding: gzip
content-type: text/css
date: Fri, 14 Jun 2019 10:19:07 GMT
etag: W/"5d03719d-6ffe"
expires: Fri, 14 Jun 2019 10:29:07 GMT
last-modified: Fri, 14 Jun 2019 10:06:21 GMT
server: nginx
status: 200
vary: Accept-Encoding
via: 1.1 google
解决方案
我在 GAE flex 上的 Nginx 缓存中遇到了类似的问题,我无法在反向代理上找到修复程序。
我的猜测是你必须等待这些文件过期,然后你会看到新的缓存控制。
从这个角度来看,我发现 GAE 非常有限,例如在 AWS 上没有遇到过这种情况。
应用层的解决方法是
- 静态文件的缓存破坏/版本控制(您可以查看Sails.js 的此示例)
- 向请求添加缓存标头(相同链接,以下评论)
另请参阅此答案
推荐阅读
- c# - 奥尔良重试机制
- node.js - 我在这里想念什么?节点,快递,req.files['image0']
- html - justify-content space-between 不对齐元素左右
- java - 缺少访问 Raspberry Pi3 B+ 上输入设备的权限
- csv - 使用批处理文件从 csv 中删除具有字段中特定数据的行
- javascript - 如何在文档已经加载后将 JavaScript 添加到页面?
- ios - 离开标签栏视图控制器时如何删除标签栏?
- vuejs2 - VeeValidate 范围验证不起作用
- python - 将 aiohttp 与多处理相结合
- json - JSON模板失败,循环中的活动部署