YSlow дает оценку F файлам, сжатым с помощью mod_deflate - PullRequest
6 голосов
/ 10 июня 2009

Я использую mod_deflate на Apache 2.2 , а уровень сжатия установлен на 9. Я настроил все возможные аспекты сайта на основе рекомендаций YSlow (v2) и сумели получить общую оценку A (Общая оценка: 91), а также по всем категориям, кроме:

  • Делать меньше HTTP-запросов ( Оценка C - Я все еще работаю над дальнейшим унификация изображений)
  • Сжатие компонентов с помощью gzip ( Grade F )

YSlow все еще сообщает с F и говорит мне использовать gzip для моих файлов CSS и JS. Вот скриншот отчета YSlow (домен был размыт из соображений конфиденциальности) : screenshot of YSlow report

Тем не менее, такие сайты, как GIDNetwork GZIP Test сообщает об идеальном сжатии !!

раздел mod_deflate моего .htaccess

# Below uses mod_deflate to compress text files. Never compress binary files.
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE

# compress content with type html, text, js, and css
AddOutputFilterByType DEFLATE text/html text/plain text/css text/javascript text/xml image/svg+xml application/javascript application/x-javascript application/atom_xml application/rss+xml application/xml application/xhtml+xml application/x-httpd-php application/x-httpd-fastphp

# Properly handle old browsers that do not support compression  
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

# Explicitly exclude binary files from compression just in case
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.avi$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.mov$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.mp3$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.mp4$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.rm$ no-gzip dont-vary

# properly handle requests coming from behind proxies
Header append Vary User-Agent env=!dont-vary
</IfModule>

Может кто-нибудь указать, где я иду не так?

Спасибо, м ^ е

Ответы [ 3 ]

4 голосов
/ 10 июня 2009

Возможно, что mod_deflate настроен неправильно.

Типичная конфигурация mod_deflate может исключать некоторые браузеры на основе строк пользовательского агента и может быть настроена только на сжатие определенных типов файлов - определенных их типом MIME, зарегистрированным на сервере.

Вы должны сжимать все свои файлы HTML, CSS и Javascript, но не файлы PNG, GIF или JPEG, и в Netscape 4 есть ошибки, которые вы можете или не хотите учитывать. Попробуйте использовать пример кода из документации :

<Location />
    # Insert filter
    SetOutputFilter DEFLATE

    # Netscape 4.x has some problems...
    BrowserMatch ^Mozilla/4 gzip-only-text/html

    # Netscape 4.06-4.08 have some more problems
    BrowserMatch ^Mozilla/4\.0[678] no-gzip

    # MSIE masquerades as Netscape, but it is fine
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
    # Don't compress images
    SetEnvIfNoCase Request_URI \
    \.(?:gif|jpe?g|png)$ no-gzip dont-vary

    # Make sure proxies don't deliver the wrong content
    Header append Vary User-Agent env=!dont-vary
</Location> 

Обратите внимание, что тест GIDZipTest GZIP, который вы опубликовали, не тестирует связанные файлы Javascript и CSS, в то время как YSlow - в тесте GID GipzipTest вам необходимо проверить их индивидуально.

Полагаю, также возможно, что ваш провайдер использует кеширующий прокси - прозрачный или нет - который искажает или удаляет заголовок Accept-Encoding :. Чтобы исключить это как причину, вы можете попросить кого-нибудь проверить это за пределами вашего интернет-провайдера.

Еще одна вещь, которую стоит отметить, это то, что при сжатии файлов с использованием gzip вы торгуете пропускной способностью для процессорного времени. Выше более низких степеней сжатия вы увидите уменьшение отдачи от экономии пропускной способности, но требуется значительное увеличение процессорного времени. К сожалению, при степени сжатия, равной 9, вы почти наверняка тратите слишком много процессорного времени на очень мало улучшенное сжатие - я всегда рекомендовал бы использовать степень 1.

2 голосов
/ 10 января 2010

Чтобы сделать то же самое с ASP.NET, прочитайте эту статью - http://coder.informisk.com/post/2010/01/10/Get-Grade-A-in-YSlow.aspx

1 голос
/ 23 марта 2010

этот сайт http://www.rubyrobot.org/article/5-tips-for-faster-loading-web-sites сказал мне, что AddOutputFilterByType не будет работать в .htaccess

...