먼저 제가 이 글을 쓴 이유와 제가 이 작은 문제로 어려움을 겪고 있는 이유를 설명하겠습니다. 우선, 정적 파일의 gzip 압축을 켜는 것은 웹사이트의 액세스 속도를 향상시키는 데 매우 유용하며 동시에 스파이더가 정적 페이지를 크롤링하는 데 걸리는 시간을 효과적으로 줄이는 동시에 Baidu 스파이더에 200 0이 발생하지 않습니다. 동적 파일 압축을 켜는 것과 같습니다. 64 크롤링 문제로 인해 한편으로는 빠른 웹 사이트 속도가 사용자 경험을 향상시키는 데 도움이 되는 반면, Google 관리자 블로그에서는 올해 웹 사이트 속도가 순위 요소 중 하나이며 외국 호스트를 사용하는 데 도움이 된다는 점을 분명히 했습니다. Baidu 중국어 사이트 구축 최적화 및 불만족스러운 시간 소요로 인해 Baidu Spider의 내부 페이지 크롤링이 줄어들게 됩니다. Guoping은 이전에 자신의 블로그 기사인 웹 페이지 로딩 속도가 SEO 효과에 어떤 영향을 미칩니까? 일정 기간 동안 스파이더가 웹 사이트를 크롤링하는 데 걸리는 총 시간은 고정되어 있습니다. 크롤링 속도가 증가하면 크롤링되는 페이지 수가 많아지고 그 반대도 마찬가지입니다.
자, 이전 기사 "스파이더가 정적 페이지를 크롤링하고 gzip 압축을 실행하는 실험 결과"의 질문 2에서, 압축된 gzip 정적 페이지가 서버에 어떻게 저장되는지 추측했습니다. 오랫동안 혼란스러워하다 그 후 두 호스트에서 서로 다른 gzip 결과가 반환되는 최종 이유는 내가 짐작했던 캐시 폴더 설정이 너무 작았다기보다는 iis 버전이라는 것을 알게 되었습니다.
실제로 iis7은 정적 압축에서 iis6보다 더 큰 업데이트를 가지고 있습니다. IIS6에서는 정적 압축이 다른 스레드에서 수행되므로 HTTP 요청을 받은 후 브라우저로 전송된 첫 번째 HTML 버전이 압축 해제되고 IIS6이 시작됩니다. 다른 스레드를 사용하여 파일을 압축하고 압축된 버전을 압축 파일의 캐시 폴더에 오랫동안 저장합니다. 과거에는 IIS6 서버에서 압축이 완료된 후 정적 파일의 압축 버전에 대한 HTTP 요청에 대해 IIS6이 캐시 폴더에서 압축 버전을 직접 호출하여 브라우저에 반환했습니다.
그러나 IIS7에서는 압축이 메인 스레드에서 수행되며 압축 비용을 절약하기 위해 IIS7에서는 모든 HTTP 요청의 장기 압축 버전을 저장하지 않고 사용자가 자주 액세스하는 정적 파일만 저장합니다. 처음 방문했을 땐 압축이 안 됐는데, 짧은 시간 뒤에 다시 방문하면 압축되지 않은 버전이 돌아오는데, 몇 분 지나서 방문하니 압축되지 않은 버전이 돌아왔어요. 여기서 우리는 IIS7이 실제로 압축된 버전을 캐시 폴더에 저장하지 않고 서버 메모리에만 저장하거나, 압축된 버전을 캐시 폴더에 일시적으로 저장했다가 잠시 후 삭제한다는 점을 이해할 수 있습니다.
자주 액세스되는 파일을 정의하고 압축 표준을 준수하는 IIS7의 방법은 system.webServer/serverRuntime의 빈번한HitThreshold 및 빈번한HitTimePeriod의 두 가지 속성입니다. IIS가 빈번한HitTimePeriod 기간 내에frequentHitThreshold 임계값을 초과하는 정적 파일에 대한 액세스를 수신하면 IIS7은 IIS6과 같은 정적 파일을 압축하고 압축된 파일의 캐시 폴더에 압축된 버전을 오랫동안 저장합니다. 사용자가 웹 사이트의 파일에 액세스할 때 캐시된 버전의 파일이 캐시 폴더에 이미 존재하는 경우 IIS7은 더 이상 빈번한HitThreshhold의 논리를 판단하지 않고 압축된 버전을 브라우저에 직접 반환합니다.
이 설정은 사실 매우 고통스러운 설정이지만 Microsoft의 공식 답변은 서버 성능을 향상시키는 데 사용할 수 있다는 것입니다. . . 따라서 IIS7을 IIS6처럼 압축할 수 있도록 하려면 두 가지 솔루션이 있습니다. 물론 두 가지 솔루션 모두 빈번한HitThreshold 및 빈번한HitTimePeriod 값을 수정합니다.
첫 번째는 web.config에 다음 내용을 추가하고frequentHitThreshold를 1로 조정하고frequentHitTimePeriod를 10분으로 조정하는 것입니다.
<시스템.웹서버>
<serverRuntime 활성화=true
빈번한Hit임계값=1
빈번한HitTimePeriod=00:10:00/>
</system.webServer>
두 번째 방법은 %windir%/system32/inetsrv/appcmd.exe를 열고 명령줄 인터페이스에 다음 명령 문자열을 입력한 후 Enter를 누르는 것입니다.
구성 설정 -section:system.webServer/serverRuntime -frequentHitThreshold:1
Microsoft 관계자는 덜 급진적인 접근 방식은frequentHitThreshold를 낮추는 것이 아니라 서버 성능에 좀 더 적당한frequentHitTimePeriod를 높이는 것이라고 제안합니다. 여기서 말씀드리고 싶은 점은 VPS를 가지고 있는 친구들은 수동으로 설정하는 것을 권장하며, 가상호스트 사용자가 설정할 수 있는지 여부는 서비스 제공업체에 따라 다르기 때문에 아쉽게도 변경할 수 없습니다. 여러분, 한번 해보세요