[web-devel] Content-Length on sendFile

Max Cantor mxcantor at gmail.com
Wed Jun 15 04:43:01 CEST 2011

For the record, the original post was about dynamic files, not the kind of static files served up by Yesod.Static.  

I put some comments in the haddocks on github. I think thats a fair place to start.


On Jun 15, 2011, at 10:29 AM, Michael Snoyman wrote:

> Let me point out one other distinction: sendFile versus yesod-static.
> The former is a function you would call from a normal handler, while
> yesod-static is the "magical" package which would actually know all of
> the stuff about your files at compile time. For the sendFile case, the
> only options for getting the file size are (1) the programmer manually
> adding the header and (2) Yesod automatically doing a system call to
> get it.
> As for the behavior of Warp...  while I agree Kazu that we should
> reduce system call overhead, it might make sense for Warp to perform
> the system call to get file size *if* no content-length header is
> present.
> And I'm still very uncomfortable setting the content-length header for
> static files based on compile-time information. In this case, having
> the wrong value (e.g., someone modified a CSS file after compiling)
> will completely break things and corrupt an open HTTP connection.
> Michael
> On Wed, Jun 15, 2011 at 5:22 AM, Kazu Yamamoto <kazu at iij.ad.jp> wrote:
>> Greg,
>>> I apologize for the confusing terminology. I am not differentiating between
>>> sending a static file with sendfile and a streaming response. I
>>> am differentiating between 2 different use cases for sending static files
>>> (with sendfile). For all of my web applications, I know what all the static
>>> files are and they will never change until I deploy another web application.
>>> That means I can stat the files once when the application is deployed and keep
>>> that information in memory. So I already have the file length information to
>>> include in the header, even though I don't do a file stat when the file is
>>> requested. wai-app-static and yesod-static supports these techniques.
>> Thanks. I think I understand. :)
>> So, do you support to *not* change the API (apps should add CL: by
>> themselves)?
>> --Kazu
>> _______________________________________________
>> web-devel mailing list
>> web-devel at haskell.org
>> http://www.haskell.org/mailman/listinfo/web-devel
> _______________________________________________
> web-devel mailing list
> web-devel at haskell.org
> http://www.haskell.org/mailman/listinfo/web-devel

More information about the web-devel mailing list