megalol :-P BTW, the X-Accel-Redirect is a nice trick. I'll see if we can introduce it in later versions.
On Friday, August 23, 2013 9:18:34 PM UTC+2, Adi wrote: > > Thanks Niphlod for your help, > Seems a connection to a legacy database was a culprit for a real slow > down... > > > On Thursday, August 22, 2013 4:31:22 PM UTC-4, Niphlod wrote: >> >> uhm. download() lets web2py stream the file instead of nginx. >> fast_download() too, it just skips the part that handles the authorization >> logic and adds correct cache headers, but this will lead to faster loading >> of pages from the 2nd time the user accesses the page: it won't change a >> thing in the 1st request. >> >> Why don't you just put those images in "static/something" ? >> >> The other very smart thing to do is using http://wiki.nginx.org/X-accel. >> This basically enables nginx to "intercept" an empty page with some >> special headers (so web2py does it without even accessing the file) and >> take care of serving the file instead of your application. This will >> probably speed up your 1st request (and releaves some pressure from the >> web2py process), but the hard-limit of bandwith will of course remain >> there, no matter what. >> >> Your fast download will then kinda look like >> def fast_download(): >> .... >> filename = os.path.join(request.folder,'uploads',request.args(0)) >> response.headers['X-Accel-Redirect'] = os.path.join(request.folder, >> 'uploads', document.file) >> return '' >> >> >> >> On Thursday, August 22, 2013 10:06:34 PM UTC+2, Adi wrote: >>> >>> >>> >>> Hello everyone. >>> >>> Am trying to populate a page with around 20 dynamic images from the >>> upload folder, but they get rendered extremely slow, even as thumbnails. >>> Tried using a suggest approach from the forum "fast_download()", but >>> without luck in my case. >>> >>> Anyone has a suggestion, what should I be looking at, and how to improve >>> the speed of loading dynamic images? >>> >>> Platform: clean ubuntu node with web2py and nginx (no caching setup, 1Gb >>> of ram). Nothing else is running on it. >>> >>> Performed following three tests: >>> >>> Regular download(): >>> Compressed images (through PIL, with extension .thumbnail): >>> http://www.webpagetest.org/result/130822_1F_WAD/ (500Kb in 25 sec) >>> Regular size images: http://www.webpagetest.org/result/130822_5K_ZSX/(3Mb >>> in 26 sec) >>> >>> Fast_Download() with regular size images: >>> http://www.webpagetest.org/result/130822_C3_1008/ (3Mb in 28 sec) >>> >>> Tried to implement caching in nginx site config, but that disabled >>> images completely, and I couldn't get it to work: >>> >>> #location ~* ^.+\.(jpg|jpeg|gif)$ { >>> # root /home/www-data/web2py/applications/; >>> # access_log off; >>> # expires 30d; >>> #} >>> >>> or >>> >>> #location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ { >>> # access_log off; >>> # log_not_found off; >>> # expires 180d; >>> #} >>> >>> Fast download used: >>> def fast_download(): >>> session.forget(response) >>> cache.action(time_expire=604800)(lambda: 0)() >>> >>> # very basic security (only allow fast_download on >>> your_table.upload_field): >>> if not request.args(0).startswith("product.image"): >>> return download() >>> >>> filename = os.path.join(request.folder,'uploads',request.args(0)) >>> >>> return response.stream(open(filename,'rb')) >>> >>> >>> Segment of the code that displays the images: >>> >>> <div id="prod_img" itemprop="image"> >>> {{if p.image:}} >>> <a href="{{=product_link}}"> >>> {{ >>> #big_regex = re.compile('|'.join(map(re.escape, >>> IMAGE_EXTENSIONS))) >>> #tmb_image = big_regex.sub(INDEX_TMB, p.image) >>> }} >>> <img src="{{=URL('download', >>> args=p.image, scheme=True, host=True)}}" >>> alt="{{=product_name}}" href="{{=product_link}}" >>> height="180px" width="160px"/> >>> </a> >>> <img data-src='{{=tmb_image}}' > >>> {{pass}} >>> </div> >>> >>> >>> >>> >>> >>> >> -- --- 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.