roman1981

Рейтинг
30
Регистрация
20.04.2017

Коллеги, ещё раз спасибо вам за ответы. Теперь всё предельно понятно, заголовок "Content-Length" не нужен (т.е. можно его вообще опустить и не показывать). Также, если заголовок "Last-Modified" нормально отрабатывает, значит вышеуказанный код РНР правильный. Спасибо за ваши ответы!

Но у меня возник ещё один вопрос к уважаемой аудитории сёрча.

Как насчёт кеширования страниц сайта? Стоит ли мне добавлять серию заголовков для управления кешем браузеров и поисковых роботов? Как, например, такие классические заголовки:

"Cache-Control: max-age=1028000" (кешировать на столько-то времени), либо

"Cache-Control: no-store, no-cache, max-age=0" (полный запрет кеширования)

Какая у кого из вас практика - стоит ли дополнительно управлять кешированием (и как это влияет или может повлиять на поисковые роботы Гугла и Яндекса)? Стоит ли мне заморачиваться этим вопросом, или же не стоит? Иными словами, каким образом заголовки по управлению кешированием влияют на поисковую оптимизацию сайта?

Или же не заморачиваться этим вопросом, как в случае с заголовком "Content-Length", рассмотренным выше?...

nyc22, коллега, в том-то и дело, что ранее у меня на сайте контент отдавался всегда, вне зависимости от того, были ли изменения со времени последнего посещения бота или не были. Иными словами, механизм If-Modified-Since у меня не работал вообще.

Теперь же, с помощью вышеуказанного кода РНР, я сделал так: если вместе с запросом от бота (или от браузера) приходит заголовок If-Modified-Since, в таком случае РНР не отдаёт контент боту вообще, а просто пишет ответ "304 Not Modified", то есть контент не изменялся. Вот такой сейчас у меня ответ от сервера в случае, если контент не менялся с такого-то периода времени:

HTTP/1.1 304 Not Modified

Server: nginx

Date: Sun, 29 Oct 2017 06:21:45 GMT

Connection: keep-alive

И всё, далее никакого контента нет, поскольку сработал механизм If-Modified-Since. Весь вопрос в том, правильны и корретный ли вышеуказанный код РНР, который собственно и отрабатывает этот момент. Не будет ли проблем в будущем с Гуглом из-за этого кода, нет ли там скрытых для неопытного глаза ошибок, или косяков. Потому-то я и задал этот вопрос уважаемым форумчанам.

Коллеги, спасибо большое за ваши ответы.

Позвольте ещё задать один вопрос, поскольку переживаю по поводу поисковых алгоритмов Гугла и Яндекса. Как выше вы могли видеть, последней строчкой ответа сервера у меня указан заголовок "Last-Modified". Этот заголовок добавил я вручную, разместив соответствующий РНР-код в самом начале каждой страницы моего сайта. Естественно, я не сам писал этот код, поскольку (к сожалению) только начал изучать язык РНР. Этот кусок кода я позаимствовал вот из этого ресурса:

https://last-modified.com/ru/last-modified-if-modified-since-php.html

Соответственно, вот и сам РНР-код, который находится у меня в самом начале каждой .php страницы сайта:


<?php
$LastModified_unix = 1294844676; // время последнего изменения страницы
$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);
?>

Вопрос: как вы считаете, можно ли доверять указанному выше ресурсу (last-modified.com) и использовать данный РНР-код на своём сайте? Корректен ли этот код и не будет ли на него ругаться поисковик? Нет ли в нём каких-либо скрытых косяков и проблем (в частности, для поисковых роботов Гугла и Яндекса)? Прошу вас откликнуться.

К слову сказать, вот как дословно описывается работа данного скрипта на самом сайте last-modified.com

Все просто - получаем время последнего изменения страницы, проверяем наличие If-Modified-Since, если есть - отдаем 304 Not Modified и останавливаем работу скрипта, иначе генерируем заголовок Last-Modified и отдаем страницу.

Ещё раз благодарен за ваше внимание к данному вопросу. Это последний вопрос, который меня сильно тревожит, ввиду нехватки моих знаний в РНР-программировании. Спасибо вам заранее!

