ООО ЭкоЮнит
FAQSearchMemberlistUsergroupsFilesLog inRegisterГлавная
printer-friendly view
 
 
AuthorMessage
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

Сергей, не подскажете как у вас сделано? Что бы как здесь, отдавались Last-Modified и Not Modified. см. last-modified.com/ru/

Версия 2.0.4  seo_mod_http_header.zip


Download seo_mod_http_header.zip (14.13 KB). Added/Updated Fri 27 Mar, 2015 11:21. Downloaded 35 Time(s).
Версия 2.0.2

Back to topOffline View user's profile
Sergey Gender:Male


Местный босс - администратор


Joined: 06 Jan 2005
Show/Hide

В includes/functions.php воткнуть процедуру

Code:
function put_http_header()
{
    global $topic_id, $forum_id, $db, $userdata;
    
    if($userdata['session_logged_in']) return;
    
    $sql_and ='';
    if ($topic_id) 
    {
        $sql_and = 'p.topic_id = ' . $topic_id . ' AND ';
    }
    else if ($forum_id) 
    {
        $sql_and = 'p.forum_id = ' . $forum_id . ' AND ';
    }
    $sql = 'SELECT p.post_time, pt.post_text
            FROM ' . POSTS_TABLE . ' p, ' . POSTS_TEXT_TABLE . ' pt
                WHERE ' . $sql_and . ' pt.post_id = p.post_id 
                ORDER BY p.post_time DESC LIMIT 1';
    if (!($result = $db->sql_query($sql)))
    {
        message_die(GENERAL_ERROR, 'Could not query new post information', '', __LINE__, __FILE__, $sql);
    }
    $row = $db->sql_fetchrow($result);
    $db->sql_freeresult($result);
    $upd_time = $row['post_time'];
    $tag='"PUB' . crc32($row['post_text']) . '"';
    $no_update=TRUE; // no update, as default
    if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && (strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE'])>=$upd_time)) 
    { 
        $no_update=FALSE; 
    } 
    if (isset($_SERVER['HTTP_IF_NONE_MATCH'])) { // check ETag 
        if (strcmp($_SERVER['HTTP_IF_NONE_MATCH'], $tag) == 0) $no_update=FALSE; 
        else $no_update=TRUE; 
    } 
    if (!$no_update) { 
        if (substr(strtolower(@php_sapi_name()), 0, 3) === 'cgi') @header('Status: 304 Not Modified'); 
        else @header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');
        @header('Date: ' . gmdate('D, d M Y H:i:s \G\M\T')); 
    } 
    @header('ETag: ' . $tag);  // The new TAG 
    @header('Last-Modified: '. gmdate('D, d M Y H:i:s \G\M\T', $upd_time)); 
    if (!$no_update) exit;
}


В index.php, viewforum.php, viewtopic.php после строк
Code:
init_userprefs($userdata);
//
// End session management
// 

Вставить вызов put_http_header();

_________________
Профессионал - это тот же дилетант, только знающий где ошибется. Генератор db_update.php для phpBB2 с некоторыми удобствами.
Как ставить моды. Что такое [SQL] и с чем его едят | Как правильно задавать вопросы и получать адекватные ответы | Правила форума
Бесплатная техподдержка только на форуме! Не надо стучаться в аську, скайп, слать емайлы, пытаться писать в приват. Спасибо за понимание. Please do not PM, ICQ, Skype or email me for support help - you won't get any reply. If you have a question or issue, post it in the appropriate forum/topic. Thanks!
Back to topOffline View user's profile Visit poster's website Skype Name
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

Спасибо!

Добавлено спустя 6 часов 51 минуту 47 секунд:

Браузеры себя странно ведут. Мозилла принимает Last-Modified и ETag. Опера ни в какую. А Иексплорер принимает только если после @header('Last-Modified: '. gmdate('D, d M Y H:i:s', $upd_time) . ' GMT'); вписать какой нибудь print '12345'; (контент то есть сразу вывести) Cool Neutral

Добавлено спустя 5 часов 53 секунды:

Sergey, скажите пожалуйста, наблюдалось ли у вас такое странное поведение браузеров?
Back to topOffline View user's profile
Sergey Gender:Male


Местный босс - администратор


Joined: 06 Jan 2005
Show/Hide

Этому коду лет семь. Думаешь, я особо заморачивался с разными браузерами и вообще смотрел, как они себя ведут? Мне есть чем заняться.

Добавлено спустя 2 часа 16 секунд:

По поводу Last-Modified и ETag в разных браузерах читаем тему xpoint.ru/forums/i.....0834.xhtml
Насчет кэширования в Опере описано здесь:
xpoint.ru/forums/i.....5881.xhtml
otvety.google.ru/o.....8a2e35e846

_________________
Профессионал - это тот же дилетант, только знающий где ошибется. Генератор db_update.php для phpBB2 с некоторыми удобствами.
Как ставить моды. Что такое [SQL] и с чем его едят | Как правильно задавать вопросы и получать адекватные ответы | Правила форума
Бесплатная техподдержка только на форуме! Не надо стучаться в аську, скайп, слать емайлы, пытаться писать в приват. Спасибо за понимание. Please do not PM, ICQ, Skype or email me for support help - you won't get any reply. If you have a question or issue, post it in the appropriate forum/topic. Thanks!
Back to topOffline View user's profile Visit poster's website Skype Name
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

Имеет смысл отдавать эти заголовки только ботам. Если пользователь поменял аватару, подпись и т.п. То гости - пользователи Мозиллы будут видеть старые данные, а пользователи Оперы, соответственно новые. Еще проблема с капчей - будет показывать все время одну и ту же комбинацию знаков. И с другими антиспам модами.

Попытался решить эти проблемы. Так же при удалении сообщений обновляется дата темы (она обновляется при обращении к posting.php, и к modcp.php). Есть возможность сбросить даты всех тем форума на текущую. Возможность отдавать заголовки гостям оставлена, как тестовая опция и на случай необходимости срочно уменьшить нагрузку на сервер. Гостям заголовки в viewforum.php не отдаются (для глобального объявления и аналогичных модов, на случай удаления тем или переноса их в другие форумы). База ботов сделана на файлах, что бы не добавлять SQL запрос из-за нескольких ботов. Ботам создан режим "Read Only" (имеет смысл для форумов, где разрешено писать без регистрации).

Рекомендуется установить Guest Sessions MOD, т.к. сиды делают этот мод бесполезным. Взять его можно phpbb.com/comm.....p;t=185839

При портировании мода на phpBB3, обязательны ссылка на источник, и указание авторских прав (Porutchik и vlad77).

Скачивать из первого поста темы.
Back to topOffline View user's profile
Sergey Gender:Male


Местный босс - администратор


Joined: 06 Jan 2005
Show/Hide

Post Sun 12 Oct, 2014 22:11 Download Post Reputation: 88
 Функция для определения поисковых ботов
Мод не смотрел, но для определения бот/браузер я использую функцию. Однозначно ей доверять нельзя, так как некоторые боты могут шифроваться как обычные браузеры. Например, китаец Baiduspider (ip 180.76.15.*), тварь желтожопая, часто представляется обычной Лисой.

Code:
function isRobot($agent = '', &$robots_agent = '') 
{ 
    if (!isset ($_SERVER['REQUEST_METHOD']))
    {
        return false;
    }
    if (empty($agent))
    {
        $agent = $_SERVER['HTTP_USER_AGENT'];
    }
    
    $browser_detect = false; 
    
    if (stristr($agent, 'bot') === false && stristr($agent, 'mutant') === false)
    {    
        $Browsers = array( 
            'chrome', 'epiphany', 'firefox', 'khtml', 'konqueror', 'links', 'lynx', 'opr/',
            'msie', 'netscape', 'omniweb', 'opera', 'safari', 'webtv', 'w3m', 'trident'
        ); 

        foreach($Browsers as $Browser) 
        { 
            if (stristr($agent, $Browser) !== false) 
            {
                $browser_detect = true; 
                $robots_agent = $Browser;
                break;
            }
        } 
    }
    
    if (!$browser_detect)
    {
        $Robots = array( 
            'adre', 'aport', 'archive', 'ask jeeves', 'bot', 'crawl', 'find', 'goku', 'google', 'infoseek',
            'mail', 'msn',  'coccoc', 'find', 'goku', 'google', 'infoseek', 'search', 'slurp', 'spider', 'daum',
            'teoma', 'turtle', 'urllib', 'web', 'webalta', 'yahoo', 'yandex', 'mutant', 'riddler', 'omgili'
        ); 

        foreach($Robots as $Robot) 
        { 
            if (stristr($agent, $Robot) !== false) 
            {
                $robots_agent = $Robot;
                return true; 
            }
        } 
    }
    else
    {
        return false;
    }
    return (stristr($agent, 'mozilla') === false);
} 

Если интересно, USER_AGENT'ы поисковых роботов можно посмотреть в приложенном файле. Это те роботы. которые обращаются к robots.txt на сайте.

Добавлено спустя 6 минут 33 секунды:

Многие из них уже предзабиты в начальной базе phpBB3.


Download stats.zip (9.47 KB). Added/Updated Sun 12 Oct, 2014 22:11. Downloaded 9 Time(s).
robots user agents


_________________
Профессионал - это тот же дилетант, только знающий где ошибется. Генератор db_update.php для phpBB2 с некоторыми удобствами.
Как ставить моды. Что такое [SQL] и с чем его едят | Как правильно задавать вопросы и получать адекватные ответы | Правила форума
Бесплатная техподдержка только на форуме! Не надо стучаться в аську, скайп, слать емайлы, пытаться писать в приват. Спасибо за понимание. Please do not PM, ICQ, Skype or email me for support help - you won't get any reply. If you have a question or issue, post it in the appropriate forum/topic. Thanks!
Back to topOffline View user's profile Visit poster's website Skype Name
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

Спасибо. Особенно за список ботов.

_________________
Архив модов с phpbb.com phpbb2refugees.com......php?t=241
Архив модов с phpbb2.de yadi.sk/d/XP53sFs.....93Q36Ap
Back to topOffline View user's profile
Василий_007

Участник


Joined: 18 Dec 2014
Show/Hide

Перед $template->pparse('body'); в viewtopic.php вставил
Code:
$LastModified_unix = strtotime($post_date);
$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);

