在所有PHP脚本上加载相同的XML数据

在所有PHP脚本上加载相同的XML数据,php,xml,Php,Xml,我目前正在开发一个小型PHP网站,其中所有数据都存储在一个XML文件中,XSLT以各种方式转换为HTML。对于用户来说,数据是只读的,但是XML文件有时会被站点管理员修改 目前,每个PHP脚本都将XML文件中的数据加载到DOMDocument对象中。这是在每个请求的每个脚本上完成的,但这肯定不是最好、最快的方法 您建议采用什么方法来减少开销并使XML数据随时可用,而无需每次打开文件,但要考虑到XML文件可以修改的事实?想到的显而易见的解决方案是使用缓存,例如memcached。将方法调用的结果缓

我目前正在开发一个小型PHP网站,其中所有数据都存储在一个XML文件中,XSLT以各种方式转换为HTML。对于用户来说,数据是只读的,但是XML文件有时会被站点管理员修改

目前,每个PHP脚本都将XML文件中的数据加载到DOMDocument对象中。这是在每个请求的每个脚本上完成的,但这肯定不是最好、最快的方法


您建议采用什么方法来减少开销并使XML数据随时可用,而无需每次打开文件,但要考虑到XML文件可以修改的事实?

想到的显而易见的解决方案是使用缓存,例如memcached。将方法调用的结果缓存到
DomDocument::load()
。每当管理员更改XML时,使缓存无效


但是,您应该首先分析您的应用程序,以确保您当前的解决方案确实对您的应用程序有任何负面和明显的影响。文件I/O和XML解析可能是一个瓶颈,但如果它真的很重要,您应该首先找到它。

想到的明显解决方案是使用缓存,例如memcached。将方法调用的结果缓存到
DomDocument::load()
。每当管理员更改XML时,使缓存无效


但是,您应该首先分析您的应用程序,以确保您当前的解决方案确实对您的应用程序有任何负面和明显的影响。文件I/O和XML解析可能是一个瓶颈,但如果它真的很重要,您应该首先找到它。

您可以通过多种方式缓存应用程序:

是一个很好的缓存解决方案。对于较小的站点,缓存到文本文件也可能有效。如果加载的数据很小,您甚至可以考虑序列化数组并将其放入会话中,但我不确定如果数据量很小,我会推荐它。


如果从XML文件中读取的数据量很小,我会坚持使用您当前的解决方案,因为您可以通过多种方式缓存应用程序:

是一个很好的缓存解决方案。对于较小的站点,缓存到文本文件也可能有效。如果加载的数据很小,您甚至可以考虑序列化数组并将其放入会话中,但我不确定如果数据量很小,我会推荐它。


如果从XML文件中读取的数据量很小,我会坚持使用您当前的解决方案,因为XML文件通常约为400/500 Kb。XML文件通常约为400/500 Kb。