Jump to content
Popov

Включит кэш браузера посетителя

Recommended Posts

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

Share this post


Link to post
Share on other sites

в .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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

 

в .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>

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

Share this post


Link to post
Share on other sites

Не хочу показаться некропостером, но имею аналогичную проблему, связка 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)$ 

    }

 

Share this post


Link to post
Share on other sites
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 месяц.

Share this post


Link to post
Share on other sites

Конфиг общий для всего 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/;
        }

}

Edited by kamakama

Share this post


Link to post
Share on other sites
21 минуту назад, kamakama сказал:

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

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

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

nginx -t

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

Share this post


Link to post
Share on other sites

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

Edited by kamakama

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

        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 и попробовать обратиться к серверу?

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.