X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

3 страниц V   1 2 3 >
Открыть тему
Тема закрыта
> Браузерное кеширование в Nginx. Как?
Sa[Y]moN
Sa[Y]moN
Topic Starter сообщение 23.5.2015, 23:33; Ответить: Sa[Y]moN
Сообщение #1


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

Есть различные клиентские сайты, все на разных CMS, и различных хостингах. Однако, везде этот Nginx. По рекомендациям Google Page Speed, необходимо браузерное кеширование. Но как его можно включить по другому?

Допустим, имеется сейчас сайт на WP, хостинг Reg.ru. В помощи сказано:
На серверах виртуального хостинга сжатие статических файлов включено по умолчанию. Статические файлы обрабатываются веб-сервером Nginx, доступа к настройке которого нет.

Настройка кэширования и/или сжатия статических файлов в файле .htaccess на виртуальном хостинге невозможна.

Вы можете настроить кэширование средствами CMS или плагинов.


Либо другой сайт, на 1C-Bitrix, тоже необходимо включить кеширование. Но я ума не приложу, как это сделать?

Поиску по Яндексу и Google не дают результатов.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
melrok
melrok
сообщение 24.5.2015, 0:40; Ответить: melrok
Сообщение #2


может тут что есть.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Sa[Y]moN
Sa[Y]moN
Topic Starter сообщение 24.5.2015, 1:02; Ответить: Sa[Y]moN
Сообщение #3


Pixsel, пробовал первый и второй из списка, однако от них толку ноль. Настраивай - не настраивай, все до фени. :angry:
Перечитал весь Хабр, и толку все-равно нет. Да даже если разберусь с WP, то еще нужны для Битрикса и Джумлы такие плагины.

Может коте что подскажет.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
k0ttee
k0ttee
сообщение 24.5.2015, 1:38; Ответить: k0ttee
Сообщение #4


может тут что есть

Это серверное кэширование, которое "чтобы брать не из базы данных а из готовых файлов".

везде этот Nginx

Он там чтобы Apache не наплодил процессов и не сожрал всю память.
Такое, что апача совсем нет и используется исключительно энжэникс - это у меня на VDS для самописного движка, когда о попсе типа вордпресса уже несколько лет как позабыл.
Все эти движки делались под апач, поэтому и комплектуются .htaccess
Если у вас нет Apache, то .htaccess не будет выполняться и движки не будут работать (mod_rewrite накроется и этого уже достаточно чтоб не работало).
Для запуска банального WP на одном Nginx придется весь .htaccess переписать в другой конфиг.
необходимо включить браузерное кеширование

А в заголовках разве приходит no-store или no-cache? :o Что-то не верится мне в выключенность кэширования на хостинге, ибо это по-конски увеличит трафик (отправлять каждый раз в браузер все данные).
как его можно включить по другому?

На уровне движка сделать в заголовке разрешение кэширования. В помощи это и сказано: средствами CMS.
Где можете (до отправки документа) слать заголовок с разрешением кэширования.
Где не можете (когда сервер просто отдает картинку) тут вам заголовок контролировать наверное не удастся без велосипедов.

Давайте смотреть заголовки (http headers) и читать что в них браузеру приходит.
Прикрепленное изображение


Вообще я этим себе голову не забивал раньше, но раз есть повод - могу поучаствовать. :laugh:

Добавлено спустя 13 минут 9 секунд:
И таки да, не дает он кэшировать по-умолчанию. У меня пишет как раз таки no-store и no-cache.
Прикрепленное изображение


--------------------
Задонь кибер-коту на крипто-вискас
btc: 3Hq7X9CosVftRFPqWis1Dkk5MdtM1u6jj9
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Sa[Y]moN
Sa[Y]moN
Topic Starter сообщение 24.5.2015, 2:12; Ответить: Sa[Y]moN
Сообщение #5


(k0ttee)
А в заголовках разве приходит no-store или no-cache?


Cache-Control: no-cache, must-revalidate

Вообще HTTP заголовки имеют следующий вид:
HTTP/1.1 200 OK
Server: nginx
Date: Sat, 23 May 2015 21:56:16 GMT
Content-Type: text/html
Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: PHP/5.3.28
Expires: Sat, 23 May 2015 23:56:16 GMT
Cache-Control: no-cache, must-revalidate
Vary: Accept-Encoding
Accept-Encoding: gzip,deflate,sdch
Last-Modified: Sat, 23 May 2015 21:56:16 GMT
Set-Cookie: uid_zxcv=1f1fc41f5560f780340669d6031ea802; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/


.htaccess само собой отсутствует. Точней он есть, но пустой, так как Nginx его не видит. Я тоже думал что в связке с Apache, однако любой IfModule, хоть mod_expires, хоть mod_headers, и mod_rewrite просто игнорируются.
Редиректы для исключения дублей настроены на серверном уровне.

Впихнуть заголовок я могу, только какое содержимое необходимо? Я в настройках сервера дилетант.

