Перейти к содержанию

Рекомендуемые сообщения

Собсно уже дня 3 мозг себе ломаю и никак не пойму в чем дело. Может кто-нить что-то посоветует

 

По рекомендации Google Page Speed - пытаюсь подключить в .htaccess мод expires (тех поддержка утверждает что мод к php подключен, проверил - таки да) 

 

В общем пробовал самые разные варианты (безрезультатно), остановился на стандартном:

<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access 7 days"
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType text/javascript "access plus 1 year"
ExpiresByType text/css "access plus 1 year"
ExpiresByType text/html "access plus 7 day"
ExpiresByType text/x-javascript "access 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/x-icon "access 1 year"
ExpiresByType application/x-shockwave-flash "access 1 year"
</IfModule>

и все равно не пашет, гугл пейдж спид все равно продолжает утверждать что нифига не пашет. Думал баг валидатора - проверил на других сервисах, все утверждают что кэш браузера не подключен.

Может я что-то упускаю?

 

PS сервер работает на апаче

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Весь сервер на апаче?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

но это ведь не включение кеша...

 

<ifModule mod_headers.c>
<filesMatch "\.(css|js)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А это что?
 
Servernginx/0.7.67

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access 2 days"
ExpiresByType image/jpg "access 1 week"
ExpiresByType image/jpeg "access 1 week"
ExpiresByType image/gif "access 1 week"
ExpiresByType image/png "access 1 week"
ExpiresByType text/css "access 1 week"
ExpiresByType application/pdf "access 1 week"
ExpiresByType text/x-javascript "access 1 week"
ExpiresByType application/x-shockwave-flash "access 1 week"
ExpiresByType image/x-icon "access 1 week"
ExpiresByType application/javascript "access 1 week"
ExpiresByType text/javascript "access 1 week"
</IfModule>

у меня работает

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А это что?

 

Servernginx/0.7.67

эмм, мне сказали, а я и не перепроверил...

Ок, но в таком случае тут симбиоз nginx + апачь так как правила htaccess в большинстве своем работаю, например на редиректы

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, конечно

 

и видимо ngnix настроен на статику...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ок, я с nginx на "ВЫ" - какие правила необходимо прописать в конфигах?

 

а хотя стоп, гугл же есть :D

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Во многих случаях nginx полностью подхватывает заголовки апача.

mod_expire - это правда мод апача, а не пхп.

Когда включаешь его, гугл не всегда сразу отдупляет - смотри в браузере, откуда грузятся картинки, из кеша, или с сервера.

Проверь заголовки изображений черех вот это. Если кеширование есть значит включилось

Если ничего не помогло - настраивай nginx.

Если хостинг ukraine.com.ua  - там все настраивается в админке хостинга.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Во многих случаях nginx полностью подхватывает заголовки апача.

mod_expire - это правда мод апача, а не пхп.

Когда включаешь его, гугл не всегда сразу отдупляет - смотри в браузере, откуда грузятся картинки, из кеша, или с сервера.

Проверь заголовки изображений черех вот это. Если кеширование есть значит включилось

Если ничего не помогло - настраивай nginx.

Если хостинг ukraine.com.ua  - там все настраивается в админке хостинга.

ну на локалке он работает после перезагрузки сервера, я просил хостера ребутнуть сервак - один фиг...

теперь буду требовать доступ к панеле управления и играться с конфигом nginx

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

htaccess он на то и htaccess, чтобы директивы, указанные в нем, выполнялись без перезагрузки сервера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access 7 days"
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType text/javascript "access plus 1 year"
ExpiresByType text/css "access plus 1 year"
ExpiresByType text/html "access plus 7 day"
ExpiresByType text/x-javascript "access 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/x-icon "access 1 year"
ExpiresByType application/x-shockwave-flash "access 1 year"
</IfModule>

Этот код подойдет для всех или индивидуально у каждого?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для всех индивидуально ( здесь указаны "сроки хранения")

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для всех индивидуально ( здесь указаны "сроки хранения")

да, про сроки я знаю....  у меня тоже Page Speed ругается на кеш браузера.... а как такое составить для себя? че то гугл внятного ответа не дает или я просто не догоняю...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в общем доступы к конфигам мне не дают, а экспериментировать удаленно - это бред.

Попросил прописать правило конфига nginx, которое удалось найти в гугле

 

