diff --git a/comfy/cli_args.py b/comfy/cli_args.py index f31d5941..a92fc0db 100644 --- a/comfy/cli_args.py +++ b/comfy/cli_args.py @@ -179,6 +179,8 @@ parser.add_argument( parser.add_argument("--user-directory", type=is_valid_directory, default=None, help="Set the ComfyUI user directory with an absolute path. Overrides --base-directory.") +parser.add_argument("--disable-compres-response-body", action="store_true", help="Disable compressing response body.") + if comfy.options.args_parsing: args = parser.parse_args() else: diff --git a/server.py b/server.py index 88c163fc..7b860847 100644 --- a/server.py +++ b/server.py @@ -52,6 +52,22 @@ async def cache_control(request: web.Request, handler): response.headers.setdefault('Cache-Control', 'no-cache') return response + +@web.middleware +async def compress_body(request: web.Request, handler): + accept_encoding = request.headers.get("Accept-Encoding", "") + response: web.Response = await handler(request) + if args.disable_compres_response_body: + return response + if not isinstance(response, web.Response): + return response + if response.content_type not in ["application/json", "text/plain"]: + return response + if response.body and "gzip" in accept_encoding: + response.enable_compression() + return response + + def create_cors_middleware(allowed_origin: str): @web.middleware async def cors_middleware(request: web.Request, handler): @@ -149,7 +165,7 @@ class PromptServer(): self.client_session:Optional[aiohttp.ClientSession] = None self.number = 0 - middlewares = [cache_control] + middlewares = [cache_control, compress_body] if args.enable_cors_header: middlewares.append(create_cors_middleware(args.enable_cors_header)) else: