未启用的模块会影响性能吗?


91

存在但未启用但没有启用Drupal模块对Drupal网站的性能有影响吗?

换句话说,从Drupal站点中删除禁用的模块是否会对性能产生积极影响?

Answers:


97

通常不,它不会影响性能-除非您正在查看“模块”选择页面(admin / build / modules或admin / modules)。禁用的模块不会加载到内存中并且永远不会执行。


24
话虽这么说,禁用的模块仍然留下变量和数据库表,以便可以重新启用该模块而不会丢失数据。如果您不打算再次使用禁用的模块,则应通过D6中的admin / build / modules / uninstall或D7中的admin / modules / uninstall来卸载该模块。
Dave Reid

1
我想这可能是在节点表中添加一列的模块的一个示例drupal.org/project/quickstats,所以我想如果您不取消安装该模块,这将表示不必要的资源消耗(也许很小? )到其他模块时提取节点信息。
cigotete

62

是。它可以。

尽管其他人说了什么,但在某些情况下性能会下降。

  1. 禁用且未正确卸载的模块可能会对性能产生严重影响:模块的变量不会被删除,并会在每个pagerequest中加载。不会删除模块的语言环境(以防您使用翻译后的站点),并且会在已经麻烦的数据库表上造成开销。
  2. Drupal使用系统表作为缓存,以避免在文件系统中查找模块。该表中的条目越多,速度就越慢。由于系统表的索引很好,因此效果很小。但是,清除缓存并访问管理页面会导致重建该表。使用200个以上未使用的模块重建表的速度比不使用未使用的模块重建表的速度大约慢25倍。在某些奇怪的情况下,例如在开发过程中,此表的重建量可能很高。

除了重建系统表期间,未使用的模块不会使用更多的内存。未使用的模块不会导致在文件系统上进行更多或更慢的查找,除非是在重建系统表期间。如果您使用的是上千个模块,那么文件系统本身可能会造成麻烦。


5
禁用的模块不一定未正确卸载的模块:我可以禁用模块以避免出现其设置页面,而不是因为我要卸载它。例如,在Drupal.org上,仅当有人需要编辑视图时才启用“视图UI”,然后在完成视图编辑后将其禁用。
kiamlaluno

3
此外,如果您安装了devel / admin_menu,则可以使用“禁用开发人员模块”的快捷方式,它可以禁用正常运行的生产站点不需要的诸如Views UI,Rules UI,Field UI等。这可以在普通LAMP机器上的每个PHP / Apache线程中节省几MB!
geerlingguy 2011年

5
我知道一个未启用的模块不是一个曾经被禁用的模块。您的视图和类似于devel的模块示例确实证明了我的观点:禁用uis-ui时,您的语言环境表和变量表都是/ littered /的,并且在每个页面上加载并评估了皮棉。我最近清理了一个站点,其中有5MB(!)和近60MB(!)的剩余变量和未使用的语言环境字符串,这些都是旧的和不再使用的模块中的剩余部分。导致语言环境查询变成缓慢的查询,并导致每个页面加载量增加5Mb的内存。
berkes 2011年

如果我禁用Views UI,那是因为我仍然想使用它。只是我不想在不需要时启用它。在那种情况下,删除该模块的所有Drupal变量将对重置我更改的所有设置产生负面影响。不一定是我想要的。未启用的模块是禁用的模块。似乎您将卸载的模块与禁用的模块混淆了,后者是我禁用的模块,因为我在特定情况下使用它,例如在编辑视图时确实需要使用Views UI;在其他情况下,我不需要它。
kiamlaluno

2
当您按照描述使用视图UI时:禁用,可以随意使用它;它对性能有影响。这就是OP的要求。显然,这就是人们使用它的方式(至少您是这样做的)。因此,结论是禁用的模块可能会对性能产生影响;特别是如果您选择不完全删除它们;始终如果他们不卸载自己正确
贝尔克斯

8

随着安装我想你的意思是你的Drupal模块内(“网站/所有/模块”或“网站/ yoursite.com /模块”)的文件夹,对吗?

如果是这样,仅当您访问“管理/构建/模块”页面时,禁用的模块根本不会影响性能。Drupal重建一些模块元素的缓存(如hook_menu)。


7

根据我的经验,禁用模块的性能下降可以忽略不计(相对而言,4000个禁用模块可能会使速度比30个禁用模块慢一些,等等)。

就我个人而言,我只是更关心存储在我的存储库和Web目录中的未使用(可能已过时)的代码,但是我在这种情况下会保持态度。


4

从技术上讲,是的。通常禁用的模块不会加载到内存中,因此它们不会像这样影响网站的性能。但是,如果禁用的模块的变量中包含大量数据,则建议将其卸载,以释放内存。


3

删除禁用模块的代码可能对站点没有影响。

再说一次,如果您在某个时候安装了模块,它将在数据库中填充一些表。因此,安装的模块越多,影响数据库性能的机会就越大。

卸载模块将删除那些不必要的表。

同样,性能取决于已安装的模块数量。


3

未卸载但已从文件夹系统中物理删除的禁用模块会对站点性能产生不利影响。我有5个这样的模块,因此,对is_dir()函数进行了10,000次调用。我使用了missing_modules模块(missing_module)来识别缺少的模块,并修复了数据库中的问题。


1

卸载和禁用不会影响性能。

但是,如果仅禁用该模块,则它可能具有一些关联的表,因此这些表对于drupal数据库是额外的负担。

如前所述,在drupal的模块页面上将存在一些重大的性能问题。很多时候此页面没有加载,并且花费很多时间,因为在那里显示所有已安装/卸载的模块。

因此,为了克服这种情况,我们应该从/ sites / all / modules / drive中物理删除未使用的模块。


1
“卸载和禁用将不会影响性能。” -在特定情况下可以。尤其是执行管理员操作。不仅是“模块”页面,某些用于翻译或代码检查的模块还可以在未启用的模块上工作。还有一些小事情,例如文件系统性能。
Mołot

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.