#!Статический контент!
location ~* \.(jpg|jpeg|gif|png|swf|tiff|swf|flv)$ {
root $webroot;
#Кеширум картинки месяца на 4
expires 4M;
#Кешируем везде (и на прокси и на клиентах)
add_header Cache-Control public;
}
location ~* \.(css|js|ico) {
# разрешаем отдавать вместо несжатого файла предварительно
# сжатый с постфиксом ".gz", если такой есть
gzip_static on;
#запрещаем сжатие файлов CSS и JS для проблемных браузеров
gzip_disable Firefox/([0-2]\.|3\.0);
gzip_disable Chrome/2;
gzip_disable Safari;
#Кешируем месяца на 2
expires 2M;
#Кешируем только на клиентах (ибо сжатое)
add_header Cache-Control private;
}

один фиг - page speed утверждает что кэш не включен. Отложил пока эту хрень в далекий ящик, нужно углублять знания в администрировании серверов. 

 

Пока обоходимся кэшированием на стороне сервера, сайт летает как угорелый, жаль что гуглу на это плевать :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я в данный момент озабочен решением аналогичной задачи и тоже никак не мог понять, почему не удается включить кэш на стороне клиента, гугл все равно говорит, что ничего не работает. Попробовал проделать такой же метод для сайта на другом хостинге (godaddy) и все заработало.

 

В общем у своего хостера (reg) нашел в поддержке ответ на свой вопрос: "Настройка кэширования и/или сжатия статических файлов в файле .htaccess на виртуальном хостинге невозможна. Если вам критична настройка gzip и expires, рекомендуем приобрести VPS сервер."

 

Быть может это наблюдение поможет некоторым, так что если этот метод не работает, проблема легко может крыться в хостере, поэтому первым делом стоит проверить - нет ли необходимости переехать к другому :)

Изменено пользователем Vyatcheslav

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

года четыре назад столкнулся с подобной проблемой, от хостера получил ответ:

..Мы не используем mod_deflate на наших серверах и не планируем его использовать. Вместо этого мы рекомендуем складывать на диск заранее сжатые файлы и отдавать их в случае, если клиентский браузер поддерживает сжатие...

 

в процессе поиска решения так же столкнулся с проблемами сжатых файлов в Chrome и Safari

в итоге решилось таким путем:

 

1. файлы js и css сжимаем в gzip (например через 7zip), потом их расширение переименовываем с .gz на.jgz

2. складываем переименованные сжатые файлы рядом с оригинальными несжатыми, т.е. был у вас в папке файл style.css, теперь их будет два - style.css и style.css.jgz

3. в .htaccess до строки RewriteEngine On вставляем

# Кеширование картинок, js и css
FileETag MTime Size
<ifmodule mod_expires.c>
 <filesmatch ".(jpg|gif|png|js|css|gz)$">
 ExpiresActive on
 ExpiresDefault "access plus 1 month"
 </filesmatch>
</ifmodule>

<IfModule mod_headers.c>
  <FilesMatch "\.(jpg|gif|png)$">
    Header append Cache-Control "public"  
  </FilesMatch>
</IfModule>

<IfModule mod_headers.c>
  <FilesMatch "\.(js|css|gz|jgz)$">
    Header append Vary Accept-Encoding
    Header append Cache-Control "private"  
  </FilesMatch>
</IfModule>

# использование сжатых файлов
AddEncoding gzip .jgz
RewriteCond %{HTTP:Accept-encoding} gzip
# RewriteCond %{HTTP_USER_AGENT} !Safari
RewriteCond %{HTTP_USER_AGENT} !Konqueror
RewriteCond %{REQUEST_FILENAME}.jgz -f
RewriteRule ^(.*)$ $1.jgz [QSA,L]

<IfModule mod_headers.c>
    Header append Vary User-Agent
    <FilesMatch .*\.js.jgz$>
    ForceType text/javascript
    Header append Vary Accept-Encoding
    Header set Content-Encoding: gzip
    Header set Cache-control: private
    </FilesMatch>
    <FilesMatch .*\.css.jgz$>
    ForceType text/css
    Header append Vary Accept-Encoding    
    Header set Content-Encoding: gzip
    Header set Cache-control: private
    </FilesMatch>
</IfModule>

 

и проверяем на работоспособность

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если css и js проходят через апач, то сжимать можно средствами php скрипта и самостоятельно отдавать нужные заголовки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если css и js проходят через апач, то сжимать можно средствами php скрипта и самостоятельно отдавать нужные заголовки.

 

Ога - если на выходе прокладкой стоит Nginx, он их все почикает и глахом не моргнет!

Настраивать надо конфиг Nginx

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Во многих случаях nginx полностью подхватывает заголовки апача.

mod_expire - это правда мод апача, а не пхп.

Когда включаешь его, гугл не всегда сразу отдупляет - смотри в браузере, откуда грузятся картинки, из кеша, или с сервера.

Проверь заголовки изображений черех вот это. Если кеширование есть значит включилось

