【问题标题】:Browser Caching of images and videos served via php query strings浏览器缓存通过 php 查询字符串提供的图像和视频
【发布时间】:2019-06-25 09:36:20
【问题描述】:

我正在制作一个需要用户登录才能访问任何内容的网站,因此所有视频和图像资产都通过对 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 文件来自“(来自内存缓存)”或“(来自浏览器缓存)”,但我所有的重资产(图像和视频)都没有缓存。

如何让浏览器缓存这些?

【问题讨论】:

  • make suer 为文件提供服务的脚本发送标头 Cache-Control,eTag,max-age 不确定此处还需要哪些其他标头,但这可能是问题所在

标签: php apache caching browser-cache


【解决方案1】:

谢谢@提姆!

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

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

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

Cache-Control: public

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

【讨论】:

    猜你喜欢
    • 2014-04-23
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-06
    • 1970-01-01
    • 2017-12-26
    • 2011-02-22
    相关资源
    最近更新 更多