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

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

Добрый день, есть какая нибудь команда для этой функции, пошарился по интернету, перепробовал кучу вариантов, ничего не работает, гугл ругается всеравно....

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


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

в .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>
# Cache-Control
<ifModule mod_headers.c>
# 30 дней
<filesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|swf)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>


# 30 дней
<filesMatch "\.(css|js)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>


# 2 дня
<filesMatch "\.(xml|txt)$">
Header set Cache-Control "max-age=172800, public, must-revalidate"
</filesMatch>


# 1 день
<filesMatch "\.(html|htm|php)$">
Header set Cache-Control "max-age=172800, private, must-revalidate"
</filesMatch>
</ifModule>
  • +1 1

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


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

Спасибо большое! но при установке PageSpeed Insights все равно пишет включите кэш браузера

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


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

Спасибо большое! но при установке PageSpeed Insights все равно пишет включите кэш браузера

 

для каких файлов? скорее всего это для сторонних файлов. вы приятно удивитесь - но это касается и файлов самого гугля))

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


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

 

в .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>
# Cache-Control
<ifModule mod_headers.c>
# 30 дней
<filesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|swf)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>


# 30 дней
<filesMatch "\.(css|js)$">
Header set Cache-Control "max-age=2592000, public"
</filesMatch>


# 2 дня
<filesMatch "\.(xml|txt)$">
Header set Cache-Control "max-age=172800, public, must-revalidate"
</filesMatch>


# 1 день
<filesMatch "\.(html|htm|php)$">
Header set Cache-Control "max-age=172800, private, must-revalidate"
</filesMatch>
</ifModule>

Спасибо помогло

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


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

Не хочу показаться некропостером, но имею аналогичную проблему, связка apache+nginx. Гугловый page speed говорит, что кэша нет. Использую такие настрйоки NGINX (как я понимаю, чтоб кэшировать статику - нужно настраивать именно его, а не апач) - эффекта ноль
 

Цитата

    server {
        server_name localhost;
        disable_symlinks if_not_owner;
        listen 80;
        include /etc/nginx/vhosts-includes/*.conf;
        #KAM
        #error_page 502  /index.php;
        #KAM
        location @fallback {
            #error_log /dev/null crit;
            error_log /var/log/nginx/error.log info;
            proxy_pass http://127.0.0.1:8080;
            proxy_redirect http://127.0.0.1:8080 /;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            access_log off ;
        }
        add_header Cache-Control public;
#######################
        #кэширование
#        proxy_cache one;
        location ~* \.(jpg|jpeg|gif|png|ico|css|pdf|ppt|txt|bmp|rtf|js|min)    {  
            expires 1m;    
                #Кешируем везде (и на прокси и на клиентах)
                add_header Cache-Control public;
#            root /var/www/andrzej/data/www/nicoa.ru/;
            root /var/www/andrzej/;
        }
        # Кешировать указанные коды ответов 5 минут
        proxy_cache_valid 200 301 302 304 5m;
            # Ключ по которому сохраняются и берутся данные из кеша
        proxy_cache_key "$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri";
            # Защита от раздачи одинаковой куки в кешированном ответе
        proxy_hide_header "Set-Cookie";
            # Игнорировать параметры кеша заданные бекэндом
        #proxy_ignore_headers "Cache-Control" "Expires";
            # Указывает в каких случаях клиенту можно отдать несвежий ответ из кеша
        proxy_cache_use_stale error timeout invalid_header http_500 http_502 http_503 http_504;
        #пути для кэширования
        #proxy_cache_path /var/cache/nginx/ levels=2:2 keys_zone=default:100m;
            # активировать зону кеширования pagecache
        #proxy_cache    pagecache;
        #location ~* \.(jpg|png|gif|jpeg|css|js)$ 

    }

 

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


Ссылка на сообщение
Поделиться на другие сайты
8 минут назад, kamakama сказал:

server_name localhost;

Не ноль, а прекрасный эффект... на локалхосте :-D

 

Это нужно писать не в какой попало конфиг, а в конфиг конкретно вашего сайта - это первое. А второе: proxy_cache и все директивы с этого начинающиеся не имеют отношения к кешированию статики в браузере - это кеш для бекенда, то есть, чтоб nginx  получив от бекенда (ОК через Апач в вашем случае) ответ, сохранил его в файл и при следующем таком же запросе уже не обращался к бекенду, а выдернул ответ из кеша.

 

Для кеширования статики достаточно этого блока:

location ~* \.(?:jpg|jpeg|gif|png|ico|css|pdf|ppt|txt|bmp|rtf|js|min) {
	expires 1M;
	add_header Cache-Control public;
	root /var/www/andrzej/;
}

 

И очень внимательно посмотрите на букву м! Потому что 1m - это 1 минута, а не 1 месяц.

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


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

Конфиг общий для всего NGINX - nginx.conf
Спасибо, не заметил:) Но не помогло - теперь вот так

server {
        server_name www.nicoa.ru nicoa.ru;
        disable_symlinks if_not_owner;
        listen 80;

...
        location ~* \.(jpg|jpeg|gif|png|ico|css|pdf|ppt|txt|bmp|rtf|js|min|html|htm)$    {  
            expires 2w;    
                #Кешируем везде (и на прокси и на клиентах)
                add_header Cache-Control public;
            root /var/www/andrzej/data/www/nicoa.ru/;
        }

}

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

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


Ссылка на сообщение
Поделиться на другие сайты
21 минуту назад, kamakama сказал:

Конфиг общий для всего NGINX - nginx.conf

Чтоб применить изменения из этого конфига, надо делать рестарт nginx, релоад работает только для конфигов, которые он инклюдит.

Только перед рестартом сделайте

nginx -t

чтоб убедиться, что нигде нет ошибок.

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


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

/etc/init.d/nginx restart конечно же, чтоб не гадать, что перезагрузилось
Все равно не видит

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

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


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

Ну, я могу предположить только два варианта: либо есть ещё один блок location для статики и там кеширования нет, либо вообще весь этот server блок не работает.

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


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

        location @fallback {
            #error_log /dev/null crit;
            error_log /var/log/nginx/error.log info;
            proxy_pass http://127.0.0.1:8080;
            proxy_redirect http://127.0.0.1:8080 /;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            access_log off ;
        }

Есть только такой блок. А каким образом проверить видимость блока server? Подойдет поменять порт listen и попробовать обратиться к серверу?

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


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

Нашел, все верно - в инклудах был еще один location... Спасибо!

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


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

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

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

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

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

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

Войти

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

Войти

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

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

×

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

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