Если ничего не помогло - настраивай nginx.

Если хостинг ukraine.com.ua  - там все настраивается в админке хостинга.

Спасибо, помогло:) На ukraine.com.ua всё действительно настраивается в админке.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я в данный момент озабочен решением аналогичной задачи и тоже никак не мог понять, почему не удается включить кэш на стороне клиента, гугл все равно говорит, что ничего не работает. Попробовал проделать такой же метод для сайта на другом хостинге (godaddy) и все заработало.

 

В общем у своего хостера (reg) нашел в поддержке ответ на свой вопрос: "Настройка кэширования и/или сжатия статических файлов в файле .htaccess на виртуальном хостинге невозможна. Если вам критична настройка gzip и expires, рекомендуем приобрести VPS сервер."

 

Быть может это наблюдение поможет некоторым, так что если этот метод не работает, проблема легко может крыться в хостере, поэтому первым делом стоит проверить - нет ли необходимости переехать к другому :)

 

Так же пользуюсь хостингом reg.ru (тариф Host-2)

Есть ocStore 2.1.0.2.1 с шаблоном coloring - в этой связке Google PageSpeed, что правило "Используйте кеш браузера" не выполнено.

Сейчас попробовал ocStore 2.3.0.2 так же с шаблоном coloring (другой версии) - в этой связке Google PageSpeed пишет наоборот, что правило "Используйте кеш браузера" выполнено. :-)

Изменено пользователем System256

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

кеширование статики в браузере вряд ли зависит от шаблона

скорее, от настроек сервера/конфигов

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 12.07.2014 в 18:12, Einshtein сказал:

Собсно уже дня 3 мозг себе ломаю и никак не пойму в чем дело. Может кто-нить что-то посоветует

 

По рекомендации Google Page Speed - пытаюсь подключить в .htaccess мод expires (тех поддержка утверждает что мод к php подключен, проверил - таки да) 

 

В общем пробовал самые разные варианты (безрезультатно), остановился на стандартном:


<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access 7 days"
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType text/javascript "access plus 1 year"
ExpiresByType text/css "access plus 1 year"
ExpiresByType text/html "access plus 7 day"
ExpiresByType text/x-javascript "access 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/x-icon "access 1 year"
ExpiresByType application/x-shockwave-flash "access 1 year"
</IfModule>

и все равно не пашет, гугл пейдж спид все равно продолжает утверждать что нифига не пашет. Думал баг валидатора - проверил на других сервисах, все утверждают что кэш браузера не подключен.

Может я что-то упускаю?

 

PS сервер работает на апаче

Мне помоголо спасибо!!! + включить gzip  этом же файле

вот так

# Включение gzip сжатия русским трактористом text, html, javascript, css, xml:

AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
SetOutputFilter DEFLATE

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите. Как настроить кэширование на стороне браузера в  .htaccess? 

 

Вот мой файл

 

# 2. In your opencart directory rename htaccess.txt to .htaccess.

# For any support issues please visit: http://www.opencart.com

Options +SymLinksIfOwnerMatch

# Prevent Directoy listing 
Options -Indexes

# Prevent Direct Access to files
<FilesMatch "(?i)((\.tpl|\.ini|\.log|(?<!robots)\.txt))">
 Order deny,allow
 Deny from all
</FilesMatch>

# SEO URL Settings
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.teploarsenal\.com\.ua$ [NC]
RewriteRule ^(.*)$ http://teploarsenal.com.ua/$1 [R=301,L]
# If your opencart installation does not run on the main web folder make sure you folder it does run in ie. / becomes /shop/ 

RewriteBase /
RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L]
RewriteRule ^system/download/(.*) /index.php?route=error/not_found [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

### Additional Settings that may need to be enabled for some servers 
### Uncomment the commands by removing the # sign in front of it.
### If you get an "Internal Server Error 500" after enabling any of the following settings, restore the # as this means your host doesn't allow that.

# 1. If your cart only allows you to add one item at a time, it is possible register_globals is on. This may work to disable it:
# php_flag register_globals off

# 2. If your cart has magic quotes enabled, This may work to disable it:
 php_flag magic_quotes_gpc Off

# 3. Set max upload file size. Most hosts will limit this and not allow it to be overridden but you can try
# php_value upload_max_filesize 999M

# 4. set max post size. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value post_max_size 999M

# 5. set max time script can take. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value max_execution_time 200

# 6. set max time for input to be recieved. Uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value max_input_time 200

# 7. disable open_basedir limitations
# php_admin_value open_basedir none
AddDefaultCharset utf-8

 

Может подскажите, что ещё в нём не хватает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.