2011-01-17 3 views
22

Я нашел пару уроков о том, как включить gzip, btu ничего не работает для меня, поэтому мой вопрос: как включить gzip. Я нахожусь на общем сервере Dreamhost, он работает с PHP версии 5.2 и Apache, из php-информации я нашел эту строку, может быть, это может помочь?Как включить gzip?

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, он не переносится сжатым, и так ли это?

+0

Что вы хотите GZIP для? Использование функций gzip PHP? Сжатие вывода вашего веб-сервера? Если это последний, установите 'mod_deflate' и попробуйте [serverfault.com] (http://serverfault.com), если у вас есть какие-либо проблемы/вопросы. – netcoder

ответ

43

Вы пытались использовать ob_gzhandler?

php manual

<?php 
ob_start("ob_gzhandler"); 
?> 
<html> 
<body> 
<p>This should be a compressed page.</p> 
</html> 
<body> 

совет: иногда довольно сложно обнаружить, если полотно отправить сжатый или нет, я использую Firebug плагин браузера Firefox, я протестировал файл PHP без сжатия и со сжатием и сравнить размер, в моем случае разница составляла 1 мб (без сжатия) и 56 кб сжатых.

Или в вашем .htaccess

<IfModule mod_deflate.c> 
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css   application/x-javascript application/javascript 
</IfModule> 
+0

Что касается таблицы стилей и javascripts? я думал, что это будет больше .htaccess. я попробую это, хотя. – mcbeav

+0

Насколько я вижу, это не дает мне никаких результатов. – mcbeav

+0

.... – magallanes

5

В официальной вики в Dreamhost они позволяют это, modifying an 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 вы можете придумать другой thread on Stackoverflow в качестве third party сайта, посвященной этой проблеме.

+0

Это очень старый. С Apache 2 лучше использовать 'mod_deflate.c'. – VSG24

+0

Вы включаете файлы типа 'jpg/png/gif', а затем вы запрещаете их через mime' image /.* '. На самом деле это не имеет смысла. – mgutt

2

## Прежде всего, вы должны внести изменения в настройку WHM (сервера), чтобы включить Gzip. После этого внести изменения в CPanel установки ##

  1. Для настройки WHM => Easy Apache => Исчерпывающий Опции Список < здесь включить - выкачать вкладка>

  2. Для CPanel настройки => Sofware/Услуги => Оптимизировать сайт < здесь выбрать вариант, что вы хотите>

3

В 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/

+0

http://www.giftofspeed.com/enable-gzip-compression/ – Kamlesh

1

Сжатие может быть сделано двумя способами.

Apache на самом деле имеет два варианта сжатия:

  • mod_deflate проще в настройке и является стандартным.
  • mod_gzip кажется более мощным: вы можете предварительно сжать контент.

Deflate is quick and works, поэтому я использую его; используйте 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» заголовок и возвращают сжатую версию файла (в противном случае обычная версия). Это похоже на создание собственного веб-сервера (что весело!). Но на самом деле, попробуйте использовать Apache для сжатия вашего вывода, если вы можете ему помочь. Вы не хотите обезьяны с вашими файлами.

Ссылка: http://betterexplained.com/articles/how-to-optimize-your-site-with-gzip-compression/

0

Все, что я должен был сделать, чтобы включить кодирование на уровне Apache является

zlib.output_compression = 1 // the PHP.ini file 

это сделает сервер сделать необходимый запрос проверки заголовка, сжиматься, отправить родственный заголовки

вы также можете сделать это в своих файлах PHP до ob_start()

ini_set("zlib.output_compression", 1); 

А чтобы Apache сжать статические ресурсы (например: .js файлы .css файлы) сделать как Kamlesh сделал в своем ответе

Смежные вопросы