首页 > 解决方案 > 浏览器缓存通过 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 文件来自“(来自内存缓存)”或“(来自浏览器缓存)”,但我所有的重资产、图像和视频都没有缓存。

我怎样才能让浏览器缓存这些?

在此处输入图像描述

标签: phpapachecachingbrowser-cache

解决方案


谢谢@提姆!

问题出在我与媒体一起服务的标题中。我查看了 Chrome 中的响应,它说:

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

我没有设置这些,它必须是 apache 的默认值,因为我是通过脚本服务的?无论如何,要修复,我只是添加了:

Cache-Control: public

到我的 PHP 文件,它似乎正在工作!


推荐阅读