i am working on a website which deploy on web farms to serve high traffic. where should i store user uploaded files? is it wise to store uploaded files in the file system of the same website and synchronize these files in all web servers(web farm)? or should i use another server to store all uploaded files in this server to store files in a central location? if separate file server will be a better choice, than how can i pass files from web server to that file server efficiently? or should i upload files directly to that file server?
How and where to store user uploaded files in high traffic web farm scenario website?
3k views Asked by Inam Jameel At
3
There are 3 answers
1
Matthew
On
Have you considered using Amazon S3 to store and serve user-uploaded files?
Otherwise, a central file server in your data center makes sense. You could mount the storage locally on each of your web servers using NFS or similar.
However you choose to store these files, you should always serve user-provided files from a different domain to avoid cross-domain exploits.
0
Joneph O.
On
You asked about how Facebook stores photos. You might want to read the following article:
Needle in a haystack: efficient storage of billions of photos
Related Questions in SYNCHRONIZATION
- I need assistance with scripting between tabs for Google Sheets
- Transfer SQLite Database via USB-Cable
- How to avoid re-syncing entire tables between microservice databases upon schema changes?
- Qualcomm Diag frame Time synchronization in Quectel EC25
- Parallel programming: Synchronizing processes
- Passing arguments to OpenCL kernel, before execution finished
- Context Cancels not triggering on a blocking Stream.Recv() in Go gRPC Bi-Directional Stream
- How can I proactively close a synchronous tungstenite websocket connection?
- Weird race-condition in java ThreadPoolExecutor
- How to make Offline database with online synchronization in android app using JAVA. Plesae suggest me code or any related tutorial
- Critical section control with atomics
- stm32 FreeRTOS Interrupt cannot run smooth as i think
- How can I change MongoDB Sync Driver Logging level to SEVERE using PaperMC?
- Strange output in a synchronization problem using binary semaphores in C
- How to ensure consistency in process synchronization
Related Questions in FILE-UPLOAD
- MERN Stack App - User Avatar Upload - 500 Error After Deployment on Render
- Maximum upload size exceeded when saving photos in summernote
- Upload images into public folder within two frontend applications
- Unhandled Runtime Error when uploading images on next JS project. got this error Check the render method of `FileUpload`
- Multer unable to process files
- nestjs , stream question, i dont know my code would synchronization or asynchronous
- Dynamically bind control to object in Mudblazor page
- Adding users file storage feature to my application
- Kendo Ui Angular File Upload
- React Native returns "Stream Closed" when uploading image using expo-image-picker
- Trigger Warning: Mysterious Memory Spike on Google Drive Upload using Google Cloud Run
- I cant upload df to my google disk with google API
- File Upload Handling: Inconsistent HTTP Response Codes for Different File Sizes with Exception in Tomcat
- Background images and pop up related issue in live
- Uploading files within a foreach loop
Related Questions in FILESYSTEMS
- Where exactly is the first data sector on a FAT file system?
- `df` command not capturing entire output in perl
- Is it possible to mount a logical volume without wiping the data?
- Speed up search of remote directories
- How to change the directory file system without losing files?
- Flutter SDK: Files Deleted Automatically (e.g., dart.exe), Errors in Android Studio
- How to store metadata for a UTF-8 text file cross-platform?
- fsck error on boot: dev/mapper/ubuntu--vg-ubuntu--lv: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY
- rouble with mounting Python code to FUSE: No response and prolonged processing ---
- mkfs.erofs erofs: failed to lookup selabel
- How to deny user access MacFuse file system by the really path
- Is it faster to read a file on an NVMe using threads?
- list folders containing mp3 files using the Capacitor Filesystem
- How to use xdg-open in bwrap environment to open dir in the unsandboxed filesystem
- How to provide content of (locally) encrypted files to the iOS and macOS system
Related Questions in WEB-FARM
- Antiforgery token with Blazor .Net 8 on a web farm - machinekey not used
- Web Farm with IIS10 Servers | Content Server: HTTP Error 500.0 - ASP.NET Core IIS hosting failure (in-process)
- Set the default focus of an aspx page onto a button
- Using Azure AD for authentication, we sometimes get CORS or Access-Control errors during partial page updates
- How to change a boolean value in FARM
- IIS 10 ARR LoadBalancer Working more like Redundent Web Servers
- How to send request to another server with IIS ARR if a timeout occurs?
- Asp.Net Core: Sharing authentication cookies in Web Farm doesn't work
- ASP.NET Identity Core: invalid token for password reset on web farm
- High Availability ASP.Net MVC on Azure Web App throwing 500 Internal Server Error
- AppDomain handy information lost in load balanced scenario
- SSL CSR for server farm on IIS
- Kentico 9 Web Farm Synchronization
- Using Web Deploy to synchronize web application files
- How do I deploy an Asp.Net Core app on a web farm?
Related Questions in HIGH-TRAFFIC
- Laravel rate limit using authenticated user tps(transactions per second)
- Handling Blocking External API Calls in Django
- Handle concurrent requests to update the resources
- Hazelcast causing heavy traffic between nodes
- Can we use hibernate in a high traffic multi tenancy cloud application?
- Is there a way to configure Spring Boot API to set connection timeout for incoming request?
- Apache 2.4 php 7.2 Apache ( php module) increase max connections to handle 10000
- Why always "Invalid argument supplied for foreach"
- MySQL Connection Error on heavy load with wordpress site
- Low download speed
- Django shows Python socket.error: [Errno 104] Connection reset by peer
- Hosting/Server for high traffic website
- High traffic connection between Php and Redis
- Laravel for complex browser game website
- Nodejs - High Traffic to Clustered Microservices Problems
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
For security reasons you want to serve the files from a different sub-domain anyways. This is easier by dedicating one server for these files, if the traffic for these files warrants it, but that also creates a single point of failure and bottleneck which you probably want to avoid.
You can have all web servers serve the files from a central file server or local cached copies. This depends a lot on if the files ever change.