ASP에서 Json 결과를 압축하려면 어떻게 해야 합니까?IIS 7.5를 사용하는 NET MVC
ASP의 Json 결과를 IIS 7에서 올바르게 압축하는 데 문제가 있습니다.NET MVC. IIS에서 정적 및 동적 압축을 활성화했습니다.일반 텍스트/html 및 유사한 레코드가 압축되어 있는지 Fiddler로 확인할 수 있습니다.요청을 표시하면 accept-encoding gzip 헤더가 있습니다.응답의 mimtype은 "application/json"이지만 압축되지 않았습니다.
문제가 MimeType과 관련된 것으로 보입니다.포함할 때mimeType="*/*"
, 응답이 올바르게 압축되어 있는 것을 알 수 있습니다.와일드카드 mimeType을 사용하지 않고 IIS를 압축하려면 어떻게 해야 합니까?저는 이 문제가 ASP의 방식과 관련이 있다고 생각합니다.NET MVC는 콘텐츠유형 헤더를 생성합니다.
CPU 사용량이 동적 슬롯링 임계값을 훨씬 밑돌고 있습니다.IIS에서 트레이스 로그를 조사하면 일치하는 MIME 유형을 찾지 못해 압축에 실패했음을 알 수 있습니다.
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files" noCompressionForProxies="false">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
<dynamicTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="application/json" enabled="true" />
</dynamicTypes>
<staticTypes>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="application/atom+xml" enabled="true" />
<add mimeType="application/xaml+xml" enabled="true" />
<add mimeType="application/json" enabled="true" />
</staticTypes>
</httpCompression>
%WinDir%\를 확인합니다.System32\inetsrv\config\applicationHost.config에는 다음이 포함됩니다.
<system.webServer>
<urlCompression doDynamicCompression="true" />
<httpCompression>
<dynamicTypes>
<add mimeType="application/json" enabled="true" />
<add mimeType="application/json; charset=utf-8" enabled="true" />
</dynamicTypes>
</httpCompression>
</system.webServer>
@AtanasKorchev 링크에서.
@simon_weaver가 코멘트에서 말한 것처럼 64비트 Windows에서 32비트 에디터로 잘못된 파일을 편집하고 있을 수 있습니다.메모장을 사용합니다.exe를 클릭하여 이 파일이 실제로 수정되었는지 확인합니다.
나는 여기서 강조된 접근법을 성공적으로 사용했다.
나는 이 대답들 중 어느 것도 통하지 않았다.어플리케이션/json; charset=utf-8 mime-type에 주목했습니다.
이 방법을 추천합니다.
만들다CompressAttribute
class 및 target 액션을 설정합니다.
ASP에 대해 ActionFilterAttribute 접근법이 업데이트되었습니다.NET 4.x 및 Brotli 포함.NET 패키지
using System;
using System.IO.Compression;
using Brotli;
using System.Web;
using System.Web.Mvc;
public class CompressFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
HttpRequestBase request = filterContext.HttpContext.Request;
string acceptEncoding = request.Headers["Accept-Encoding"];
if (string.IsNullOrEmpty(acceptEncoding)) return;
acceptEncoding = acceptEncoding.ToUpperInvariant();
HttpResponseBase response = filterContext.HttpContext.Response;
if (acceptEncoding.Contains("BR"))
{
response.AppendHeader("Content-encoding", "br");
response.Filter = new BrotliStream(response.Filter, CompressionMode.Compress);
}
else if (acceptEncoding.Contains("GZIP"))
{
response.AppendHeader("Content-encoding", "gzip");
response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
}
else if (acceptEncoding.Contains("DEFLATE"))
{
response.AppendHeader("Content-encoding", "deflate");
response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
}
}
}
언급URL : https://stackoverflow.com/questions/2138243/how-do-i-compress-a-json-result-from-asp-net-mvc-with-iis-7-5
'programing' 카테고리의 다른 글
SonarQube 규칙: Spring Boot 응용 프로그램에서 "명령줄 인수를 사용하는 것은 보안에 영향을 미칩니다" (0) | 2023.03.02 |
---|---|
출력 텍스트 파일에서 열 머리글 제거 (0) | 2023.03.02 |
정의되지 않은 속성 '_e3_'을 읽을 수 없습니다. (0) | 2023.03.02 |
Buffered Reader를 문자열로 쉽게 변환하는 방법 (0) | 2023.03.02 |
Oracle 사용자 뷰의 열 이름 나열 (0) | 2023.03.02 |