SeVlad

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

Просто начал читать эту ветку, в которой как раз рассматривали вопрос SSI (Server Side Includes), их применения, и так далее. Ну и задал вопрос, поскольку как раз в разрезе этих самых включений у меня и была проблема - не подсвечивалось меню на сайте. А так вы абсолютно правы, ещё раз прошу прощения, виноват.

miketomlin

Спасибо за ваш ответ и советы. Позвольте ещё раз для себя окончательно уточнить этот тонкий нюанс.

То есть, моё направление мыслей было правильным. Так как у меня страницы сайта разбиты на отдельные обычные файлы (что так и есть на самом деле), тогда я в самом начале каждой страницы создаю блок РНР-скрипта, и в нём прописываю (инициализирую) переменные для этой конкретной текущей страницы.

А уже потом в шаблоне (отдельном файле с меню, например "menu.php") я конструкцией IF / ELSE делаю проверки, и в зависимости от результата этих проверок (булев тип данных true / false) я добавляю в своё меню на сайте класс "active". Или же не добавляю. Где-то таким образом. Правильно я понимаю этот момент?

Arsh:
Для начала Вам надо понять - как Вы будете получать id документа (=страницы)?
Дальше просто - к каждой ссылке в меню пишите что-то типа:
if (id==page_id) echo "class='activ' ";

Коллега, спасибо большое, вашу мысль я понял.

Итак, после того как я сделаю адаптивный дизайн, соответственно, я разбиваю шаблон сайта на блоки, для удобства управления сайтом в отдалённом будущем (1000+ страниц), а именно: блоки header.php, footer.php, menu.php, и так далее. Если шапка и подвал сайта не меняются на всех 1000 страницах, то меню должно подсвечивать активный пункт, в котором сейчас находится посетитель сайта. Для решения этой задачи мне необходимо как-то идентифицировать из тысячи страниц сайта ту страницу, которая должна подсвечивать активный пункт меню. И, соответственно, конструкцией IF / ELSE выводить (в зависимости от указанного условия) активное меню именно на данную страницу сайта.

Мы приходим к тому, что главное - найти корректный способ получения ID активного документа (= страницы сайта).

Тут у меня пришло в голову следующее решение.

В самом начале каждой страницы сайта разместить РНР-код, в котором задать переменную и присвоить ей некоторое значение, к примеру что-то вроде такого:

<?php

$activeMenu = TRUE;

$passiveMenu = FALSE;

?>

И затем, используя условие, присваивать в том или ином случае активному пункту меню класс "active".

Я правильно мыслю, или же есть более корректный способ решить эту задачу?

---------- Добавлено 11.10.2017 в 07:08 ----------

volkovysk:
roman1981, зачем так акцентрировать внимание на РНР-инклуды? Они тут ни причём. Дизайн сайта задаётся стилями и разметкой HTML.

Коллега, адаптивный дизайн сайта у меня уже готов. Это уже пройденный этап. Кстати говоря, у меня все стили корректно вынесены в отдельный внешний файл styles.css, в самом шаблоне стилей нет, об этом я заранее позаботился. Плюс, адаптивный дизайн я сделал с помощью точек остановки, их у меня три, под разные разрешения мониторов (соответственно, с помощью медиа-запросов в стилях, как и положено).

Сейчас я нахожусь на этапе решения уже прикладных, технических вопросов управления сайтом. Именно потому я акцентирую внимание на РНР-инклудах. Вот решаю задачу подсвечивания активного пункта меню, и чтобы при этом само меню сайта было вынесено в отдельный файл "menu.php" и управлялось в будущем из одного места, а не править его на всех 1000+ страницах сайта.

volkovysk:
roman1981, Я Вас отлично понимаю. Многие начинали с самодеятельного энтузиазма и с бесплатных хостингов. Им хотелось творить, повышать знания личным трудом, а не просто сайт зарядить на чужом движке.
На первое время для визитки из 10 страниц даже можно бесплатный хост найти. А вот домен да, лучше купить свой собственный, причём у отдельного регистратора.

