我有一个网站将其网页存储在数据库中作为html字符串(使用CKEditor生成),以使用户能够在没有HTML知识的情况下编辑它们。该网站还广泛使用图像库(用户要求,因此我无法控制)每个页面及其库。这使得网站非常慢。我已经阅读了指南中的Yii优化,并进行了一些查询缓存,这有点改善了加载时间,但仍然很慢。
由于页面可能需要多长时间才能更新(仅当事情发生变化时)是否有网站范围的Yii缓存技术来模拟静态页面,直到页面被更改为止? 我无法控制安装APC或其他扩展程序,因为我不是管理员。
也欢迎任何优化理念。
您可以看到网站here
答案 0 :(得分:3)
虽然很难给你一个“明确的答案”,但你可以做的最简单的事情(在Yii's Definitive Guide: Performance提到的优化之后)就是使用page caching
由于您无法使用APC或memcached,我建议您通过CFileCache使用文件缓存来缓存整个页面。一旦更新,您应该通过适当的CacheDependency使缓存无效。我使用Flushable cache dependency extension使用CActiveRecord的afterSave挂钩来使缓存失效。它很容易实现并完成工作。
编辑:只是看看你的网站并从你使用Bootstrap的菜单判断(也许使用Yii-Booster?)。该网站确实非常缓慢,但这可能实际上是由于扩展在每个请求上发布其资产。在DEBUG模式下,我曾经遇到过Yii-Booster发布资产的确切问题(当时甚至在DEBUG模式被禁用时也是如此)(https://github.com/clevertech/YiiBooster/pull/229)。答案 1 :(得分:0)
您可以使用Yii HTML Cache创建页面的完整缓存。它会在您的资产中生成html文件并使用它直到生命周期结束或您清除资产。
您只需要安装扩展程序并在控制器的beforeAction
和afterRender
方法中添加几行。