whitenoise
whitenoise copied to clipboard
Added Django Middleware that Delays Traversal of Static Root until Requested
Added an additional middleware for Django users that avoids the problems described #263 by constructing the file cache for the static root as files are requested. WHITENOISE_ROOT is not delayed as it is documented as don’t use this for the bulk of your static files. Files from finders are also not delayed as this is documented mainly for development and I've assumed its use in production would be fast or collectstatic would be used during the build phase.
If the configured static storage is a subclass of ManifestStaticFilesStorage the middleware makes use of staticfiles_storage.hashed_files to know which files are supposed to exist (avoids accessing the disk to retrieve unknown files) and uses the WHITENOISE_KEEP_ONLY_HASHED_FILES setting to determine if it should serve unhashed files.
Question: Would this make sense as the default when the configured storage is a subclass of ManifestStaticFilesStorage? It could be moved into the WhiteNoiseMiddleware and add_static_root_files could be a calculated property based on isinstance(staticfiles_storage, ManifestStaticFilesStorage)
@evansd thoughts on merging? it has been working well for me