php http标头

时间:2009-06-23 03:19:29

标签: php html http caching

想知道几件事。

http标头是否缓存页面上的所有内容。如果我有一些javascript文件,它会缓存它们以及后续页面,或者它更复杂。示例:如果我在page1.php上缓存所有javascript文件,文件仍然会缓存在page2.php上,或者它是否缓存了page1.php的文件,只适用于page1.php。

另一个问题是......

我应该废弃http标头并且只使用APC,如果是这样,它有多复杂,或者实际上可以同时使用它们(要求cuz yslow说要使用http标头)。感谢任何信息,我一直在阅读,但这些问题在文中没有真正回答。

2 个答案:

答案 0 :(得分:4)

如果您只提供常规.js文件,您的网络服务器将为您提供缓存。 .js文件将在首次从您的某个网页链接时下载。当用户重新加载该页面,或者完全转到另一个使用相同.js文件的页面时,浏览器将使用缓存副本。当您通过<script src="code.js"></script>标记加载脚本时,这适用。

如果您有独立的.js文件,那就是这样。另一方面,如果您的PHP代码生成的HTML中隐藏了JavaScript代码,例如:

<script type="text/javascript">
  alert("Hello world!");
</script>

...每次加载.php文件时都会重新生成这些脚本。如果您希望缓存PHP脚本的输出,那么您需要通过从PHP脚本设置适当的HTTP标头来自行管理缓存,通过Cache-Control标头系列或{{1} }和If-Modified-Since标题样式。

缓存和PHP文件通常不会一起使用,因为您通常会生成基于用户输入,时间,Cookie等更改的动态内容。因为缓存纯粹是一种优化通用编程警告反对过早优化适用。如果你搞砸了你的HTTP标题,你可能会让自己感到很头疼(相信我!)。根据经验,您可以让Apache或IIS处理类似这样的高级HTTP事务,如果您有特定的需要,则只能使用HTTP标头。

答案 1 :(得分:1)

我认为你混淆了不同类型的缓存。你在这里谈到了3到4个非常不同的东西。

  1. 浏览器缓存 - 任何普通的浏览器都会在页面之间缓存图像,JS文件和CSS文件。这意味着,浏览器第二次想要显示您站点中的任何特定图像时,它会从其本地磁盘缓存中加载它而不是返回到您的服务器。所有这些都发生了 - 不要乱用它,它只是有效。 (例外:浏览用户已关闭缓存,您已更改标头以避免缓存,您的mime.types未正确设置,因此浏览器不会正确处理这些文件。)

  2. 服务器端内容缓存 - 如果您的页面在服务器上缓慢呈现,您可以使用各种磁盘和RAM缓存方案来保持输出,并防止服务器必须呈现每个页面每一次。这仅适用于相当静态的网站或页面的静态部分。

  3. APC内容缓存 - APC具有允许您将任意内容填充到服务器端RAM缓存中的命令。如果你的系统需要花费很长时间来渲染,但可以被许多服务器命中重用,那么这是一个不错的选择。

  4. APC代码缓存 - 您的文本PHP脚本是“伪编译的”,然后发送到PHP运行时执行。这个“伪编译”阶段可能非常慢并且是冗余的,因此APC将“psuedo-compiled”PHP阶段缓存在RAM中。它可以非常方便地加速整个网站。

  5. 很抱歉,如果这是TMI。