[Ответить в тред] Ответить в тред

02/12/16 - Конкурс визуальных новелл доски /ruvn/
15/11/16 - **НОВЫЙ ФУНКЦИОНАЛ** - Стикеры
09/10/16 - Открыта доска /int/ - International, давайте расскажем о ней!

Check this out!

Новые доски: /2d/ - Аниме/Беседка • /wwe/ - WorldWide Wrestling Universe • /ch/ - Чатики и конфочки • /int/ - International • /ruvn/ - Российские визуальные новеллы • /math/ - Математика • Создай свою

[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 47 | 5 | 6
Назад Вниз Каталог Обновить

Аноним 27/03/17 Пнд 11:15:24  149725816  
apache-worker-a[...].jpg (60Кб, 379x330)
Я плохо в этом секу, помоги анон. Хочу сделать кэширование сайта, дабы страницы отдавали 304 если никаких изменений с момента последнего посещения не произошло. Поскольку я секу в этом хуйово, то гуглю и составляю код по кускам. Проблема в том, что $_SERVER['HTTP_IF_MODIFIED_SINCE'] отсутствует, нагуглил, что необходимо в .hteccess допилить:
RewriteRule . - [E=HTTP_IF_MODIFIED_SINCE:%{HTTP:If-Modified-Since}]
RewriteRule .
- [E=HTTP_IF_NONE_MATCH:%{HTTP:If-None-Match}]
Не помогло.

Может проблема в том что я проделываю все это на локалке (open server)?

В настройках опен сервера стоят Apache-7 + Nginx-1.10 и PHP 7.1. Пробовал разные версии - нихуя. ЧЯДНТ?
не обсыкайте сильно, я секу в этом всем очень поверхностно
Аноним 27/03/17 Пнд 11:24:34  149726308
бамп
Аноним 27/03/17 Пнд 11:25:06  149726339
>>149725816 (OP)
в /pr ублюдок слепой.
Сажи
Аноним 27/03/17 Пнд 11:26:16  149726397
>>149726339
там нет никого, иди нахуй
Аноним 27/03/17 Пнд 11:26:48  149726430
ok
Аноним 27/03/17 Пнд 11:28:16  149726493
Заебали тут уже срать
Аноним 27/03/17 Пнд 11:28:22  149726501
>>149725816 (OP)
На каком freamvork'e или прости Господи CMS?
Аноним 27/03/17 Пнд 11:33:35  149726777
бамп
Аноним 27/03/17 Пнд 11:34:06  149726817
>>149726501
wordpressмне норм
Аноним 27/03/17 Пнд 11:35:30  149726876
>>149725816 (OP)

а в твоем гет запросе к серверу есть заголовок If-Modified-Since или If-None-Match?

если нет, то схуяли серверу возвращать 304
Аноним 27/03/17 Пнд 11:39:15  149727053
>>149725816 (OP)
Мой совет, если ты не работал с кешированием, то не делай тем более если ты вкурил туториалы наговнишь. Сделай так, если контент статичен, что ты решил его кешировать, то лучше вгони его в сессию и тяни оттуда и обновляй данные в сессии примерно раз в час и будет тебе счастье
Аноним 27/03/17 Пнд 11:40:08  149727089
>>149727053
Т.е, не вкурил*
Аноним 27/03/17 Пнд 11:41:53  149727187
И вообще с чего ты взял что нужно именно эти данные кэшировать?
Аноним 27/03/17 Пнд 11:43:25  149727273
>>149726876
он итак возвращает 304. Другое дело, что он не обновляет страницу если изменения произошли.
Аноним 27/03/17 Пнд 11:44:58  149727369
>>149727053
мне нужно, чтобы поисковики не сканили страницу лишний раз
Аноним 27/03/17 Пнд 11:46:19  149727448
>>149727273

покажи реквест-респонс запросы
Аноним 27/03/17 Пнд 11:47:34  149727512
>>149727369
Улыбныло)) Сделай как я сказал ранее с сессией
Аноним 27/03/17 Пнд 11:49:13  149727597
>>149727512

оп дохуя сео оптимизатор и прочитал что так лучше
не мешай
Аноним 27/03/17 Пнд 11:49:38  149727625
Безымянный.png (20Кб, 663x346)
Так выглядит код, который нагуглил
Аноним 27/03/17 Пнд 11:50:19  149727665
>>149727597
не, не оптимизитор, но прочитал, что так лучше и хочу так сделать, да
Аноним 27/03/17 Пнд 11:51:36  149727740
оп хуй
Аноним 27/03/17 Пнд 11:53:14  149727828
>>149727665
ОП, не еби мозги дядькам послушай совет и сделай как посоветовали. Лучше блять для высоконагруженных систем, а не для твоего говно приложения с посещаемостью 300 юзверей в год
Аноним 27/03/17 Пнд 11:53:30  149727840
2.png (59Кб, 475x553)
>>149727448
если это оно
Аноним 27/03/17 Пнд 11:56:49  149728025
бамп
Аноним 27/03/17 Пнд 11:57:33  149728065
>>149727840
- сервачок, ты изменился с 20:42?
- нет, иди нахуй.

чтож, отлично
а изменения были?
Аноним 27/03/17 Пнд 12:00:00  149728209
>>149727625

$LastModified_unix

если изменения были, то в этой переменной у тебя левая хуета, а не время изменений
Аноним 27/03/17 Пнд 12:02:28  149728352
>>149728209
>>149728065

че? бля не понял
Аноним 27/03/17 Пнд 12:02:29  149728355
blob (452Кб, 1366x768)
blob (178Кб, 982x330)
вообще посмотри что в переменных которые ты сравниваешь

