#php #.htaccess #gzip
#php #.htaccess #gzip
Вопрос:
Моя хостинговая компания не поддерживает mod_gzip и mod_deflate.
Я должен загрузить файлы gzip .js и css
Я предварительно сжал файлы.
Я использую Joomla, и для добавления скриптов в документ я должен использовать PHP-файл, который обслуживает .js.gz файлы, когда пользователь принимает кодировку (пример кода PHP joomla):
$document = amp;JFactory::getDocument();
$document->addScript($jQueryPath);
Я добавил приведенную ниже директиву в .htaccess; однако браузеры не распаковывают .js.gz файлы
# Add some gzip to the bunch
AddEncoding x-gzip .gz
<FilesMatch .js.gz$>
ForceType text/javascript
Header set Content-Encoding "gzip"
</FilesMatch>
<FilesMatch .css.gz$>
ForceType text/css
Header set Content-Encoding "gzip"
</FilesMatch>
RewriteCond %{REQUEST_FILENAME} ^. .(js|css)$ [NC]
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{REQUEST_FILENAME}.gz -f
RewriteRule ^(. )$ $1.gz [L,QSA,NC,NS]
Кто-нибудь может помочь с gzip в описанных условиях?
Спасибо,
Комментарии:
1. Лично я бы сократил всю ситуацию и нашел более компетентную хостинговую компанию.
2. Помимо хостинговой компании, может иметь смысл иметь предварительно рассчитанное сжатие, поскольку часто файлы не меняются, и серверу не нужно выполнять ту же работу заново. Своего рода кэширование.
Ответ №1:
Большинство установок php поставляются с расширением Zlib, которое позволяет вам манипулировать файлами gzip.
Взгляните на эти страницы руководства по php, чтобы выполнить то, что вы просили:
http://www.php.net/manual/en/function.gzcompress.php
http://www.php.net/manual/en/function.gzdeflate.php
http://www.php.net/manual/en/function.gzencode.php
вы можете использовать суперглобальный файл $_SERVER для проверки заголовка Accept Encoding:
if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'deflate'))
{
// DO STUFF HERE
}
elseif (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip'))
{
// DO STUFF HERE
}