Как использовать GZIP для файла CSS / JS в PHP? - PullRequest
2 голосов
/ 05 июня 2009

Теперь я не использую какой-либо метод сжатия, просто поместите ниже между тегом body:

<link rel="stylesheet" type="text/css" href="Client/Css/all.css" />

Возможно ли использовать ob_start ("ob_gzhandler") в PHP для сжатия этого файла CSS?

А как?

Ответы [ 5 ]

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

это обычно не делается программно, оно обрабатывается веб-сервером

Для apache есть модуль mod_gzip или mod_deflate , который вы можете использовать.

IIS имеет настройки , которые вы можете использовать.

2 голосов
/ 05 июня 2009

Да, вы можете (при передаче файлов через php-скрипт, который выполняет сжатие). Но это гораздо больше, чем просто сжатие результатов. Вы должны отправлять сжатый вывод только тем клиентам, которые его поддерживают, вы должны убедиться, что правильно обрабатываете информацию / запросы кеширования. И т.д.

В некоторых случаях ваш веб-сервер поддерживает все это за вас без необходимости использования PHP-скрипта. В случае Apache посмотрите на mod_deflate и mod_mime (директива AddEncoding).

1 голос
/ 05 июня 2009

Если вы используете более новую версию веб-сервера apache, добавьте в свой файл .htaccess следующее:


DeflateCompressionLevel 9  
SetOutputFilter DEFLATE  
BrowserMatch ^Mozilla/4 gzip-only-text/html  
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html  
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|ico)$ no-gzip dont-vary  
Header append Vary User-Agent env=!dont-vary

1 голос
/ 05 июня 2009

Есть несколько способов.

Вы можете указать веб-серверу обрабатывать файл как PHP (самое простое переименование - иметь расширение .php), а затем добавить:

<?php
  header("Content-type: text/css; charset=utf-8");
  ob_start("ob_gzhandler")
?>

наверх.

Вы могли бы написать скрипт PHP, который делает то же самое, но читает в файле CSS вместо того, чтобы иметь его встроенным.

Обе эти опции приводят к проблемам с кэшированием - вам также придется позаботиться о заголовках HTTP для контроля кэша, если вы хотите быть в здравом уме.

Лучшим вариантом было бы забыть о PHP и просто настроить свой веб-сервер для сжатия этих файлов (используя mod_deflate, mod_gzip или аналогичный)

0 голосов
/ 05 июня 2009

Чего ты пытаешься достичь? Если вы пытаетесь сжать компоненты для отправки в браузер клиентов, чтобы они быстрее загружались, вам следует использовать mod_defalte. Если это не вариант, вы можете найти больше информации здесь: первый результат поиска в Google "gzip php css"

РЕДАКТИРОВАТЬ: Я просто хочу отметить, что если вы не используете более старую версию Apache, вы должны использовать mod_deflate не mod_gzip.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...