【问题标题】:How to implement Varnish within a Zend Framework 1.11 project如何在 Zend Framework 1.11 项目中实现 Varnish
【发布时间】:2011-12-02 01:17:32
【问题描述】:

我对 Varnish 了解不多,但据我所知,我需要在我的视图中包含 ESI 标签,对吗?

你们中的任何人对实施这种架构有什么反馈吗?

我已经找到了一些视图助手来设置 ESI 标签,但我不确定它们是否真的有效。

我想使用 Varnish 将我的主页缓存 10 到 30 秒。

采埃孚容易做到这一点吗?

【问题讨论】:

    标签: zend-framework varnish esi


    【解决方案1】:

    为什么要使用 ESI?

    在 AJAX 兴起之前,ESI 很有用。

    如今,开发人员更喜欢 AJAX,因为 ESI 让您依赖缓存引擎(没有缓存,您的网站将无法运行)。

    使用 Varnish 不需要 ESI;您需要 Varnish(或任何符合 ESI 的缓存系统)才能使用 ESI。

    仅当您需要将不同的缓存 TTL 混合到单个页面中时,才需要 ESI 或 AJAX。

    如果您想将整个主页缓存为单个对象,只需在您的 Web 服务器前运行 Varnish 并且不要对您的 PHP 代码进行任何更改,它只是使用一些 VCL 设置 Varnish 来仅缓存您的主页.

    【讨论】:

    • 感谢您的回答,虽然我需要使用 ESI 来激活 Varnish 但我明白了,谢谢。
    • 最后但同样重要的是,它如何与 session 一起工作?如果用户没有点击 php 服务器而是清漆,我的会话将如何工作?
    • 您应该就这个主题创建另一个问题,但基本上,会话通常使用 cookie 进行管理,因此不应被缓存。问自己一个问题:会话有什么用?是否应该缓存基于会话数据(=个性化)的请求?
    • 我知道这一点,但我的网站是一个协作网站,因此到处都在使用 cookie/会话,这是否意味着我不能使用 Varnish?
    • 本质上,大规模动态网站不容易缓存。您将不得不使用 Ajax 或 ESI 将通用(可缓存)和特定(不可缓存)内容分离到单独的请求中。但是你不能真正缓存一直在变化的内容。也就是说,一旦您能够告诉 Varnish 您可以缓存哪些内容,您还可以要求 varnish 删除这些请求的 cookie。然后,您可以安全地缓存动态(非特定)内容而无需会话共享(这是 HTTP 缓存的最大风险)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    • 2010-11-18
    • 1970-01-01
    • 2011-06-27
    • 1970-01-01
    相关资源
    最近更新 更多