Now it works! I just changed the return function to return
response.stream(open(filename,'rb')) :D

Thanks folks!

PS: How to use @client-cache? :)

Regards,

Tito


On Sat, Apr 6, 2013 at 1:36 PM, Tito Garrido <titogarr...@gmail.com> wrote:

> Hi Folks!
>
> Thanks for your answers but my implementation is a little bit different so
> none of the solutions above worked, I have tried to adapt the slice
> solution but it didn't work also, here is my "download" function, I am
> using the name of the files instead of the hash name (I am also using
> upload separated = True:
>
> def images():
>     ''' get the image using its name
>     param1 = table
>     param2 = type (image,thumb,minithumb,logo,banner)
>     param3 = name '''
>     import os,time
>     tabela =  request.args(0)
>     tipo = request.args(1)
>     nome_imagem = request.args(2)
>     if tabela == 'artista':
>         row = db.artista(image_filename=nome_imagem)
>         image=row[tipo]
>     elif tabela == 'personagem':
>         row = db.personagem(image_filename=nome_imagem)
>         image=row[tipo]
>     elif tabela == 'novela':
>         if tipo == 'logo':
>             row = db.novela(logo_filename=nome_imagem)
>         elif tipo == 'banner':
>             row = db.novela(banner_filename=nome_imagem)
>         image=row[tipo]
>     if not image:
>         raise HTTP(404)
>     else:
>         request.args.append(image)
>     response.headers['Cache-Control'] = "max-age=604800" *# it is still
> showing Cache-Control=0*
>     #del response.headers['Pragma'] *# error, Pragma key not available*
>     #del response.headers['Expires'] *# error, Expires key not available*
>     splits = image.split('.')
>     path = splits[0] + '.' + splits[1] + '/' + splits[2][:2] + '/'
>     global_path = path + image
>     filename = os.path.join(request.folder,'uploads',global_path)
>     # send last modified date/time so client browser can enable
> client-side caching
>     response.headers['Last-Modified'] = time.strftime("%a, %d %b %Y
> %H:%M:%S +0000", time.localtime(os.path.getmtime(filename)))
>     return response.download(request,db)
>
> I am pretty syre that  I am missing something here... using @cache-client
> raised an "argument missing error", 0 given 1 expected...
>
> How can I change my function to works with cache?
>
> Thanks!
>
> Tito
>
>
>
> On Sat, Apr 6, 2013 at 11:19 AM, Niphlod <niph...@gmail.com> wrote:
>
>> cache.client (when no cache_model is passed) just sets headers (that's
>> the idea at the bottom).
>> When you pass a cache_model, it sets headers AND cache the results (and
>> that's the "idea at the top").
>>
>> cache.client was created in the first place to avoid having to set
>> headers repeatedly.
>>
>> There's no "improvement" to look for caching the results of a download()
>> ^_^
>>
>>
>> On Saturday, April 6, 2013 3:23:22 PM UTC+2, Massimo Di Pierro wrote:
>>>
>>> Does that work for download? Download returns a stream not a string.
>>>
>>> On Saturday, 6 April 2013 06:48:55 UTC-5, Niphlod wrote:
>>>>
>>>> there's a new @cache.client decorator to set expire headers in an easy
>>>> way ....
>>>> as soon as the book gets updated the docs will be here
>>>> http://web2py.com/books/**default/chapter/29/04#cache<http://web2py.com/books/default/chapter/29/04#cache>
>>>>
>>>> On Saturday, April 6, 2013 11:58:17 AM UTC+2, BlueShadow wrote:
>>>>>
>>>>> There supposedly is a way the fast download function(web2pyslices)
>>>>> def fast_download():
>>>>>    # very basic security (only allow fast_download on
>>>>> your_table.upload_field):
>>>>>    if not request.args(0).startswith("**db.your_table.your_field"):
>>>>>        return download()
>>>>>    # remove/add headers that prevent/favors client-side caching
>>>>>    #7days
>>>>>    response.headers['Cache-**Control'] = "max-age=604800"
>>>>>    del response.headers['Pragma']
>>>>>    del response.headers['Expires']
>>>>>    filename = os.path.join(request.folder,'**uploads',request.args(0))
>>>>>    # send last modified date/time so client browser can enable
>>>>> client-side caching
>>>>>    response.headers['Last-**Modified'] = time.strftime("%a, %d %b %Y
>>>>> %H:%M:%S +0000", time.localtime(os.path.getmtim**e(filename)))
>>>>>
>>>>>    return response.stream(open(filename,**'rb'))
>>>>>
>>>>> this is the version I'm experimenting with. the original had a del
>>>>> Cache Control instead of the max age. but google pagespeed still tells me
>>>>> that no expiration date is set.
>>>>>
>>>>>
>>>>> On Saturday, April 6, 2013 4:42:45 AM UTC+2, Tito Garrido wrote:
>>>>>>
>>>>>> Hi!
>>>>>>
>>>>>> I was running page speed on my website and all image files from the
>>>>>> database (upload folder) are not cached...
>>>>>> Is there a way to enable cache for them?
>>>>>>
>>>>>> Thanks!
>>>>>>
>>>>>> Tito
>>>>>>
>>>>>> --
>>>>>>
>>>>>> Linux User #387870
>>>>>> .........____
>>>>>> .... _/_õ|__|
>>>>>> ..º[ .-.___.-._| . . . .
>>>>>> .__( o)__( o).:_______
>>>>>>
>>>>>  --
>>
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "web2py-users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to web2py+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>>
>>
>
>
>
> --
>
> Linux User #387870
> .........____
> .... _/_õ|__|
> ..º[ .-.___.-._| . . . .
> .__( o)__( o).:_______
>



-- 

Linux User #387870
.........____
.... _/_õ|__|
..º[ .-.___.-._| . . . .
.__( o)__( o).:_______

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to