(k0ttee)
Если у вас нет Apache, то .htaccess не будет выполняться и движки не будут работать (mod_rewrite накроется и этого уже достаточно чтоб не работало).
Для запуска банального WP на одном Nginx придется весь .htaccess переписать в другой конфиг.


Содержимое .htaccess сайта на WP:

# BEGIN WordPress

# END WordPress

# by reg.ru support team
<Files wp-login.php>
AuthType Basic
AuthName "please use your ISPmanager login and password"
AuthUserFile "/var/www/u3737493/data/etc/users"
Require valid-user
</Files>


По сути, только защита от несанкционированного доступа к админке.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
k0ttee
k0ttee
сообщение 24.5.2015, 2:13; Ответить: k0ttee
Сообщение #6


Очевидно, что разрешить кэшировать изменив строку.
Cache-Control: no-cache, must-revalidate

Вот таблица аргументов
Прикрепленное изображение

Есть статья, в которой все описано (из нее утащил таблицу) http://www.exlab.net/dev/http-caching.html
Желаю валидных велосипедов! ;)


--------------------
Задонь кибер-коту на крипто-вискас
btc: 3Hq7X9CosVftRFPqWis1Dkk5MdtM1u6jj9
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Sa[Y]moN
Sa[Y]moN
Topic Starter сообщение 24.5.2015, 2:18; Ответить: Sa[Y]moN
Сообщение #7


k0ttee, дело в том, что сам заголовок я изменить не могу. Такие заголовки как Server, Cache-Control, X-Powered-By и др. отдаются сервером. Я могу только добавить.

Например, заголовки Accept-Encoding, Last-Modified - это уже моя работа. Некоторые так-же отдаются CMS, но не все.

Я вот уже думаю, а надо ли оно мне вообще? Мороки столько, хоть вешайся.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Aman_sf
Aman_sf
сообщение 24.5.2015, 17:48; Ответить: Aman_sf
Сообщение #8


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

Я бы тупо забил на эту хотелку от гугла.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Sa[Y]moN
Sa[Y]moN
Topic Starter сообщение 24.5.2015, 20:31; Ответить: Sa[Y]moN
Сообщение #9


(Aman)
Nginx сейчас самый крутой вебсервер, у меня правда он обычно стоит вторым вместе с апачем, в таком случае в зависимости от панели можно указывать какой тип сервера использовать. Но все таки Nginx намного быстрее и без кеширования. Уже и америкосы его используют,а некоторые американские хостинги создали якобы свои аналоги, назвав их по своему.

Я бы тупо забил на эту хотелку от гугла.


Видимо так и есть. Уже у самого отпало желание что-то делать.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
k0ttee
k0ttee
сообщение 25.5.2015, 17:05; Ответить: k0ttee
Сообщение #10


отпало желание что-то делать

Ваш пессимизм меня премии лишит! :blush: Придется сделать.

Нагуглил такой примерчик
<?php
/**
* Шлет в заголовках Expires HTTP 1.0.
* @param int количество секунд до времени истечения срока жизни
*/
function setExpires($expires){
  header('Expires: ' . gmdate('D, d M Y H:i:s', time() + $expires) . 'GMT');
}

// Назначаем срок жизни Expires (в секундах)
setExpires(60);

// Тестовый выхлоп
echo 'Самоуничтожение через 60 секунд<br />';
echo 'Сейчас ' . gmdate('H:i:s') . ' GMT<br />';
echo '<a href="' . $_SERVER['PHP_SELF'] . '">Посмотреть вновь </a><br />';
?>


На любом сервере должно работать, не притрагиваясь к конфигам (средствами пхп).
Во, я тестил, на локалке ведет себя правильно.
[video]http://www.youtube.com/watch?v=wX8W44Hy6CQ&vq=hd1080[/video]

Собственно, одной строкой можно отдавать правильную инструкцию. Но это только для веб-документов. Картинки и прочие файлы останутся на совести Nginx... Хотя и с ними велосипед возможен :s009:


--------------------
Задонь кибер-коту на крипто-вискас
btc: 3Hq7X9CosVftRFPqWis1Dkk5MdtM1u6jj9
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
3 страниц V   1 2 3 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Большие ставки для кликов в Я.Директ. Как удешевить?
2 rownong27 1116 26.3.2024, 14:13
автор: knezevolk
Открытая тема (нет новых ответов) Как вы бросили работу и перешли на заработок с сайтов?
12 uahomka 2279 25.3.2024, 6:52
автор: Skyworker
Открытая тема (нет новых ответов) Как отозвать банковский платеж фрилансеру?
28 metvekot 3910 25.3.2024, 6:34
автор: Skyworker
Открытая тема (нет новых ответов) Как вывести деньги в Украине с заблокированного Юмани ?
23 freeax 3635 24.3.2024, 20:55
автор: Liudmila
Открытая тема (нет новых ответов) Через какой браузер и как можно найти в кэшэ браузера видео
10 Room 1925 23.3.2024, 7:41
автор: Room


 



RSS Текстовая версия Сейчас: 28.3.2024, 14:04
Дизайн