php - 浏览器缓存通过 php 查询字符串提供的图像和视频
问题描述
我正在制作一个需要用户登录才能访问任何内容的网站,因此所有视频和图像资产都是通过对 php 文件的请求提供的,例如:
example.com/media/?clip=668&q=h
服务器检查用户是否被允许,如果允许,则以 mp4 文件响应,“q=h”表示“我想要半分辨率视频”
并
example.com/media/?clip=668&q=t
以 jpeg 文件作为响应,“q=t”表示“我想要缩略图”
这一切都在我的网站上运行良好,我已经设置了 mime 类型和所有内容。但是,Chrome 从不缓存这些资产中的任何一个,因此我的带宽飞速增长。在 Chrome Inspector 的网络选项卡中,我的 css 和 js 文件来自“(来自内存缓存)”或“(来自浏览器缓存)”,但我所有的重资产、图像和视频都没有缓存。
我怎样才能让浏览器缓存这些?
解决方案
谢谢@提姆!
问题出在我与媒体一起服务的标题中。我查看了 Chrome 中的响应,它说:
Cache-Control: must-revalidate, no-cache, no-store
我没有设置这些,它必须是 apache 的默认值,因为我是通过脚本服务的?无论如何,要修复,我只是添加了:
Cache-Control: public
到我的 PHP 文件,它似乎正在工作!
推荐阅读
- mysql - 你如何从 docker 中连接到 mysql 服务器?
- api - 在 Vue 中挂载时,Axios 数据不会被转移到数据中
- nginx - 使用 nginx 服务两个 React 项目的问题
- github - 有没有办法在 Github 上隐藏分支?
- javascript - 单击连字符最小化按钮的奇怪问题
- pandas - SAS Do 循环到 Pandas 创建新变量
- spring-security - Spring 原生 - CustomAuthenticationManager (ReactiveAuthenticationManager)
- python - 我有一个 automod 设置,但是当我尝试在用户触发事件时提及用户时,我收到一个 ctx 错误,它说未定义作者
- android - 任务“:app:checkDebugAarMetadata”执行失败。当我尝试在 Android Studio 中运行我的程序时
- python - Pandas.Series.Str.Find 在列表中与 x 混合