[dancer-users] Before Hook hit multiple times.

Olaf Alders olaf at wundersolutions.com
Wed Jan 2 22:40:46 GMT 2013


On 2013-01-02, at 5:35 PM, Puneet Kishor wrote:

> On Jan 2, 2013, at 2:27 PM, David Golden <xdg at xdg.me> wrote:
> 
>> On Wed, Jan 2, 2013 at 5:16 PM, Rick Bragg <rbragg at gmnet.net> wrote:
>>> hooks and routes are called once in the application flow.  Do I really have to
>>> program around this taking into consideration the number of times the before hook
>>> is called on each page?
>> 
>> HTTP is stateless.  The client can make as many requests as it likes
>> and your Dancer app will see them as separate requests.
>> 
>> The 'before' hook fires for every request.  If you want to limit a
>> hook to particular routes, you have to write that logic yourself in
>> the hook subroutine or else wrap the route handlers instead of using a
>> before hook.
> 
> While the above explanation makes sense, and understanding it can lead to designing applications better, my gut feeling is with Rick. If I create a 'before' hook, I want it normally to fire once everything the human user makes a request even though under the scene the browser is making multiple requests. In other words, the current behavior seems to be against the DWIM nature that I would expect. 
> 
> Dancer being the new, easy way of developing apps, should perhaps have two kinds of hooks -- one that behaves the current way, and another that fires the way Rick, myself, and I suspect many other Dancer users expect it to behave, that is, once per human user request.

If the before hook is firing on each request for static content (like favicon.ico), why even bother serving it up via the app?  You can handle that via https://metacpan.org/module/Plack::Middleware::Static or in your web server config. In most cases you don't even want the app to know about static files.

Olaf
--
Olaf Alders
olaf at wundersolutions.com

http://www.wundersolutions.com
http://twitter.com/wundercounter

866 503 2204 (Toll free - North America)
416 944 8306 (direct)



More information about the dancer-users mailing list