SPIP

[ar] [ast] [bg] [br] [ca] [co] [cpf] [cs] [da] [de] [en] [eo] [es] [eu] [fa] [fon] [fr] [gl] [id] [it] [ja] [lb] [nl] [oc] [pl] [pt] [ro] [ru] [sk] [sv] [tr] [uk] [vi] [zh] Espace de traduction

Скачать

Управление кешем

Как избежать ненужной работы сервера?

Июнь 2015

Все версии этой статьи:


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

Резюме для тех, кто торопится: в файле tutorial.html замените $delais=0; на $delais=3600;.

...

При запросе страницы у SPIP, он сначала смотрит, была ли она сформирована ранее. Если ссылка выглядит как http://yoursite.net/spip.php?id_article=12, то SPIP смотрит в свою поддиректорию tmp/cash/, чтобы проверить, существует ли такой файл, и если это так, то сравнивает возраст файла со значением $delais, которое указано в нашем файле tutorial.html.

В нашем примере мы задали $delais=0;, что приводит к систематическому обновлению страницы при каждом вызове. Давайте изменим это значение на $delais=3600; (в секундах).

Теперь наша веб-страница повторно генерируется только тогда, когда при ее запросе посетителем оказывается, что кешированная версия старше одного часа (то есть 3600 секунд). Если нет, SPIP просто читает содержимое файла в кеше [1] и возвращает результат без обращения к базе данных (делая лишь запись в статистике).

Какую задержку $delais надо установить, чтобы оптимизировать производительность сервера? Здесь нет общего и чудесного решения, но не стесняйтесь задать задержку в один день (то есть $delais=24*3600;) и даже больше для статей и рубрик. Наиболее значимые страницы навигации могут иметь меньшее значение $delais например, двадцать минут или час), если ваш сайт должен реагировать на частые публикации новостей и синдицированных сайтов. Если вы находитесь на общем сервере, примите во внимание других пользователей и не устанавливайте короткую задержку для страниц, которые редко меняются: это будет не очень разумным, поскольку для больших статей или обзоров обновления страниц может занять несколько секунд, что только замедлит доступ к вашему сайту.

Как обновить принудительно? Только мы решили установить чрезвычайно длительную задержку для страницы и вдруг замечаем орфографическую ошибку. После внесения исправлений в административной части, как можно немедленно удалить ошибку с общедоступного сайта?

— Из административной части - нажав на кнопку «Просмотр онлайн». Кнопка запускает регенерацию страницы в соответствии #URL_ARTICLE или #URL_RUBRIQUE для статьи или рубрики. Это наиболее распространенный метод обновления.

— В разделе «Обслуживание» административной части сайта - кнопка «очистить кеш» стирает все файлы из кеша. Это уместно, если вы внесли существенные изменения и ваш сайт очень сложный, но используйте другие способы в других случаях.

— Еще один простой способ заключается в использовании кнопки «Обновить страницу», которая доступна для администраторов на общем сайте. Эту кнопка будет видна, если вы уже входили в административную часть с того же компьютера, и на нем записаны cookies, идентифицирующие вас.

Вернуться к контексту: мы возвращаемся здесь к концепции контекста. Если шаблон вызывается в контексте id_article, id_rubrique или id_breve и SPIP обнаружит административные cookies, то появится другая кнопка под названием «Изменить эту статью (или раздел, или новость)» непосредственно на соответствующей странице редактирования статьи в административной части.

Последние детали:
— По понятным причинам, поисковая система не вызывает обновления кеша, а страницы на форуме обновляются, как только отправляется новое сообщение.
— cash директория сайта разделена на 16 пронумерованных поддиректорий: 0, 1, 2 ... 9, A, B ... F, в которых кешированные файлы распределены случайным образом; это называется «кеш хэш» и упоминается только для полноты картины.
— Кешированные файлы используются даже если база данных «лежит», таким образом сайт гарантированно остается доступным даже в случаях остановки сервера MySQL.

Примечания

[1Для технически мыслящих: на самом деле PHP код включен в соответствующий файл, что и позволяет выполнить код из кеша.


Показать шаблон этой страницы Сайт работает на SPIP | Espace de traduction | Административная часть