[dancer-users] Before Hook hit multiple times.

Rick Bragg rbragg at gmnet.net
Thu Jan 3 00:20:28 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)
>

I'm using plack and I have apache set up to serve the "public" directory
directly... so... I still don't get why the multiple calls to the before hook...

Rick








More information about the dancer-users mailing list