Отдает вроде норм (даже слишком, учитывая дефолтный Cache-Control движка)
Брал отсюда: last-modified.com/ru/last-modified-if-modified-since-php.html
Back to topOffline View user's profile
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

Василий_007 @ Mon 05 Jan, 2015 19:44 wrote: (View Post)
Show
Василий_007, при добавлении/изменении сообщений, страница как минимум должна заголовками Last-Modified и 304 Not Modified сообщать об этом поисковикам и браузерам. Иначе поисковики ваш форум забанят за клоакинг. А в браузерах (кроме иексплорера и оперы) пользователи будут все время видеть старую страницу.

Мод из этой темы ставьте.

Добавлено спустя 9 минут 20 секунд:

Прощу прощения, $post_date в вашем коде, это по видимому время постинга самого нижнего сообщения на странице, а не дата заведения темы (Дата заведения темы, в процессе жизни темы не меняется). Меняться при добавлении новых сообщений она будет.
Но у меня учтены модерация и редактирования темы, учтены боты, можно сбросить все Last-Modified на текущее время. Браузерам пользователей отдавать эти заголовки не рекомендуется, по крайней мере хотя бы залогиненым пользователям.
Ваш код будет приводить, например к тому, что пользователи мозиллы, отредактировав свое сообщение, не будут видеть результатов своего редактирования.
Back to topOffline View user's profile
Василий_007

