DiluxOne Offload – Media Storage Wordpress Plugin - Rating, Reviews, Demo & Download
Plugin Description
DiluxOne Offload moves your WordPress media library to Azure Blob Storage and serves files directly from the cloud — without breaking the Media Library UI, plugins, or existing content.
The plugin uses a custom PHP stream wrapper to intercept every read and write to /wp-content/uploads/, so WordPress, WooCommerce, page builders, image editors, and any plugin that calls standard filesystem functions (fopen, file_get_contents, unlink, etc.) keep working unchanged.
Key features
- Azure Blob Storage — bring your own storage account; nothing is shared with anyone else.
- Transparent stream wrapper — no URL rewriting, no regex on post content, no database migration required for URLs.
- Sync with resumable state machine — start, cancel, resume after an interruption, retry failed files, resync from scratch.
- Offloading mode — after a successful sync you can delete the local copies to free disk space; the stream wrapper keeps everything working.
- Connection health monitoring — when the cloud is unreachable, new uploads are refused with a clear error instead of landing somewhere else, and a banner on the plugin’s admin pages says why until it recovers.
- No plugin data on disk — no cache, log or data files anywhere on the server. The one time the plugin writes to the uploads directory is when you disconnect, to copy your own media back to where WordPress expects it.
- Large files don’t need large memory — a download goes straight to disk, and an upload is sent in 4 MiB blocks, so PHP never holds more than one block of a file at a time and a video does not trip
memory_limit. - Multisite aware — network activation supported; each site keeps its own configuration and file tracking, and its objects live under their own prefix in the container (
uploads/for the main site,uploads/sites/<id>/for the others, the same layout WordPress uses on disk), so several sites can share one container without ever sharing a key. - Quiet by default — with
WP_DEBUGoff and the Settings toggle off the plugin writes nothing to the PHP error log, at any level.WP_DEBUGturns on errors and warnings; the toggle adds the informational lines.
Why a stream wrapper instead of URL rewriting
Most offload plugins rewrite media URLs in post content, which breaks when you switch providers, move domains, or restore from a backup. DiluxOne Offload leaves URLs alone and rewrites reads/writes at the filesystem layer, so your content stays portable.
Known limitations
- One provider: Azure Blob Storage. The container must allow anonymous read of blobs (public access level Blob); a private container is refused.
- The initial sync runs in your browser tab and stops if you close it; it resumes where it left off. Nothing runs in the background or via cron.
- Files above the Maximum File Size setting (20 MB by default, up to 500 MB) are skipped by the initial sync.
- While the cloud is unreachable, new uploads fail. There is deliberately no local fallback.
- No CDN or custom-domain option: media is served from your storage account’s URL.
- Disconnect from Cloud needs a writable uploads directory and enough disk for your media.
External services
This plugin connects to Azure Blob Storage, a third-party cloud storage service, to store and serve your media files. Nothing is sent anywhere until you configure it yourself in the Cloud Provider tab, with an account and credentials you supply. The plugin contacts no other service: it sends no telemetry, no usage data and no licence check to the author or to anyone else.
Azure Blob Storage
What it is used for: storing your WordPress media files outside your server and serving them from the cloud.
Where requests go: the Azure Blob REST API at blob.core.windows.net — specifically your own account’s host, https://ACCOUNT.blob.core.windows.net, where ACCOUNT is the storage account name you enter in the settings.
What data is sent: your media files themselves, together with their relative path, size and MIME type. The storage account key you entered never leaves your server — it is used locally to compute the signature that authenticates each request. No personal data about your visitors or your site’s users is sent, and nothing at all about your site reaches the plugin’s author.
When requests happen:
- During the initial sync — uploading existing files from
/wp-content/uploads/to your container. - On every new media upload — writing the file to the cloud through the stream wrapper.
- On read or delete — when WordPress, or any plugin using filesystem APIs against
/uploads/, reads or deletes a file. This is also the only front-end traffic: a form or a review that uploads a file goes through the same stream wrapper. - When the plugin lists your container — for the Overview statistics (cached for five minutes) and for the scan that precedes Disconnect from Cloud.
- A connection-health check — a small GET for your container’s properties — when you open one of the plugin’s admin pages, at most once every 5 minutes, and again from a write that follows three consecutive failures, so uploads resume on their own when the cloud is back. Nothing runs via cron.
- During Disconnect from Cloud — downloading your files back to the server.
This is your own Azure account, under your own agreement with Microsoft. Neither DiluxOne nor the plugin’s author is a party to it and neither has any access to your data. Your use of the service is subject to Microsoft’s terms:
- Service: Azure Blob Storage (https://azure.microsoft.com/services/storage/blobs/)
- Terms of Service: Microsoft Online Services Terms (https://www.microsoft.com/licensing/terms/productoffering/MicrosoftAzure)
- Privacy Policy: Microsoft Privacy Statement (https://www.microsoft.com/privacy/privacystatement)
Screenshots
Overview: provider configured, media synced, offloading active.
Cloud Provider: choosing Azure Blob Storage.
Cloud Provider: entering the storage account, key and container, and testing the connection.
Provider saved and ready to sync.
The first sync, file by file, in the browser.
Sync complete: enable offloading now or later.
Offloading active: disconnect from the cloud, or delete the local copies.
Settings: file-size limit, upload timeout, HTTPS for cloud URLs, debug logging.
Status: plugin state, environment and provider at a glance.
