crunch/ssi-bundle

此包已被弃用且不再维护。未建议替代包。

为 Symfony2 应用程序设计的服务器端包含 (SSI) 段渲染器

安装: 616

依赖: 0

建议者: 0

安全: 0

类型:symfony-bundle

v0.3.0 2016-02-04 20:57 UTC

This package is auto-updated.

Last update: 2023-01-10 21:48:33 UTC


README

注意:从 Symfony 2.6.0-beta1 开始,SSI 支持已集成到 Symfony 本身,因此此包是“部分弃用”,主要用于支持 <2.6。也就是说,当与 >=2.6 的版本不兼容时,我建议使用内置功能而不是此包。

Build Status Total Downloads Latest Stable Version

为与 nginx 一起使用的 Symfony2 应用程序设计的 SSI 支持,但也适用于其他服务器。它包括一个内核代理类,用于在开发过程中替换 SSI 标签,或作为后备方案。

安装

如常

  • 将相应的包添加到您的 composer.json 文件中。请参阅上面的链接获取可用包列表,或直接使用 "crunch\ssi-bundle":"dev-master"
  • 在您的 AppKernel 类中注册 Crunch\Bundle\SSIBundle\CrunchSSIBundle

      new Crunch\Bundle\SSIBundle\CrunchSSIBundle
    

用法

在 twig 中

{{ render('/path/to/interal', {strategy: 'ssi'}) }}

内核代理

通常,在开发过程中将 inline 设置为 true 就足够了(见下文)。但是,您可以使用一个内核代理,它将充当 SSI 服务器。在您的 app_dev.php

$kernel = new AppKernel($env, $debug);
// prepare kernel
$kernel = new \Crunch\Bundle\SSIBundle\KernelProxy\SSIProxy($kernel);
$kernel->run();
$kernel->terminate();

配置

crunch_ssi:
    inline:     false
    use_header: false
选项描述
inline是否始终使用内联片段渲染器。
use_header是否尊重请求并创建响应头。

技术上,inline 禁用了 SSI 标签的渲染。如果您不再想使用 SSI,但模板中存在多个 SSI 片段渲染器的调用,这将非常有用,否则会导致“未知渲染器 'ssi'”。它也适用于开发。

如果将 use_header 设置为 true,则当没有设置 Surrogate-Capability 请求头时,将回退到内联片段渲染器。此外,它还将添加一个 Surrogate-Control 响应头。

注意,默认的内联片段渲染器不处理任何缓存头。因此,如果您想在其他模板中渲染短暂的片段,即使它们在理论上已过时,它们也可能被包含在页面中,因为整个页面仅受主请求的缓存头的影响。

关于 Nginx 的说明

通常,在您的 nginx.conf(或包含文件)中设置 ssi on 应该没有问题。但是,存在问题:请求 URI。

  • 当设置为 $request_uri 时,它将始终使用初始请求来请求后端(php-fpm)。这会导致无限递归,最坏的情况是简单地杀死您的浏览器。
  • 当设置为 $uri 时,它将使用完全重写的 URI,这可以工作,但脚本文件名(通常是 /app.php)已经添加。

因此,最终它对我工作得很好

fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_param           PATH_INFO $fastcgi_path_info;
fastcgi_param           PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param           REQUEST_URI $fastcgi_path_info;

如你所见,我将请求 URI 设置为 PATH_INFO。这可以工作,因为 Symfony2 并不真正关心 真实 的请求 URI。至少到目前为止,我没有注意到任何副作用。

要求

  • PHP >= 5.3

贡献者

有关如何贡献的详细信息,请参阅 CONTRIBUTING.md。

许可证

本库采用MIT许可证授权。有关详细信息,请参阅LICENSE文件。