【问题标题】:Yii Optimization of Semi-static siteYii 半静态站点优化
【发布时间】:2013-02-11 08:50:43
【问题描述】:

我有一个网站,它的页面作为 html 字符串(使用 CKEditor 生成)存储在数据库中,以使用户能够在没有 HTML 知识的情况下编辑它们。该网站还广泛使用图片库(用户要求,因此我无法控制)每个页面及其图库。这使得网站非常缓慢。我在 Guide 中阅读了 Yii 优化并做了一些查询缓存,这稍微改善了加载时间,但仍然很慢。

由于更新页面可能需要长达一个月的时间(仅在情况发生变化时),是否有一种站点范围的 Yii 缓存技术来模拟静态页面,直到页面被更改? 由于我不是管理员,因此无法控制安装 APC 或其他扩展。

也欢迎任何优化想法。

你可以看到一个网站here

【问题讨论】:

    标签: caching optimization yii


    【解决方案1】:

    虽然很难给你一个“明确的答案”,但你可以做的最简单的事情(除了在Yii's Definitive Guide: Performance 中提到的优化)是使用page caching

    由于您不能使用 APC 或 memcached,我建议您通过 CFileCache 使用文件缓存来缓存整个页面。一旦更新,您应该通过适当的 CacheDependency 使缓存无效。我已经使用Flushable cache dependency extension 使用 CActiveRecord 的 afterSave 挂钩使缓存无效。它易于实施并且可以胜任。

    编辑:刚刚查看了您的网站并从您正在使用 Bootstrap 的菜单判断(也许使用 Yii-Booster?)。该站点确实非常慢,但这实际上可能是由于扩展在每次请求时发布其资产。我曾经在调试模式下遇到过 Yii-Booster 发布资产的确切问题(当时它甚至在禁用调试模式时发生)(https://github.com/clevertech/YiiBooster/pull/229)。

    【讨论】:

    • 是的,我使用 YiiBooster。是否有优化扩展的选项?我会检查链接。并感谢您提供大量信息
    • 如果你使用的是最新的 Yii_Booster 版本 + 禁用 Yii 的调试模式(无论如何你都应该在生产环境中这样做),资产的重新发布不应该发生。
    • 我做错了,我评论了定义('YII_DEBUG')或定义('YII_DEBUG',true);而不是仅仅将其更改为 defined('YII_DEBUG') 或 define('YII_DEBUG',false);
    • 现在我仍然需要缓存图像,因为它们需要时间来加载。我正在检查 Flushable 缓存依赖扩展
    • 你会推荐这里解释的缓存输出吗yiiframework.ru/doc/guide/en/caching.page 只是想听听你的意见!
    【解决方案2】:

    您可以使用Yii HTML Cache 来创建页面的完整缓存。它会在您的资产中生成 html 文件并使用它直到生命周期结束或您清除资产。

    您只需要安装扩展程序并在控制器的beforeActionafterRender 方法中添加几行即可。

    【讨论】:

      猜你喜欢
      • 2010-12-04
      • 1970-01-01
      • 2021-04-05
      • 1970-01-01
      • 2020-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多