想知道一些事情。
http header 是否缓存页面上的所有内容。如果我有一些 javascript 文件,它也会为后续页面缓存它们,还是更复杂。示例:如果我在 page1.php 上缓存所有 javascript 文件,这些文件是否仍会缓存在 page2.php 上,或者它是否仅对 page1.php 缓存 page1.php 的文件。
另一个问题是...
我应该废弃 http header 并只使用 APC 吗?如果是的话它有多复杂,或者实际上是否可以同时使用两者(询问因为 yslow 说使用 http header )。感谢您提供任何信息,我一直在阅读,但这些问题并没有在文本中得到真正的回答。
最佳答案
如果您只是提供常规 .js
,您的网络服务器将为您负责缓存文件。 .js
文件将在第一次从您的一个页面链接时下载。当用户重新加载该页面,或完全转到另一个使用相同 .js
的页面时文件,浏览器将使用缓存的副本。当您通过 <script src="code.js"></script>
加载脚本时,这适用标签。
那是如果你有独立的,独立的 .js
文件。另一方面,如果您的 JavaScript 代码隐藏在您的 PHP 脚本生成的 HTML 中,例如:
<script type="text/javascript">
alert("Hello world!");
</script>
...这些脚本将在每次您的 .php
时重新生成文件被加载。如果您希望缓存 PHP 脚本的输出,那么您将需要通过从 PHP 脚本设置适当的 HTTP header 来自行管理缓存,即通过 Cache-Control
header 系列或 If-Modified-Since
和 ETag
标题样式。
不过,缓存和 PHP 文件通常不会放在一起,因为您通常会生成根据用户输入、一天中的时间、cookie 等而变化的动态内容。由于缓存纯粹是一种优化,因此一般编程警告反对过早的优化适用。如果你弄乱了你的 HTTP header ,你可能会给自己带来很多麻烦(相信我!)。根据经验,您可能只让 Apache 或 IIS 处理像这样的高级 HTTP 事务,并且只有在您有特定需要的情况下才处理 HTTP header 。
关于php http header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1030482/