[development] The Drupal Diet - Making bootstrap faster
larry at garfieldtech.com
Fri May 4 05:15:44 UTC 2007
On Thursday 03 May 2007, Earl Miles wrote:
> Larry Garfield wrote:
> > == Form Handlers ==
> > Forms are nearly always accessed via drupal_get_form() or
> > drupal_execute(). We can therefore do the same sort of centralized
> > improvement for the form system in those functions as we can for page
> > handlers using
> I am totally against form getting its own special handling.
> 1) logically speaking, pages may or may not be forms; having .page and
> .form is confusing, because in my mind, pages are forms.
Sometimes they are, sometimes they aren't. I'd say the two most often used
forms are the user login block and the search block. Neither of those is a
> 2) pages may also contain forms. Do we then have a .page which also loads a
> .form because the page contains a form?
Such is a possibility.
> 3) Sometimes my page is MOSTLY a form, but I have a little extra code, so I
> don't call drupal_get_form as my callback.
> I think splitting forms off are clumsy.
> (As someone who has been driving this work, I don't feel compelled to say
> that this is all very important, etc, so don't take this as a big negative;
> just that I think this is, in particular, a poor point to split things at).
The root of the problem is drupal_execute(). drupal_execute() may be called
at any time, in any page handler. We also want to ensure that
drupal_get_form() may be called at any time.
Page handler separation is predicated on the assumption that page handlers are
only ever called from menu_execute_active_handler(). That assumption does
not hold true for forms.
That leaves us 3 options for forms:
1) Forms that are used as a page handler, if factored out to separate files,
may never be called from drupal_execute(). I do not consider this
2) Forms may not be factored out into separate files at all. Everything still
works, but then there's a lot of form code hanging around we never use.
3) Forms get a separate loading mechanism from pages. This way
drupal_get_form() and drupal_execute() still function everywhere and we can
still factor out forms to separate files where appropriate.
I want to emphasize that "where appropriate". Not all handlers or forms
should be split out into separate files. For instance, I'd argue the most
often used page handler is node_view(), and the most often used forms are the
login block and search block. We should *not* split those out into separate
files. They're used often enough that their extra weight on other page loads
is a good trade off for avoiding the disk hit. Similar decisions can/should
be made on a module-by-module basis. So no, we're not ballooning the disk IO
Larry Garfield AIM: LOLG42
larry at garfieldtech.com ICQ: 6817012
"If nature has made any one thing less susceptible than all others of
exclusive property, it is the action of the thinking power called an idea,
which an individual may exclusively possess as long as he keeps it to
himself; but the moment it is divulged, it forces itself into the possession
of every one, and the receiver cannot dispossess himself of it." -- Thomas
More information about the development