浏览器缓存php是否包含文件?(PHP和模板)

浏览器缓存php是否包含文件?(PHP和模板),php,templates,caching,Php,Templates,Caching,我只是想知道通过php include加载的文件是否会被浏览器缓存(我的预期行为) 我正试图找出一个更好的方法来设计我的模板引擎 我一直使用php包含作为页眉、页脚等。。模板制作 但是现在考虑重新使用dreamweaver模板,基本上是用完整的文档代码(包括页眉、页脚和全部)编写每个网页,并且在更新页眉部分时,dreamweaver会重写使用该模板的所有页面 我过去认为这是一种粗糙的、无趣的模板制作方法,但现在我意识到这真的很聪明。。没有更多的inlcudes和其他进程,只需提供大部分所需的可视

我只是想知道通过php include加载的文件是否会被浏览器缓存(我的预期行为)

我正试图找出一个更好的方法来设计我的模板引擎

我一直使用php包含作为页眉、页脚等。。模板制作

但是现在考虑重新使用dreamweaver模板,基本上是用完整的文档代码(包括页眉、页脚和全部)编写每个网页,并且在更新页眉部分时,dreamweaver会重写使用该模板的所有页面

我过去认为这是一种粗糙的、无趣的模板制作方法,但现在我意识到这真的很聪明。。没有更多的inlcudes和其他进程,只需提供大部分所需的可视数据的普通好的旧页面。我“认为”这比apache必须为每个包含运行更多线程要快。而且这些页面被完全缓存

像第二次访问home.php一样,将导致最小的带宽成本。。 vs php include(如果未缓存)必须在每次访问时在浏览器中一次又一次地发送,例如header.php数据

此外,DW模板实际上使我更容易编码/设计,其中php包含通常在可视视图/工具中呈现

只是想知道

PS
作为背景,我实际上使用了DW模板和PHP模板(某种混合使用DW的方式)。。我对这种方法感到非常舒服,并发现它非常直截了当。。因此,我对DW或PHP模板并不陌生

PHP的
include
与浏览器无关,浏览器不知道服务器上包含了什么内容。浏览器只能看到一个很长的HTTP文档,不管它是如何在服务器上组装的。浏览器仍然会缓存它

您想要的是缓存文档服务器端,这样就不必在每次请求时重新组装它

         SERVER SIDE                   CLIENT

+-----------+     +--------+   |    +---------+
|           |     |        |   |    |         |
|    PHP    | --> | Apache | --|--> | browser |
|           |     |        |   |    |         |
+-----------+     +--------+   |    +---------+

      ^                ^                 ^
      |                |                 |
include happens     document         sees only
    here          already fully     complete HTML
                 assembled here   document regardless

你知道,对于浏览器来说,页面是如何生成的并不重要。您可以使用PHP、Python、Java、Ruby或其他语言—这并不重要。Apache服务器(对于PHP)解析脚本并将结果HTML页面返回给浏览器。默认情况下,它由浏览器缓存-除非您使用pragma
,这指示浏览器不应缓存页面

当您在HTML而不是脚本中存储和服务页面时,它只会为您节省解析阶段,从而节省服务器上的资源,并且通常更快。这就是为什么大多数开发的web框架都包含生成、存储和服务已解析页面的能力,而不是“原始”脚本的能力。典型的场景是在PHP中检查页面是否被修改。如果已修改,则重新生成页面;如果不是-提供HTML而不是脚本。您还可以将此场景基于超时。它在web应用程序的某些部分中特别有用,在这些部分中,页面生成需要从数据库中获取大量不经常更改的信息。例如,在具有长产品或产品类别列表的页面上-分别添加新产品或产品类别时更新页面

因此,“模板化”(实际上是为完全解析的页面而不是脚本化的原始页面提供服务)可以节省服务器资源和页面交付时间,而不是浏览器请求