Оптимизация сайта через htaccess

Dim565
На сайте с 19.08.2010
Offline
57
14627

Добрый день. Хочу оптимизировать свой форум phpbb (Apache 2.0, PHP 5.2.11)

Проверяю оптимизацию через http://pagespeed.googlelabs.com/

Пока что застрял на этих пунктах из рекомендаций гугла:

1) Используйте кэш браузера

2) Включите сжатие

На других сервисах (webpagetest, webo) такие же рекомендации.

Насчет 1 пункта: около 30 файлов (js, картинки, css) без тегов Expires и Cache-Control.

(смотрел через firebug).

2) Около 10 файлов идут без gzip сжатия (jquery_core_mini.js, highslide.js, editor.js, print.css и др). В настройках движка gzip включено.

Вопрос: что нужно прописать в htaccess, чтобы и заголовки нужные были, и gzip для файлов было включено?

Перепробовал множество вариантов кода из интернета - ни один не заработал, т.е оценка гугла не изменяется особо, заголовки Expires и Cache-Control не появляются.

Последние 2 варианта кода присылала техподдержка хостинга, после чего она сдалась и посоветовала поспрашивать в другом месте.

Вот некоторые варианты htaccess'a, что я пробовал:

FileETag MTime Size
<ifmodule mod_expires.c>
<filesmatch ".(jpg|jpeg|gif|png|ico|css|js)$">
ExpiresActive on
ExpiresDefault "access plus 1 month"
</filesmatch>
</ifmodule>

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/css
<IfModule mod_setenvif.c>
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
</IfModule>
</IfModule>

и так:

## Заголовок Cache-Control
<IfModule mod_headers.c>
Header append Cache-Control "public"
</IfModule>
## Заголовок Expires
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 hours"
ExpiresDefault "access plus 10 years"
</IfModule>
В целом директива выглядит следующим образом:
<FilesMatch .*\.js$>
ExpiresDefault "access plus 3 days"
</FilesMatch>

и так:

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/x-icon A604800
ExpiresByType image/gif A604800
ExpiresByType image/jpeg A604800
ExpiresByType image/png A604800
ExpiresByType text/css A604800
ExpiresByType text/javascript A604800
ExpiresByType application/x-javascript A604800
</IfModule>

<ifModule mod_headers.c>
<filesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|swf|bmp)$">
Header set Cache-Control "max-age=604800, public"
</filesMatch>
<filesMatch ".(css|js)$">
Header set Cache-Control "max-age=604800, public"
</filesMatch>
</ifModule>

<ifModule mod_headers.c>
<filesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header unset ETag
FileETag None
</filesMatch>
</ifModule>

<IfModule mod_deflate.c>
<FilesMatch ".(ico|css|js|x?html?|php|xml)$">
SetOutputFilter DEFLATE
</FilesMatch>
</IfModule>

<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(css|js|x?html?|php|xml)$
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>

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/css
<IfModule mod_setenvif.c>
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
</IfModule>
</IfModule>
LEOnidUKG
На сайте с 25.11.2006
Online
1723
#1

Поставьте лучше nginx и не нужно будет писать тонны никому не нужного кода.

Кэши и т.п. браузеры сами всё знают.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
Dim565
На сайте с 19.08.2010
Offline
57
#2

LEOnidUKG, nginx и так установлен на моем хостинге.

LEOnidUKG
На сайте с 25.11.2006
Online
1723
#3
Dim565:
LEOnidUKG, nginx и так установлен на моем хостинге.

Ну и тогда к чему эти пляски с бубком, когда все данные через nginx передаются и он уже отвечает за сжатие, кэши и т.п.? :)

Dim565
На сайте с 19.08.2010
Offline
57
#4

Ну просто хочу разобраться, почему не работает код как нужно. Также хочется видеть хорошую оценку гугла.

Форум phpbbguru имеет все эти заголовки, например вот заголовок ответа файла с моего сайта:

Server	nginx/0.8.53
Date Mon, 22 Aug 2011 17:04:07 GMT
Content-Type application/x-javascript
Content-Length 9904
Last-Modified Wed, 03 Aug 2011 03:54:00 GMT
Connection keep-alive
Accept-Ranges bytes

а вот заголовок ответа этого же файла с phpbbguru:

Server	nginx/0.6.32
Date Mon, 22 Aug 2011 17:04:07 GMT
Content-Type application/x-javascript; charset=utf-8
Last-Modified Thu, 11 Aug 2011 07:27:22 GMT
Transfer-Encoding chunked
Connection keep-alive
Expires Tue, 22 Nov 2011 17:04:07 GMT
Cache-Control max-age=7948800
Content-Encoding gzip

т.е даже GZIP не работает у меня. Неужели проблема нерешаема?

Dim565 добавил 23.08.2011 в 10:57

короче, вот, что вышло. Надеюсь, кому-то поможет.

В корневой htaccess вписал такое:

FileETag MTime Size

<ifmodule mod_expires.c>
<filesmatch ".(jpg|jpeg|gif|png|ico|css|js)$">
ExpiresActive on
ExpiresDefault "access plus 1 month"
</filesmatch>
</ifmodule>

<IfModule mod_deflate.c>
<FilesMatch "\.(js|css|php)$">
SetOutputFilter DEFLATE
</FilesMatch>
</IfModule>

Таким образом включился дополнительно gzip (на конференции он включен был) и кэширование, но не для всех файлов!

Графические файлы из папки /prosilver/theme/images, /prosilver/imageset - остались без заголовков Expires и Cache-Control. Пришлось в каждой папке, где этих заголовок не было, создавать htaccess с таким содержимым:

<FilesMatch .*\.gif$>

ExpiresDefault "access plus 90 days"
</FilesMatch>

Соответственно, где не было заголовков у css - надо менять на .css$

Не знаю, почему основной htaccess не подействовал на всю конференцию, но мой способ работает и для меня это главное.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий