【发布时间】:2012-02-15 19:22:30
【问题描述】:
我正在尝试构建一个基本的plugin system,就像您在 WordPress 等 CMS 中经常找到的那种。您有一个插件文件夹,这些插件使用 Observer 或 Event 设计模式通过事件通知与主系统的操作相关联。
问题是系统不可能知道插件想要处理的事件 - 所以系统必须为每个页面请求加载每个插件找出在某个时候是否确实需要该插件。不用说,这会浪费很多资源——在 WordPress 的情况下,每个请求会增加几 MB 的内存!
是否有其他方法可以做到这一点?
例如,有没有办法一次性加载所有这些,然后缓存结果,以便您的系统知道如何延迟加载插件?换句话说,系统会加载一个配置文件,该文件指定插件希望绑定的所有事件,然后将其保存在 APC 或其他东西中以供将来请求?
如果这也表现不佳,那么也许有一个特殊的文件结构可用于对某些插件何时不需要满足请求进行有根据的猜测。
【问题讨论】:
标签: php performance design-patterns plugins content-management-system