【发布时间】:2012-12-07 21:07:52
【问题描述】:
我有以下 PHP 文件:
<?php
Header('Content-Type: application/javascript');
echo "// Some dynamically generated JavaScript here...";
所以它是一个 .php 文件,但它被解释为一个 JavaScript 文件。我会将它加载到这样的网页中:
<script type='text/javascript' src='myjavascript.php'></script>
我的问题是关于访问此文件时发送的 HTTP 代码。每次我请求此文件(直接或通过请求它的网页)时,Chrome 开发工具都会显示 200 OK 的状态。即使内容没有改变,也绝不是 304。
在内容没有改变的情况下,像这样动态生成的文件是否可以得到 304 Not Modified?如果不是,为什么?
我还使用了一些允许路由的 PHP 框架,例如:/js/myjavascript.js。所以我可以把上面的代码放在那个路由中,以同样的方式动态生成 JavaScript。但同样,每次仍然是 200,即使内容没有改变并且 URI 是一个 .js 文件。
有解决办法吗?在我的情况下,这个 javascript/php 文件的内容大约每天更改一次。所以我需要我的访问者浏览器大部分时间缓存文件(304 未修改),但当它确实发生变化时,我需要他们的浏览器下载并缓存新版本(200 OK)。
【问题讨论】:
-
仅供参考,这个问题与您正在生成 JavaScript 的事实无关,特别是。我之前在 StackOverflow 上看到过这个问题的一般页面......目前无法找到它,但如果您搜索从 PHP 创建适当的可缓存响应,您可能会有更好的运气。
标签: php apache browser browser-cache http-status-code-304