Аноним 27/03/17 Пнд 12:07:34  149728626
так, я кажется тупой. в HTTP_IF_MODIFIED_SINCE действительно записывается время, если я публику новую запись и страница действительно обновляется, а не тянется из кэша. Однако если запись удаляю, то после обновления страницы эта запись продолжает отображаться
Аноним 27/03/17 Пнд 12:08:14  149728671
>>149728355 -> >>149728626
Аноним 27/03/17 Пнд 12:13:02  149728929
Короче, я так понял код устроен так, что сравнивает сохраненное время последнего изменения и время последней публикации и если время публикации больше, чем сохраненное время, тогда обновляет страницу?
Аноним 27/03/17 Пнд 12:19:07  149729288
>>149728929

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

при последующих запросах от этого же клиента, время из Last-Modified будет возвращаться на сервер в параметре IfModifiedSince.

и соответственно если страница изменилась позже IfModifiedSince, будет обновление.

косяк в хуй знает откуда берущемся времени LastModified, которое видимо обновляется не при всех операциях
Аноним 27/03/17 Пнд 12:22:01  149729473
>>149729288
>косяк в хуй знает откуда берущемся времени LastModified

>>149727625
Разве вот это не оно?
>header('Last-Modified: '. $LastModified);

Т.е. оно устанавливается после:
>header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');
>exit;

>exit;

Может нужно как-то его устанавливать то этого?
Аноним 27/03/17 Пнд 12:24:29  149729631
blob (62Кб, 1077x160)
>>149729473

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

а вот тут оно берется хуй знает откуда
Аноним 27/03/17 Пнд 12:26:44  149729761
>>149729631
>а вот тут оно берется хуй знает откуда

не смотря на то, что это самый блять ключевой момент. время последнего изменения, которое ты должен сохранять при любых изменениях на странице. при добавлении/редактировании/удалении записей.
Аноним 27/03/17 Пнд 12:29:33  149729949
>>149729631
а бля, это переменная вордпресса, в которой хранится время последнего обновления поста. Ты же об
>$post->post_modified ?

Короче я понял суть. все дело в
>$IfModifiedSince >= $LastModified_unix
по ходу можно поставить == но чет мне кажется это черевато
Аноним 27/03/17 Пнд 12:31:10  149730050
>>149729949
>по ходу можно поставить ==

нихуя подобного.
Аноним 27/03/17 Пнд 12:31:42  149730081
>>149729949

с тем же результатом можешь удалить все свое кэширование к хуям
Аноним 27/03/17 Пнд 12:36:11  149730349
>>149730081
>>149730050
хотя туплю. Бля а как сделать, чтобы оно обновляло, если я удалил пост?
Аноним 27/03/17 Пнд 12:37:28  149730431
>>149730349


я понятия не имею что там за анальная содомия у вас в вордпрессах происходит, но что-то мне подсказывает, что после того как ты удалил пост, post_modified у тебя уже не будет
Аноним 27/03/17 Пнд 12:40:44  149730639
>>149730349

скинь этот фрагмент исходника, попробую написать рабочую версию
Аноним 27/03/17 Пнд 12:41:22  149730679
>>149730431
на главной странице post modified берется из последнего поста, т.е. если я удалил последний пост, то он будет браться от предыдущего.

т.е. $IfModifiedSince >= $LastModified_unix будет всеравно срабатывать и отдавать 304 т.к. у предыдущего post modified меньше же
Аноним 27/03/17 Пнд 12:42:37  149730761
>>149730639
$LastModified_unix = unix_time($post->post_modified);
$LastModified = gmdate("D, d M Y H:i:s \G\M\T", $LastModified_unix);
$IfModifiedSince = false;
if (isset($_ENV['HTTP_IF_MODIFIED_SINCE']))
$IfModifiedSince = strtotime(substr($_ENV['HTTP_IF_MODIFIED_SINCE'], 5));
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']))
$IfModifiedSince = strtotime(substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 5));
if ($IfModifiedSince && $IfModifiedSince >= $LastModified_unix) {
header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');
exit;
}

header('Last-Modified: '. $LastModified);

function unix_time($time_send){
$year_lm=substr($time_send, 0, 4);
$mount_lm=substr($time_send, 5, 2);
$day_lm=substr($time_send, 8, 2);
$time_lm=substr($time_send, 10, 9);
$time_lm_unix_in = $year_lm.'-'.$mount_lm.'-'.$day_lm.' '.$time_lm;
$select_lm = strtotime($time_lm_unix_in);
return $select_lm;
}
Аноним 27/03/17 Пнд 12:43:36  149730831
>>149730679

ага. все верно.

> на главной странице
кэширование будет только на ней?
Аноним 27/03/17 Пнд 12:46:20  149730988
>>149730831
нет, но на остальных страницах (например в категориях) все тоже самое.
Аноним 27/03/17 Пнд 12:48:07  149731071
по ходу я всетаки не тупил и необходимо поменять >= на ==
Аноним 27/03/17 Пнд 12:49:43  149731170
>>149731071
а теперь удали не последний пост, а предпоследний...
Аноним 27/03/17 Пнд 12:53:06  149731364
>>149731170
чет не подумал об этом(
сук это уже особенности wp, а не самого кода. С другой стороны, я ща подумал, нахуй вообще над этим ебаться, я не буду удалять ведь всеравно

[Назад][Обновить тред][Вверх][Каталог] [Реквест разбана] [Подписаться на тред] [ ] 47 | 5 | 6
Назад Вверх Каталог Обновить

Топ тредов
Избранное