首页 > 分类 > 网络百科 > 文章内容

BAE 指定文件格式设置过期时间

经过不懈努力不停苦逼地坚持排查,终于在前几天找到了页面重开后不自动刷新的原因,说到底是个自摆乌龙的尴尬事件:BAE php 5.5-web 的配置文件 app.conf 中不知道什么时候鬼使神差地被我添加了一行:- expire : .php modify 10 years。我还纳闷之前怎么看所有页面的过期时间都是 2026 年呢,看到这一幕差点没昏过去。删掉它。可有了这次难忘的经历貌似心里也产生了阴影,把所有页面设置为禁止缓存吧!于是在 header.php 中默默添加了下面这几行:

header( 'Cache-Control: no-cache, no-store, must-revalidate, max-age=0' );
header( 'Cache-Control: post-check=0, pre-check=0', false );
//header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' );
header( 'Expires: -1' );
header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' );
header( 'Pragma: no-cache' );

Expires: -1 为立即过期,与它前一行意思相同,但是为保留写法所以加了注释符号放在那里。设置完毕,查看响应头中禁用缓存的这些头信息可以正常输出,跟打了针镇静剂一样心里迅速平静了下来。可这平静没持续多长时间脑子里又产生了新的想法:php 页面倒是全部应用了禁缓存的设置,那其他类型文件怎么办,WordPress 全家福里还有 css,js,jpg,gif,ico,swf 等等等呢?

索性对百度开放云发工单,开启对客服的不间断骚扰模式,此处省略文字若干,截止到发稿前一天,已经成功将上述头信息设置转移到配置文件 app.conf 中了,当然除了 header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); 这一条,php 函数嘛,放到配置文件里它也不认识。啰嗦到此在文章末尾引出本文主题:如何在 BAE php 5.5-web 的配置文件 app.conf 中设置文件过期时间等头信息呢?写法基本如下:

handlers:
- header : Cache-Control no-cache, must-revalidate, max-age=0, post-check=0, pre-check=0
- header : Expires -1
- header : Pragma no-cache
- expire : \.jpg$ (access|modify) 12 (hours|seconds|minutes|days|weeks|months|years)

上面涵盖了前文提到的几乎所有头信息的写法,注意单位是复数,即便数量是 1。

行文至此,应该没什么后顾之忧了,F5 或者 Ctrl + F5 强制刷新下浏览器,缓存十年的页面可以被立刻刷新,不过后遗症还是有。前几天分享文章到微信里,顺着文章链接点了几个页面其中就包括首页。到现在看首页还是 4 月 4 号更新的最后一篇文章。可微信集成的浏览器居然无刷新按钮,看来想刷新就只能等到重刷系统清空数据,或者十年后的某一天了。

您可能还会对这些文章感兴趣
快来发表评论吧!
发表评论

您的电子邮箱地址不会被公开。必填项已用 * 标注

你好,新朋友!

emojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemoji