SlideShare a Scribd company logo
1 of 29
Download to read offline
Large Files
                         Without the Trials

                          Aaron VanDerlip and Sally Kleinfeldt
                             Plone Symposium East 2010




Thursday, June 3, 2010
Acknowledgments
                    • Bioneers provides environmental education
                         and social connectivity through
                         conferences, radio and TV, books, and online
                         materials
                    • Engaged Jazkarta to build a file asset server
                         based on Plone to help them organize,
                         capture, and store multimedia and textual
                         content with files as large as 5 GB.


Thursday, June 3, 2010
Acknowledgments


                    • Aaron VanDerlip - Project Manager
                    • Kapil Thangavelu - Developer


Thursday, June 3, 2010
What is a Big File?


                    • Anything that makes you wait...


Thursday, June 3, 2010
Plone Problems with
                               Big Files

                    1.Uploading/Downloading
                    2.Versioning



Thursday, June 3, 2010
Uploading Big Files




                    • Both the user and a Zope thread are
                         waiting for the file transfer
Thursday, June 3, 2010
Thursday, June 3, 2010
Uploading Big Files

                    • Browser encodes file in multipart mime
                         format
                    • Zope must undo this encoding
                    • CPU and memory intensive, and SLOW
                    • Zope thread is blocked during this process

Thursday, June 3, 2010
Downloading Big Files


                    • ...the same thing happens in reverse



Thursday, June 3, 2010
Learning from Rails
                    • Get file encoding/unencoding and read/
                         write operations out of Plone
                    • Web servers are really good at this -
                         Apache, Nginx, and Lighttpd
                    • Our implementation uses Apache
                    • Apache file streaming is fast and threads
                         are cheap


Thursday, June 3, 2010
Learning from Rails

                    • Uploads: Apache plus mod_porter
                         http://therailsway.com/tags/porter
                    • Downloads: Apache plus mod_xsendfile
                         http://john.guen.in/past/2007/4/17/
                         send_files_faster_with_xsendfile/
                    • ...and of course ZODB Blob storage

Thursday, June 3, 2010
Mod Porter
                    • Parses the multipart mime data
                    • Writes the file to disk
                    • Changes the Request to contain a pointer
                         to the temp file on disk
                    • All done efficiently in C code inside your
                         Apache process


Thursday, June 3, 2010
Mod Porter




Thursday, June 3, 2010
Apache Config for
                                 Mod Porter
                         LoadModule apreq_module /usr/lib/Apache2/modules/mod_apreq2.so

                         LoadModule porter_module /usr/lib/Apache2/modules/mod_porter.so

                         # Apache has a default read limit of 64MB, set it higher

                         APREQ2_ReadLimit 2G

                         ...

                         Porter On

                         # Files below this size will not be handled by mod-porter

                         PorterMinSize 14M

                         # Where the uploaded files are stored

                         PorterDir /mnt/uploads-Apache




Thursday, June 3, 2010
X-Sendfile

                    • HTTP header
                    • Set an X-Sendfile header and the path of a
                         file on your response
                    • Apache does the rest


Thursday, June 3, 2010
Apache Config for
                                  X-Sendfile
                         LoadModule xsendfile_module /usr/lib/Apache2/modules/mod_xsendfile.so

                         ...

                         EnableSendfile On

                         XSendFile on

                         # Config to send file resources directly from blob storage

                         XSendFilePath /mnt/bioneers/var/blobstorage




Thursday, June 3, 2010
Using X-Sendfile
                              from Python
                         def download(self, response, file_path):

                             response.setHeader("X-Sendfile",

                                                file_path)




Thursday, June 3, 2010
Blob Storage
                    • Uploads
                     • Blob.consumeFile moves file from
                           Apache’s temp area to blob storage
                           (ZODB/blob.py)
                         • Uses os.rename, file never enters Plone
                    • Downloads
                     • Served directly from blob storage
Thursday, June 3, 2010
Upload Process




Thursday, June 3, 2010
What About Really
                          Really Big Files?
                    • Use FTP
                    • Supports continuation and batching
                    • Handles files too large for browser limits
                    • Content editors use FTP to transfer files to
                         an upload directory



