zend-framework - 使用Varnish/ESI和Zend框架的缓存和页面 View

标签 zend-framework caching varnish esi

我有几种情况,我将在几个月后最终考虑。只是把问题扔在那里,以便在此期间我可以考虑一下讨论。

我在我的应用程序堆栈中使用Zend Framework。我正在使用APC进行服务器缓存(而不是使用memcache,因为我不相信即使我的应用程序是分布式的,memcache也无法为我带来任何好处。)

我的应用程序已构建为无需JavaScript即可工作,然后为了获得JavaScript支持,我分解了页面并呈现了JavaScript友好版本。

如果您分析一个简单的页面,也许其中的80%是核心功能,可以为每个用户缓存。然后为该用户定制其中的20%。例如,我可能想显示

  • 最近查看过的5个项目
  • 收藏的项目

  • 这两个“小部件”对于每个用户而言都是特定的。我当时正在考虑对这些组件使用ESI,但后来我发现任何/我的Zend Framework应用程序最耗费资源的方面是引导和分发过程。因此,如果我的应用程序当前需要80毫秒而不进行缓存。就像90%的相对时间都花在 bootstrap 和插件 Hook 上一样,如果我要使用ESI加载这两个“窗口小部件”,那么我会有效地在每个页面上添加负载吗?因为我将为每个缓存的页面启动另一个80ms请求。

    在这种情况下,建议您仅通过JavaScript加载自定义的小部件/代码段,在加载初始页面后即可将其拉出。这样做的明显好处是,只有一个请求被缓存,然后在服务了初始页面(被缓存)之后,将单个请求中的所有定制内容都拉到单个请求中。

    如果我正在寻找最佳性能,这似乎是更好的解决方案?

    最佳答案

    您可以构建第二个简单的应用程序,该应用程序基于ajax调用从缓存中读取内容,并且仅在未缓存信息时进行引导。然后可以将响应添加到缓存,以便进一步的调用不会加载您的zend项目。这是正常过程,但也需要对缓存无效进行编程。您已经使用了适合此功能的apc。显然,它不适用于最近5次观看或类似的内容。

    关于zend-framework - 使用Varnish/ESI和Zend框架的缓存和页面 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8308409/

    相关文章:

    php - Zend php 在查询中设置不同

    php - 从默认模块中的自定义操作帮助器访问 Zend url 操作帮助器

    php - zend Bootstrap : for each module

    Phpunit骨架生成器找不到扩展类

    php - Magento 中 Varnish 处于事件状态的 URL 检测

    python - 使用 dogpile 根据修改时间缓存下载的文件

    laravel - 文件 css/all.css 未在 Assets list 中定义

    javascript - js文件没有在客户端浏览器上更新

    http - 如果通过代理请求页面会出现 404 错误,但如果直接连接则会出现 200

    varnish - Varnish 的监控工具