Позвольте мне сначала объяснить, почему я написал эту статью и почему я борюсь с этой маленькой проблемой. Прежде всего, включение сжатия статических файлов gzip очень полезно для повышения скорости доступа к веб-сайту и эффективно сокращает время, затрачиваемое пауками на сканирование статических страниц. В то же время это не вызывает 200 0 для пауков Baidu. например включение динамического сжатия файлов. 64, поэтому, с одной стороны, высокая скорость веб-сайта способствует улучшению пользовательского опыта. С другой стороны, блог администратора Google в этом году ясно дал понять, что скорость веб-сайта является одним из факторов ранжирования, а также для использования иностранных хостов. для создания китайских сайтов Baidu Оптимизация и неудовлетворительные затраты времени приведут к меньшему сканированию внутренних страниц Baidu Spider. Гопин также упоминал об этом ранее в своей статье в блоге: Как скорость загрузки веб-страницы влияет на SEO-эффект? В фиксированный период времени общее время, необходимое пауку для сканирования веб-сайта, фиксировано. Если скорость сканирования увеличивается, количество просканированных страниц будет больше, и наоборот.
Ладно, начнем с основного текста. В вопросе 2 предыдущей статьи «Экспериментальные результаты сканирования статических страниц пауком и запуска сжатия gzip» я высказал предположение о том, как сжатая версия статических страниц gzip сохраняется на сервере. долгое время был в замешательстве. После этого я обнаружил, что окончательной причиной разных результатов gzip, возвращаемых двумя хостами, была версия iis, а не настройка папки кэша, которая, как я предполагал, была слишком маленькой.
Фактически, iis7 имеет большее обновление статического сжатия, чем iis6. В IIS6 статическое сжатие выполняется в другом потоке, поэтому после получения HTTP-запроса первый из них отправляется в браузер. HTML-версия не сжимается, и IIS6 запускается. использование другого потока для сжатия файла и сохранения сжатой версии в папке кэша сжатого файла в течение длительного времени. Раньше, то есть на сервере IIS6, после завершения сжатия для любого HTTP-запроса сжатой версии статического файла IIS6 напрямую вызывал сжатую версию из папки кэша и возвращал ее браузеру.
Но в IIS7 сжатие выполняется в основном потоке, и для экономии затрат на сжатие IIS7 не сохраняет долгосрочно сжатые версии всех HTTP-запросов, а только статические файлы, к которым часто обращаются пользователи. Вот почему. Когда я впервые посетил его, он не был сжат. Сжатая версия была возвращена, когда я посетил его снова в течение короткого периода времени, но несжатая версия была возвращена, когда я посетил его через несколько минут. Здесь мы можем понять, что IIS7 фактически не сохраняет сжатую версию в папку кэша, а лишь сохраняет ее в памяти сервера, либо временно сохраняет сжатую версию в папку кэша и через некоторое время удаляет ее.
Метод IIS7, позволяющий определить, какие файлы часто используются и соответствуют стандартам сжатия, — это следующие два свойства в system.webServer/serverRuntime: «частый HitThreshold» и «частый HitTimePeriod». Если IIS получает доступ к статическому файлу, который превышает пороговое значениечастотхиттимепериод, IIS7 сжимает статический файл, как IIS6, и сохраняет сжатую версию в папке кэша сжатого файла в течение длительного времени. Если кешированная версия файла уже существует в папке кэша, когда пользователь обращается к файлу на веб-сайте, IIS7 больше не будет оценивать логикучастотХитТрешхолд и напрямую вернет сжатую версию в браузер.
Эта настройка действительно очень болезненна, но официальный ответ Microsoft заключается в том, что ее можно использовать для повышения производительности сервера. . . Итак, если вы хотите, чтобы IIS7 мог сжимать, как IIS6, есть два решения. Конечно, они оба изменяют значения FrequencyHitThreshold и FrequencyHitTimePeriod:
Во-первых, добавьте следующий контент в web.config, установите значение FrequencyHitThreshold равным 1 и установите значение FrequencyHitTimePeriod на 10 минут.
<система.вебсервер>
<serverRuntime включен = true
частыйHitThreshold=1
частыйHitTimePeriod=00:10:00/>
</system.webServer>
Второй способ — открыть %windir%/system32/inetsrv/appcmd.exe, затем ввести следующую командную строку в интерфейсе командной строки и нажать Enter.
установить конфигурацию -section:system.webServer/serverRuntime -frequentHitThreshold:1
Чиновники Microsoft предполагают, что менее радикальный подход заключается не в снижении FrequencyHitThreshold, а в увеличении FrequencyHitTimePeriod, что более умеренно для производительности сервера. Здесь я хочу отметить, что друзьям, у которых есть VPS, рекомендуется установить его вручную. Могут ли пользователи виртуального хоста установить его, зависит от поставщика услуг. К сожалению, я не могу это изменить. Все, попробуйте