Thursday, June 3, 2010
UI




Thursday, June 3, 2010
Uploading with FTP




Thursday, June 3, 2010
ore.bigfile
                    • Minimally intrusive, works with the grain of
                         Plone
                    • Provides Big File content type
                    • IFrontendFileServer interface defines two
                         methods that provide web server support
                         for upload and download
                    • Apache and Nginx implementations
                         provided

Thursday, June 3, 2010
ore.bigfile
                                 Limitations

                    • Upload directory is hardcoded
                    • Possibility of error on very large images
                         which Mod Porter intercepts




Thursday, June 3, 2010
Versioning Big Files




Thursday, June 3, 2010
Solution
                    • Bypass CMFEditions - no file size limitation
                    • Create a new version only when file
                         changes (not metadata)
                    • Allow old versions to be purged
                    • Version information stored on Big File
                         object using annotations


Thursday, June 3, 2010
UI




Thursday, June 3, 2010
Conclusion
                    • ore.bigfile solves the Big File problem for a
                         particular use case, not feature complete
                    • It does so by taking advantage of mature
                         web server technology
                    • The code is minimally intrusive
                    • It provides a strategy for implementation
                         we can learn from as we improve Plone’s
                         Big File story

Thursday, June 3, 2010
http://svn.objectrealms.net/
                  view/public/browser/ore.bigfile

                          Questions

Thursday, June 3, 2010

More Related Content

Similar to Large Files without the Trials

Evaluating Online Video Platforms
Evaluating Online Video PlatformsEvaluating Online Video Platforms
Evaluating Online Video Platformsindiefilmshow
 
The Reluctant SysAdmin : 360|iDev Austin 2010
The Reluctant SysAdmin : 360|iDev Austin 2010The Reluctant SysAdmin : 360|iDev Austin 2010
The Reluctant SysAdmin : 360|iDev Austin 2010Voxilate
 
URIplay for Media Futures Conference (2009)
URIplay for Media Futures Conference (2009)URIplay for Media Futures Conference (2009)
URIplay for Media Futures Conference (2009)Chris Jackson
 
BRAINREPUBLIC - Powered by no-SQL
BRAINREPUBLIC - Powered by no-SQLBRAINREPUBLIC - Powered by no-SQL
BRAINREPUBLIC - Powered by no-SQLAndreas Jung
 
Deployment presentation
Deployment presentationDeployment presentation
Deployment presentationCorey Purcell
 
Yuusuf alqadi assignment 3
Yuusuf alqadi assignment 3 Yuusuf alqadi assignment 3
Yuusuf alqadi assignment 3 AL-Qadi
 
Red Dirt Ruby Conference
Red Dirt Ruby ConferenceRed Dirt Ruby Conference
Red Dirt Ruby ConferenceJohn Woodell
 
Cloudlytics - Analyze S3 & CloudFront Logs
Cloudlytics - Analyze S3 & CloudFront LogsCloudlytics - Analyze S3 & CloudFront Logs
Cloudlytics - Analyze S3 & CloudFront LogsCloudlytics
 
Ftp data exchange-mechanism
Ftp data exchange-mechanismFtp data exchange-mechanism
Ftp data exchange-mechanismLATIPAT
 
Integrating Erlang with PHP
Integrating Erlang with PHPIntegrating Erlang with PHP
Integrating Erlang with PHPAlvaro Videla
 
TYPO3 CMS 6.2 LTS Workshop T3DD13
TYPO3 CMS 6.2 LTS Workshop T3DD13TYPO3 CMS 6.2 LTS Workshop T3DD13
TYPO3 CMS 6.2 LTS Workshop T3DD13Ernesto Baschny
 
Codeworks'12 Rock Solid Deployment of PHP Apps
Codeworks'12 Rock Solid Deployment of PHP AppsCodeworks'12 Rock Solid Deployment of PHP Apps
Codeworks'12 Rock Solid Deployment of PHP AppsPablo Godel
 