Участник


Joined: 18 Dec 2014
Show/Hide

Quote: Show

Он хорош, но слишком заковыристый.
Эти проверки по юзерагентах, имхо, немного стремная затея.
Как в принципе и этот 304 на ЦМС.
Поправите шаблон - страница УЖЕ изменилась, а дата та же...
Для того чтобы ставить 304 нужно понимать для чего оно надо, да и отдельно на форум смотреть..
ПС все равно делают переиндексацию когда захотят, несмотря на 304.
В моем случае плевать на нагрузку сервера ботами или охват страниц при заходе бота. Ставил ради сниппета с поиске, но когда гугл распознал что это форум, то начал игнорировать эту дату и выдает теперь в поиске дату первого сообщения( грешу на микроразметку

Мне проще обернуть это в !$userdata['session_logged_in']
и поправить в page_header.php
Code:
//header ('Cache-Control: no-cache, pre-check=0, post-check=0');
header ('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0'); 

Спасибо за эти замечания, недоглядел :/
Back to topOffline View user's profile
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

Василий_007 @ Tue 06 Jan, 2015 11:14 wrote: (View Post)
Show
В тройке все проверяется на юзерагенты.
А в моде эта проверка сделана, что бы не было глюков у гостей. Например при смене кем то аватары, что бы гости (пользователи Мозиллы) видели новую аватару (т.е. что бы гостям заголовки не отдавать, а ботам отдавать).
Или сделайте как у Сергея, проверяйте только залогинен/не залогинен. Тогда, если где то можно писать гостям, надо будет в этих форумах Last-Modified и 304 Not Modified вообще не отдавать, потому что кроме разных вышеописанных глюков, у гостей (у кого мозилла) не будет работать капча и другие антиспам моды.

Здесь просто и одновременно качественно не получается.


P.S. Как ведет себя Хром с этими заголовками не знаю. Известно что Мозилла их обрабатывает, Опера не обрабатывает, а Иексплорер хоть и не обрабатывает, но написано что если очень-очень постараться то будет обрабатывать.

Добавлено спустя 5 минут 51 секунду:

Василий_007 @ Tue 06 Jan, 2015 11:14 wrote: (View Post)
Show
В моде после правки шаблона, достаточно в админке нажать кнопку "сбросить все Last-Modified на текущее время".
Back to topOffline View user's profile
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

У меня мод стоит достаточно долго. Количество проиндексированных страниц увеличилось. А на нагрузку на сервер влияние мода не заметно. Возможно на маленьких форумах, где проиндексированы все страницы, он будет уменьшать нагрузку на сервер.

Мод обновлен до версии 2.0.1
В админку добавлен показ времени последнего сброса Last-Modified.
Если время Last-Modified тем одинаковое (темы созданные до установки мода, или до сброса Last-Modified, имеют одинаковое время), то теперь они отдают разный ETag, а не одинаковый, как было раньше.

Инструкция по обновлению находится в архиве.

Скачивать из первого поста темы.
Back to topOffline View user's profile
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

Версия 2.0.2
Некоторые моды могут объявлять $phpbb_root_path = ''; , после чего не получается найти файл bots_array_file.php.

Поэтому код $phpbb_root_path . '/includes/bots_array_file.' . $phpEx; заменен на $phpbb_root_path . 'includes/bots_array_file.' . $phpEx;

Инструкция по обновлению находится в архиве.

Скачивать из первого поста темы.
Back to topOffline View user's profile
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

У меня не проверялось, т.к. у меня к счастью php как модуль Apache.
Написано, что если php не установлен как модуль Apache, то сервер испытывает проблемы с приемом If-Modified-Since. Для исправления, предлагается в файл .htaccess поместить код:
Code:
RewriteEngine On
RewriteRule .* — [E=HTTP_IF_MODIFIED_SINCE:%{HTTP:If-Modified-Since}]
RewriteRule .* — [E=HTTP_IF_NONE_MATCH:%{HTTP:If-None-Match}]
для seo модов добавляющих к форумным страницам расширение .html, сделать по ниже приведенному образцу:
Code:
# url rewriting
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA]

