Я нашел пару уроков о том, как включить gzip, btu ничего не работает для меня, поэтому мой вопрос в том, как включить gzip. Я нахожусь на общем сервере Dreamhost, он работает с PHP версии 5.2 и Apache, из php-информации я нашел эту строку, может быть, это могло бы помочь?
zlib ZLib Support enabled Stream Wrapper support compress.zlib:// Stream Filter support zlib.inflate, zlib.deflate Compiled Version 1.2.3.3 Linked Version 1.2.3.3 Directive Local Value Master Value zlib.output_compression Off Off zlib.output_compression_level -1 -1 zlib.output_handler no value no value
Я также нашел эту строку
_SERVER["HTTP_ACCEPT_ENCODING"] gzip, deflate
Я не знаю, связано ли это с этим. Но это мой первый вопрос, во-вторых, у меня есть Dropbox, размещающий файл javscript, и мне интересно, возможно ли, чтобы этот файл был gzipped, он не переносится сжатым, и так ли это?
вы пробовали с ob_gzhandler?
Руководство пользователя php
<?php ob_start("ob_gzhandler"); ?> <html> <body> <p>This should be a compressed page.</p> </html> <body>
tip: иногда довольно сложно обнаружить, что сеть отправлена сжатой или нет, я использую плагин firebug от firefox, я протестировал php-файл без сжатия и сжатия и сравнил размер, в моем случае разница была 1mb (без сжатия) и 56kb сжаты.
Или в вашем .htaccess
<IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript </IfModule>
В официальной вики Dreamhost они активируют это, изменяя htaccess :
<IfModule mod_gzip.c> mod_gzip_on Yes mod_gzip_dechunk Yes mod_gzip_item_include file \.(html?|txt|css|js|php|pl|jpg|png|gif)$ mod_gzip_item_include handler ^cgi-script$ mod_gzip_item_include mime ^text/.* mod_gzip_item_include mime ^application/x-javascript.* mod_gzip_item_exclude mime ^image/.* mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* </IfModule>
Это в основном проверяет, найден ли mod_czip.c, и если он будет сжимать файлы для вас, поэтому они быстрее отправляются в браузер. Это якобы ускоряет время загрузки 35-40%, а затем размер файла должен, предположительно, снижаться до 55-65%.
С помощью быстрого поиска в Google вы можете найти другой поток на Stackoverflow на стороннем сайте, рассматривая эту проблему.
## Прежде всего, вы должны внести изменения в настройку WHM (сервера), чтобы включить Gzip. После этого внесите изменения в настройку cPanel ##
Для настройки WHM => Easy Apache => Исчерпывающий список опций <здесь enable – deblate tab>
Для настройки cPanel => Sofware / Services => Оптимизировать веб-сайт <здесь выберите вариант, что вы хотите>
В Apache возможность сжатия вывода довольно проста. Добавьте в свой файл .htaccess следующее:
# compress text, html, javascript, css, xml: AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/x-javascript # Or, compress certain file types by extension: <files *.html> SetOutputFilter DEFLATE </files>
Источник: http://betterexplained.com/articles/how-to-optimize-your-site-with-gzip-compression/
Сжатие может быть выполнено двумя способами.
У Apache фактически есть два варианта сжатия:
- mod_deflate проще настроить и является стандартным.
- mod_gzip кажется более мощным: вы можете предварительно сжать контент.
Дефляция быстро и работает, поэтому я использую ее; используйте mod_gzip, если это плавает на вашей лодке. В любом случае Apache проверяет, отправил ли браузер заголовок «Accept-encoding» и возвращает сжатую или обычную версию файла. Однако некоторые старые браузеры могут иметь проблемы (более подробно), и есть специальные директивы, которые вы можете добавить, чтобы исправить это.
Если вы не можете изменить свой файл .htaccess, вы можете использовать PHP для возврата сжатого содержимого. Дайте вашему HTML-файлу расширение .php и добавьте этот код в начало страницы:
В PHP:
<?php if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) ob_start(“ob_gzhandler”); else ob_start(); ?>
Мы проверяем заголовок «Accept-encoding» и возвращаем gzipped версию файла (в противном случае – обычную версию). Это похоже на создание собственного веб-сервера (что весело!). Но на самом деле, попробуйте использовать Apache для сжатия вашего вывода, если вы можете ему помочь. Вы не хотите обезьяны с вашими файлами.
Ссылка: http://betterexplained.com/articles/how-to-optimize-your-site-with-gzip-compression/
Все, что мне нужно было сделать, чтобы включить кодировку на уровне Apache, – это
zlib.output_compression = 1 // the PHP.ini file
это заставит сервер выполнять необходимую проверку заголовка запроса, сжимать, отправлять связанные заголовки
вы также можете сделать это в своих файлах PHP до ob_start()
ini_set("zlib.output_compression", 1);
И чтобы Apache сжимал статические ресурсы (например: .js-файлы, .css-файлы), как сделал Камлеш в своем ответе