Optimizing Latency-Sensitive Queries for Presto at Facebook: A Collaboration ...
Optimizing Latency-Sensitive Queries for Presto at Facebook: A Collaboration ...Optimizing Latency-Sensitive Queries for Presto at Facebook: A Collaboration ...
Optimizing Latency-Sensitive Queries for Presto at Facebook: A Collaboration ...Alluxio, Inc.
 
Python-data-science.pptx
Python-data-science.pptxPython-data-science.pptx
Python-data-science.pptxKabileshCm
 

Similar to Large Files without the Trials (20)

App Engine Meetup
App Engine MeetupApp Engine Meetup
App Engine Meetup
 
Evaluating Online Video Platforms
Evaluating Online Video PlatformsEvaluating Online Video Platforms
Evaluating Online Video Platforms
 
The Reluctant SysAdmin : 360|iDev Austin 2010
The Reluctant SysAdmin : 360|iDev Austin 2010The Reluctant SysAdmin : 360|iDev Austin 2010
The Reluctant SysAdmin : 360|iDev Austin 2010
 
URIplay for Media Futures Conference (2009)
URIplay for Media Futures Conference (2009)URIplay for Media Futures Conference (2009)
URIplay for Media Futures Conference (2009)
 
BRAINREPUBLIC - Powered by no-SQL
BRAINREPUBLIC - Powered by no-SQLBRAINREPUBLIC - Powered by no-SQL
BRAINREPUBLIC - Powered by no-SQL
 
Deployment presentation
Deployment presentationDeployment presentation
Deployment presentation
 
Yuusuf alqadi assignment 3
Yuusuf alqadi assignment 3 Yuusuf alqadi assignment 3
Yuusuf alqadi assignment 3
 
Symfony in the Cloud
Symfony in the CloudSymfony in the Cloud
Symfony in the Cloud
 
Red Dirt Ruby Conference
Red Dirt Ruby ConferenceRed Dirt Ruby Conference
Red Dirt Ruby Conference
 
Cloudlytics - Analyze S3 & CloudFront Logs
Cloudlytics - Analyze S3 & CloudFront LogsCloudlytics - Analyze S3 & CloudFront Logs
Cloudlytics - Analyze S3 & CloudFront Logs
 
Ftp data exchange-mechanism
Ftp data exchange-mechanismFtp data exchange-mechanism
Ftp data exchange-mechanism
 
Integrating Erlang with PHP
Integrating Erlang with PHPIntegrating Erlang with PHP
Integrating Erlang with PHP
 
Railsconf 2010
Railsconf 2010Railsconf 2010
Railsconf 2010
 
TYPO3 CMS 6.2 LTS Workshop T3DD13
TYPO3 CMS 6.2 LTS Workshop T3DD13TYPO3 CMS 6.2 LTS Workshop T3DD13
TYPO3 CMS 6.2 LTS Workshop T3DD13
 
Codeworks'12 Rock Solid Deployment of PHP Apps
Codeworks'12 Rock Solid Deployment of PHP AppsCodeworks'12 Rock Solid Deployment of PHP Apps
Codeworks'12 Rock Solid Deployment of PHP Apps
 
Tomas Grails
Tomas GrailsTomas Grails
Tomas Grails
 
Optimizing Latency-Sensitive Queries for Presto at Facebook: A Collaboration ...
Optimizing Latency-Sensitive Queries for Presto at Facebook: A Collaboration ...Optimizing Latency-Sensitive Queries for Presto at Facebook: A Collaboration ...
Optimizing Latency-Sensitive Queries for Presto at Facebook: A Collaboration ...
 
Acronym Soup
Acronym SoupAcronym Soup
Acronym Soup
 
Cors
CorsCors
Cors
 
Python-data-science.pptx
Python-data-science.pptxPython-data-science.pptx
Python-data-science.pptx
 

Recently uploaded

From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 

Recently uploaded (20)

From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 

