Я только что переместил умеренно загруженный сайт wordpress с общего хостинга на VPS-сервер с оперативной памятью 512 МБ и попытался настроить производительность, прежде чем сломаюсь и куплю еще один VPS, чтобы облегчить нагрузку. Поэтому я рыщу в сети в поисках советов по производительности для nginx и наткнулся на «gzip» и «expires max». Из некоторых примеров, которые я видел и возился, я внес следующие изменения, и они, похоже, работают правильно, но YSlow утверждает иначе.
# Entry in nginx vhost.conf
location /wp-content {
alias /home/src/web/app/melikedev/current/code/web/wp-content/;
expires max;
add_header Pragma public;
add_header Cache-Control "public";
}
И тесты с другого сервера через curl:
mpurcell@service1 ~ $ -> curl -I -H "Accept-Encoding: gzip, deflate" -L http://melikedev.com/wp-content/plugins/sociable/css/sociable.css?ver=3.4.2
HTTP/1.1 200 OK
Server: nginx/1.0.15
Date: Fri, 18 Jan 2013 04:58:34 GMT
Content-Type: text/css
Last-Modified: Sat, 29 Dec 2012 08:50:41 GMT
Connection: keep-alive
Expires: Thu, 31 Dec 2037 23:55:55 GMT
Cache-Control: max-age=315360000
Pragma: public
Cache-Control: public
Content-Encoding: gzip
Согласно заголовкам ответа, заголовок expires присутствует, и контент был заархивирован, но YSlow все равно дал F для обоих. Я что-то пропустил? Или YSlow ошибается?
-- Обновить --
Yslow сообщает (без истечения срока действия) для 28 статических компонентов, некоторые из которых являются активами Google AdSense, над которыми я не контролирую, но для тех, которые я контролирую, я ожидаю, что они будут работать в соответствии с директивой в файле vhost.conf. Я перечислил один из компонентов, на который Yslow все еще жалуется, вместе с заголовками ответов.
There are 28 static components without a far-future expiration date.
(no expires) http://melikedev.com/wp-content/plugins/sociable/js/sociable.js?ver=3.4.2
....
Заголовки ответа:
mpurcell@service1 ~ $ -> curl -I -H "Accept-Encoding: gzip, deflate" http://melikedev.com/wp-content/plugins/sociable/js/sociable.js?ver=3.4.2
HTTP/1.1 200 OK
Server: nginx/1.0.15
Date: Sat, 19 Jan 2013 00:28:24 GMT
Content-Type: application/x-javascript; charset=utf-8
Last-Modified: Sat, 29 Dec 2012 08:50:42 GMT
Connection: keep-alive
Expires: Thu, 31 Dec 2037 23:55:55 GMT
Cache-Control: max-age=315360000
Pragma: public
Cache-Control: public
Content-Encoding: gzip
Забавно то, что заголовки ответов на файл CSS, который я опубликовал в первый раз, не отображаются в отчете Yslow, возможно, Yslow не любит управление версиями файлов js?