Skip to main content
  • Create new account
  • Reset your password
张文涛的个人博客
致力于提供Drupal开发,实践等方面的精品资讯

Main navigation

  • 首页
  • 关于
  • Glossary
  • 分享

Breadcrumb

  • Home
  • 关于drupal hook(钩子机制) 和 performance(性能)的讨论
By admin | 9:27 AM CST, Mon March 11, 2013

http://groups.drupal.org/node/285633
drupal groups上的一个问题,必须要回答。同时这也是曾经困扰我的问题。花了一个多小时做整理和解析。同时也在自己的博客记录下,以备更多人能够少被这个问题困扰。
原文链接:
http://groups.drupal.org/node/285633#comment-898648

这是一个老生常谈的问题。

hook机制是drupal最具吸引力的特性。 Hook机制赋予drupal强大的灵活性和扩展性。
如果要使用drupal做开发,hook是必须要跨过去的一道坎。

因为hook对drupal如此重要,当然会对hook有优化的方案。那就是drupal的cache(缓存)机制。
在大多数情况下,hook是通过module_implements这个函数来执行的,以下是函数原型:
function module_implements()
可以看到,在默认的情况下,drupal会对hook做缓存,那么将来执行hook的时候,缓存机制会有效的提高性能。

(PS: drupal 有几个特殊的hook,比如hook_init, hook_exit, hook_cron等是通过module_invoke_all来
执行的, module_invoke_all函数原型如下:
function module_invoke_all()
这些hook,没有使用drupal的缓存机制,因此编写代码的时候,需要注意。)

相比较而言,hook机制对drupal灵活性和扩展性上带来的优势,会大于其对性能的影响所带来的劣势;
综合考虑,hook造成的性能的损耗,通过缓存系统得到巧妙的弥补,从而在性能和扩展方面得到良好的平衡。
因此hook机制得以保留。

Glossary

  • May 2023 (7)
  • March 2023 (1)
  • October 2022 (1)
  • October 2021 (2)
  • August 2021 (4)
  • June 2021 (2)
  • May 2021 (1)
  • April 2021 (2)
  • November 2020 (1)
  • June 2020 (2)
  • December 2019 (2)
  • November 2019 (1)
  • August 2019 (1)
  • February 2018 (1)
  • October 2017 (1)
  • September 2017 (1)
  • July 2017 (1)
  • June 2017 (2)
  • May 2017 (1)
  • March 2017 (3)
  • December 2016 (2)
  • November 2016 (4)
  • October 2016 (3)
  • June 2016 (1)
  • December 2015 (1)
  • November 2015 (6)
  • October 2015 (2)
  • September 2015 (1)
  • August 2015 (1)
  • July 2015 (1)
  • June 2015 (1)
  • May 2015 (1)
  • March 2015 (1)
  • January 2015 (1)
  • December 2014 (3)
  • October 2014 (5)
  • September 2014 (3)
  • August 2014 (1)
  • July 2014 (1)
  • June 2014 (1)
  • May 2014 (1)
  • April 2014 (2)
  • March 2014 (2)
  • February 2014 (2)
  • January 2014 (4)
  • December 2013 (1)
  • March 2013 (2)
  • February 2013 (2)
  • December 2012 (2)
  • November 2012 (4)
  • October 2012 (1)
  • September 2012 (6)
  • August 2012 (15)
  • July 2012 (5)
  • June 2012 (13)
  • May 2012 (9)
  • April 2012 (8)
  • March 2012 (9)
  • February 2012 (3)
  • January 2012 (1)
  • December 2011 (1)
  • November 2011 (6)
  • October 2011 (2)
  • September 2011 (17)
  • August 2011 (4)
  • July 2011 (4)
  • June 2011 (5)
  • May 2011 (4)

Copyright © 2025

苏ICP备14044171号-1