通过 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 文件,它似乎可以正常工作!
我正在制作一个要求用户登录才能访问任何内容的网站,因此所有视频和图像资产都是通过对 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 文件,它似乎可以正常工作!