Коллега, а можете чуть подробнее относительно домена.

Просто я купил свой домен вместе с хостингом, у хостинг-компании. Так сказать, два в одном. Грубо говоря, там можно сразу заказать и оплатить хостинг и регистрацию домена, потому, компания его регистрирует тут-же.

Когда покупал домен, хостер ничего не попросил у меня, ни фамилии, ни имени, ничего. Видимо, он оформил его у регистратора на своё имя (либо на имя своей компании), а уже затем передал его мне. Как мне поступить в таком случае? Связаться с хостинг-компанией, потребовать переоформить домен на моё имя, и как конкретно проверить, на кого оформлен в текущее время домен? Есть ли специальные сервисы, чтобы проверить и заодно сослаться на них в разговоре со службой поддержки моего хостинга? Что-то я обеспокоился последней вашей фразой, а то будешь развивать, развивать свой проект несколько лет... А потом раз - и хостер обанкротился, или ещё что случиться, и всё - ты теряешь сайт в поисковых системах. То есть, есть риск, что вся многолетняя работа над раскруткой и оптимизацией сайта пойдёт прахом!

Потому, прошу вас более развёрнуто прокомментировать свой предыдущий ответ. Буду очень ждать, заранее спасибо.

miketomlin:
Мне почему-то показалось, что ТС хочет кодить. Если я не прав, тогда, да, для околонулевого бюджета ничего другого кроме использования бесплатных CMS не остается.

Вам абсолютно правильно показалось. Да, я хочу кодить, иначе зачем мне это всё нужно?... А вот по поводу бесплатных CMS и околонулевого бюджета - вы подняли мне настроение, спасибо. :)

Бюджет не просто околонулевой, он - нулевой полностью. Принципиально никому не буду ничего платить, кроме оплаты хостинга и домена сайта. Только прошу без обид, товарищи, и правильно понять мои слова. Это я не из-за жадности своей имею такую вот позицию, а из-за принципа, поскольку я бросил вызов самому себе. Разве зря я потратил уже столько сил, чтобы освоить на достаточно хорошем базовом уровне Фотошоп, HTML+CSS вёрстку, много информации перевернул по поводу SEO раскрутки сайта, его технического SEO-аудита, сейчас вот изучаю потихоньку вопросы серверов и их настройки, плюс начинаю углубляться в РНР и частично в JavaScript...

Все из нас когда-то делали свои первые шаги в профессии. Даже маленький ребёнок не с первого раза сделал свой первый шаг или произнёс своё первое в жизни слово. Именно потому, мне тоже предстоит набить свои шишки, пройти через свои тернии к звёздам. Где-то таким вот образом.

SeVlad:
Это визитка? 😮
На голом пхп/инклудах? 🤪
Ну остаётся только пожелать удачи.

Спасибо. Удача мне пригодится.

PS. Тут мне всё намекали, намекали на тот момент, что я должен определиться со строением своей CMS. А в чем тут подвох, товарищи? А то я не совсем понял суть тонких намёков...

miketomlin, silicoid

Коллеги, спасибо вам за общение и за дружелюбие. Это на сегодняшний день дорого стоит! Спасибо.

miketomlin:
Пустой шаблон собрались выкладывать? Внесите хотя бы несколько десятков статей. Страницы создаете/делаете видимыми только с контентом. Заголовки можно настраивать индивидуально для отдельных страниц или групп страниц. И перенастраивать при необходимости. Например, кэширование связано с нагрузкой на сервер и частотой обновления. Соответственно поначалу его лучше не включать, т.к. посещалка минимальная, а контент часто вносится и правится.

Коллега, спасибо вам за интересные мысли по поводу того, что заголовки можно настраивать индивидуально для отдельных страниц либо групп страниц сайта. Я правильно понимаю: с помощью РНР-сценариев я могу буквально каждой странице настроить отдельные заголовки, как например:


header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache, must-revalidate");
и так далее...

То есть, с помощью РНР-сценария в самом начале своей .php страницы (непосредственно до элемента <!doctype html>), я прописываю указанные команды и сервер отдает необходимые заголовки.

Всего: 106