Zend Framework и сжатие gzip ответа - PullRequest
2 голосов
/ 01 июня 2011

Я ищу способ сжать мои XML-ответы и только их.Я не нашел никаких материалов, как это сделать в Zend Framework.В моем абстрактном контроллере есть метод ответа, такой как:

public function xmlResponse(SimpleXMLElement $xml, $contentType = null){
    $this->_helper->layout->disableLayout();
    Zend_Controller_Front::getInstance()->setParam('noViewRenderer', true);

    $this->_response->setHeader('Content-Type', ($contentType) ? $contentType : 'text/xml');
    $this->_response->setBody($xml->asXML());
} // xmlResponse

, и я хочу добавить сжатие gzip здесь.

Спасибо за помощь!

Ответы [ 2 ]

1 голос
/ 01 июня 2011

Это то, что вы ищете?:

$this->_response->setHeader('Content-Type', 'application/x-gzip');
$filter     = new Zend_Filter_Compress('Gz');
$compressed = $filter->filter($xml->asXML());
$this->_response->setBody($compressed);

РЕДАКТИРОВАТЬ : Вы можете попробовать это, хотя я не проверял это:

$this->_response->setHeader("Accept-Encoding", "gzip, deflate");  
$this->_response->setHeader("X-Compression", "gzip");  
$this->_response->setHeader("Content-Encoding", "gzip");  
$this->_response->setHeader("Content-type", "text/xml");  
$this->_response->setHeader("Cache-Control", "must-revalidate");
$filter = new Zend_Filter_Compress('Gz');
$compressed = $filter->filter($xml->asXML());
$this->_response->setBody($compressed);
$this->_response->sendResponse();

РЕДАКТИРОВАТЬ : Или вы можете просто добавить эту строку в ваш файл .htaccess

AddOutputFilterByType DEFLATE text/xml

Надеюсь, это поможет

С уважением,

Гарри

0 голосов
/ 15 февраля 2014

Если вы используете nginx сервер, просто раскомментируйте следующее на вашем /etc/nginx/nginx.conf. Добавить текст / XML в нем! Это мой конфиг.

    gzip on;
    gzip_disable "msie6";

    # gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 9;
    gzip_buffers 16 8k;
    gzip_http_version 1.0;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;

Затем перезапустите его через sudo /etc/init.d/nginx restart.

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