# If-Modified-Since (if php is not installed as cgi then comment lines below)
RewriteRule .* — [E=HTTP_IF_MODIFIED_SINCE:%{HTTP:If-Modified-Since}]
RewriteRule .* — [E=HTTP_IF_NONE_MATCH:%{HTTP:If-None-Match}]
Источник: controlstyle.r.....since-php/
Back to topOffline View user's profile
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

Версия 2.0.3

При создании новой темы, странице присваивалось нулевое время создания/изменения. В архив добавлена инструкция для случаев, если php не установлен как модуль Apache.

Инструкция по обновлению находится в архиве.


Download seo_mod_http_header.zip (15.31 KB). Added/Updated Thu 23 Nov, 2017 21:32. Downloaded 6 Time(s).
Version: 2.0.3HTTP заголовки Last-Modified и If-Modified-SinceHTTP headers Last-Modified and If-Modified-Since


_________________
Архив модов с phpbb.com phpbb2refugees.com......php?t=241
Архив модов с phpbb2.de yadi.sk/d/XP53sFs.....93Q36Ap
Back to topOffline View user's profile
Display posts from previous:   

Summary Rating For >> Отдача заголовков Last-Modified и 304 Not Modified
Average Rating: 2.00 :: Min Rating: 2 :: Max Rating: 2 :: Number of Ratings: 1
Choose Rating: 1   2   3   4   5  






All times are UTC + 3 hours
Users browsing this topic:
Registered Users: None

Jump to:   
printer-friendly view
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum
/a
Username:

Password:

Log me on automatically each visit
  Яндекс.Метрика
CrackerTracker © 2004 - 2018 CBACK.de