response.stream (which you use) handles if-modified-since and range requests automatically.
On May 4, 9:04 pm, Mariano Reingart <[email protected]> wrote: > I thought so, > > I had to modify mydownload so browsers do client-side caching, > speeding up the web-page load: > > def fast_download(): > # very basic security: > if not request.args(0).startswith("sponsor.logo"): > return download() > # remove/add headers that prevent/favors caching > del response.headers['Cache-Control'] > del response.headers['Pragma'] > del response.headers['Expires'] > filename = os.path.join(request.folder,'uploads',request.args(0)) > response.headers['Last-Modified'] = time.strftime("%a, %d %b %Y > %H:%M:%S +0000", time.localtime(os.path.getmtime(filename))) > return response.stream(open(filename,'rb')) > > TODO: handle If-Modified-Since (returning 304 if not modified), but as > you said, let the browser do that if so much performance is needed (so > far, fast_download is working fine for me now :-) > > Thanks very much for your help, and please let me know if there is > anything wrong with this approach, > > Best regards, > > Mariano > Reingarthttp://www.web2py.com.arhttp://www.sistemasagiles.com.arhttp://reingart.blogspot.com > > On Tue, May 4, 2010 at 10:23 PM, mdipierro <[email protected]> wrote: > > caching downloads does not make sense. This is because the role of > > download is to check permissions to download a file (if they are set). > > if you cache it then you do not check. If you do not need to check do > > not use download. Use > > > def mydownload(): > > return > > response.stream(open(os.path.join(request.folder,'uploads',request.args(0)),'rb')) > > > or better use the web server to download the uploaded files. > > > On May 4, 6:11 pm, Mariano Reingart <[email protected]> wrote: > >> To cache images, I'm trying to do: > > >> @cache(request.env.path_info,60,cache.ram) > >> def download(): return response.download(request,db) > > >> But seems that is not > >> working:http://www.web2py.com.ar/raf10dev/default/index > >> (see images at sidebar, if you quickly reload pages, they fail) > > >> The book says something about response.render, but nothing about > >> download... > >> Anyway, I'm not sure if this is a good use of @cache, are there any other > >> way ? > > >> BTW, why Cache-Control: no?... > > >> Best regards, > > >> Mariano > >> Reingarthttp://www.sistemasagiles.com.arhttp://reingart.blogspot.com

