Я плохо в этом секу, помоги анон. Хочу сделать кэширование сайта, дабы страницы отдавали 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. Пробовал разные версии - нихуя. ЧЯДНТ?не обсыкайте сильно, я секу в этом всем очень поверхностно
бамп
>>149725816 (OP)в /pr ублюдок слепой.Сажи
>>149726339там нет никого, иди нахуй
ok
Заебали тут уже срать
>>149725816 (OP)На каком freamvork'e или прости Господи CMS?
>>149726501wordpressмне норм
>>149725816 (OP)а в твоем гет запросе к серверу есть заголовок If-Modified-Since или If-None-Match?если нет, то схуяли серверу возвращать 304
>>149725816 (OP)Мой совет, если ты не работал с кешированием, то не делай тем более если ты вкурил туториалы наговнишь. Сделай так, если контент статичен, что ты решил его кешировать, то лучше вгони его в сессию и тяни оттуда и обновляй данные в сессии примерно раз в час и будет тебе счастье
>>149727053Т.е, не вкурил*
И вообще с чего ты взял что нужно именно эти данные кэшировать?
>>149726876он итак возвращает 304. Другое дело, что он не обновляет страницу если изменения произошли.
>>149727053мне нужно, чтобы поисковики не сканили страницу лишний раз
>>149727273покажи реквест-респонс запросы
>>149727369Улыбныло)) Сделай как я сказал ранее с сессией
>>149727512оп дохуя сео оптимизатор и прочитал что так лучшене мешай
Так выглядит код, который нагуглил
>>149727597не, не оптимизитор, но прочитал, что так лучше и хочу так сделать, да
оп хуй
>>149727665ОП, не еби мозги дядькам послушай совет и сделай как посоветовали. Лучше блять для высоконагруженных систем, а не для твоего говно приложения с посещаемостью 300 юзверей в год
>>149727448если это оно
>>149727840- сервачок, ты изменился с 20:42?- нет, иди нахуй.чтож, отличноа изменения были?
>>149727625$LastModified_unixесли изменения были, то в этой переменной у тебя левая хуета, а не время изменений
>>149728209>>149728065че? бля не понял
вообще посмотри что в переменных которые ты сравниваешь
так, я кажется тупой. в HTTP_IF_MODIFIED_SINCE действительно записывается время, если я публику новую запись и страница действительно обновляется, а не тянется из кэша. Однако если запись удаляю, то после обновления страницы эта запись продолжает отображаться
>>149728355 -> >>149728626
Короче, я так понял код устроен так, что сравнивает сохраненное время последнего изменения и время последней публикации и если время публикации больше, чем сохраненное время, тогда обновляет страницу?
>>149728929что-то типа того. через заголовок Last-Modified на клиента попадает время, начиная с которого он будет запрашивать изменения. при последующих запросах от этого же клиента, время из Last-Modified будет возвращаться на сервер в параметре IfModifiedSince.и соответственно если страница изменилась позже IfModifiedSince, будет обновление. косяк в хуй знает откуда берущемся времени LastModified, которое видимо обновляется не при всех операциях
>>149729288>косяк в хуй знает откуда берущемся времени LastModified>>149727625Разве вот это не оно?>header('Last-Modified: '. $LastModified);Т.е. оно устанавливается после:>header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified'); >exit;>exit;Может нужно как-то его устанавливать то этого?
>>149729473это оно при отправке на клиентакогда ты ему сообщаешь время, с которого он будет спрашивать изменения.а вот тут оно берется хуй знает откуда
>>149729631>а вот тут оно берется хуй знает откудане смотря на то, что это самый блять ключевой момент. время последнего изменения, которое ты должен сохранять при любых изменениях на странице. при добавлении/редактировании/удалении записей.
>>149729631а бля, это переменная вордпресса, в которой хранится время последнего обновления поста. Ты же об >$post->post_modified ?Короче я понял суть. все дело в>$IfModifiedSince >= $LastModified_unixпо ходу можно поставить == но чет мне кажется это черевато
>>149729949>по ходу можно поставить == нихуя подобного.
>>149729949с тем же результатом можешь удалить все свое кэширование к хуям
>>149730081>>149730050хотя туплю. Бля а как сделать, чтобы оно обновляло, если я удалил пост?
>>149730349я понятия не имею что там за анальная содомия у вас в вордпрессах происходит, но что-то мне подсказывает, что после того как ты удалил пост, post_modified у тебя уже не будет
>>149730349скинь этот фрагмент исходника, попробую написать рабочую версию
>>149730431на главной странице post modified берется из последнего поста, т.е. если я удалил последний пост, то он будет браться от предыдущего.т.е. $IfModifiedSince >= $LastModified_unix будет всеравно срабатывать и отдавать 304 т.к. у предыдущего post modified меньше же
>>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; }
>>149730679ага. все верно.> на главной страницекэширование будет только на ней?
>>149730831нет, но на остальных страницах (например в категориях) все тоже самое.
по ходу я всетаки не тупил и необходимо поменять >= на ==
>>149731071а теперь удали не последний пост, а предпоследний...
>>149731170чет не подумал об этом(сук это уже особенности wp, а не самого кода. С другой стороны, я ща подумал, нахуй вообще над этим ебаться, я не буду удалять ведь всеравно