Large Files without the Trials

  • 1. Large Files Without the Trials Aaron VanDerlip and Sally Kleinfeldt Plone Symposium East 2010 Thursday, June 3, 2010
  • 2. Acknowledgments • Bioneers provides environmental education and social connectivity through conferences, radio and TV, books, and online materials • Engaged Jazkarta to build a file asset server based on Plone to help them organize, capture, and store multimedia and textual content with files as large as 5 GB. Thursday, June 3, 2010
  • 3. Acknowledgments • Aaron VanDerlip - Project Manager • Kapil Thangavelu - Developer Thursday, June 3, 2010
  • 4. What is a Big File? • Anything that makes you wait... Thursday, June 3, 2010
  • 5. Plone Problems with Big Files 1.Uploading/Downloading 2.Versioning Thursday, June 3, 2010
  • 6. Uploading Big Files • Both the user and a Zope thread are waiting for the file transfer Thursday, June 3, 2010
  • 8. Uploading Big Files • Browser encodes file in multipart mime format • Zope must undo this encoding • CPU and memory intensive, and SLOW • Zope thread is blocked during this process Thursday, June 3, 2010
  • 9. Downloading Big Files • ...the same thing happens in reverse Thursday, June 3, 2010
  • 10. Learning from Rails • Get file encoding/unencoding and read/ write operations out of Plone • Web servers are really good at this - Apache, Nginx, and Lighttpd • Our implementation uses Apache • Apache file streaming is fast and threads are cheap Thursday, June 3, 2010
  • 11. Learning from Rails • Uploads: Apache plus mod_porter http://therailsway.com/tags/porter • Downloads: Apache plus mod_xsendfile http://john.guen.in/past/2007/4/17/ send_files_faster_with_xsendfile/ • ...and of course ZODB Blob storage Thursday, June 3, 2010
  • 12. Mod Porter • Parses the multipart mime data • Writes the file to disk • Changes the Request to contain a pointer to the temp file on disk • All done efficiently in C code inside your Apache process Thursday, June 3, 2010
  • 14. Apache Config for Mod Porter LoadModule apreq_module /usr/lib/Apache2/modules/mod_apreq2.so LoadModule porter_module /usr/lib/Apache2/modules/mod_porter.so # Apache has a default read limit of 64MB, set it higher APREQ2_ReadLimit 2G ... Porter On # Files below this size will not be handled by mod-porter PorterMinSize 14M # Where the uploaded files are stored PorterDir /mnt/uploads-Apache Thursday, June 3, 2010
  • 15. X-Sendfile • HTTP header • Set an X-Sendfile header and the path of a file on your response • Apache does the rest Thursday, June 3, 2010
  • 16. Apache Config for X-Sendfile LoadModule xsendfile_module /usr/lib/Apache2/modules/mod_xsendfile.so ... EnableSendfile On XSendFile on # Config to send file resources directly from blob storage XSendFilePath /mnt/bioneers/var/blobstorage Thursday, June 3, 2010
  • 17. Using X-Sendfile from Python def download(self, response, file_path): response.setHeader("X-Sendfile", file_path) Thursday, June 3, 2010
  • 18. Blob Storage • Uploads • Blob.consumeFile moves file from Apache’s temp area to blob storage (ZODB/blob.py) • Uses os.rename, file never enters Plone • Downloads • Served directly from blob storage Thursday, June 3, 2010
  • 20. What About Really Really Big Files? • Use FTP • Supports continuation and batching • Handles files too large for browser limits • Content editors use FTP to transfer files to an upload directory Thursday, June 3, 2010
  • 23. ore.bigfile • Minimally intrusive, works with the grain of Plone • Provides Big File content type • IFrontendFileServer interface defines two methods that provide web server support for upload and download • Apache and Nginx implementations provided Thursday, June 3, 2010
  • 24. ore.bigfile Limitations • Upload directory is hardcoded • Possibility of error on very large images which Mod Porter intercepts Thursday, June 3, 2010
  • 26. Solution • Bypass CMFEditions - no file size limitation • Create a new version only when file changes (not metadata) • Allow old versions to be purged • Version information stored on Big File object using annotations Thursday, June 3, 2010
  • 28. Conclusion • ore.bigfile solves the Big File problem for a particular use case, not feature complete • It does so by taking advantage of mature web server technology • The code is minimally intrusive • It provides a strategy for implementation we can learn from as we improve Plone’s Big File story Thursday, June 3, 2010
  • 29. http://svn.objectrealms.net/ view/public/browser/ore.bigfile Questions Thursday, June 3, 2010