通过 php 查询字符串提供的图像和视频的浏览器缓存

Browser Caching of images and videos served via php query strings

我正在制作一个要求用户登录才能访问任何内容的网站,因此所有视频和图像资产都是通过对 php 文件的请求提供的,例如:

example.com/media/?clip=668&q=h 服务器检查用户是否被允许,如果允许,则返回一个 mp4 文件,"q=h" 意思是 "i want the half-res video"

example.com/media/?clip=668&q=t 以 jpeg 文件响应,"q=t" 意思是 "i want the thumbnail"

它在我的网站上运行良好,我已经设置了 MIME 类型和所有内容。然而,Chrome 从不缓存任何这些资产,所以我的带宽飞涨。在 Chrome Inspector 的网络选项卡中,我的 css 和 js 文件来自“(来自内存缓存)”或“(来自浏览器缓存)”,但是我所有的重资产,图像和视频,都没有没有缓存。

如何让浏览器缓存这些?

谢谢@tim!

问题出在 headers 我和我的媒体一起服务。我查看了 Chrome 中的回复,上面写着:

Cache-Control: must-revalidate, no-cache, no-store

我没有设置这些,它一定是 apache 的默认值,因为我是通过脚本提供服务的?无论如何,要修复,我刚刚添加:

Cache-Control: public

到我的 PHP 文件,它似乎可以正常工作!