SlideShare una empresa de Scribd logo
1 de 29
Descargar para leer sin conexión
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

Más contenido relacionado

Similar a 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 a 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
 

Último

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
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
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
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
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
 
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
 
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
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
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
 
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
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
[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
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 

Último (20)

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
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
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
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
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
 
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
 
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
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
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
 
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
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
[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
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 

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