Советы Для Разработчиков Cms И Php-Фреймворков

Я не раз сталкивался с подобной проблемой, когда люди приходят и просят помочь в решении проблем с распределением нагрузки, когда аудитория их сайтов внезапно увеличивается.

Ну и самая трудоемкая часть этой проблемы — это самописные CMS-подобные системы, которые иногда приходится полностью переписывать.

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

Правило №1 : все исполняемые скрипты должны иметь расширение .

php но только .

php , даже включения

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

Правило №2 : используйте функции по минимуму .

htaccess и особенно никаких параметров типа:

RewriteRule ^(.

+)$ index.phpЭpath=$1

потому что другой веб-сервер не поддерживает .

htaccess , а в конфиге не всегда получится настроить одинаково и это займет больше времени

Правило №3 : не злоупотребляйте mod_rewrite -ом, не используйте виртуальные пути для статических файлов (jpg, gif, css, js и т.д.)
статика должна быть статикой
Правило №4 : использовать полные пути при работе с файлами и хранить пути к папкам в конфиге
потому что статика обычно переносится на другой сервер
Правило №5 : не бойтесь кэшировать контент в файлах, статический HTML обрабатывается быстрее, чем PHP-скрипт, открывающий кешированный файл на диске.

не забывайте, кешировать можно не только html, но и xml и т.д.
Правило №6 : при отрисовке страницы не должно быть лишних SQL-запросов, вставляющих записи в таблицу
передавать статистику в Google Analytics и журналы веб-сервера
Правило №7 : чем проще SQL-запрос, тем выше его производительность.

сопоставление таблиц — это хорошо, но неэффективно, особенно для больших объемов
Правило №8 : используйте минимум индексов, по возможности избавьтесь от индексов в текстовых полях
чем больше индексов, тем дольше время записи и не забывайте, что таблица во время записи блокируется
Правило №9 : Не используйте поля полнотекстового поиска в основных таблицах.

используйте отдельную таблицу для поиска
Правило №10 : обеспечить возможность системным модулям использовать разные серверы баз данных, а также выполнять разные типы операций (чтение/запись и удаление).

понадобится при использовании нескольких серверов MySQL (Master-Slave) * хотя достаточно правильно использовать ООП, а затем добавить эти опции, изменив только класс работы с БД
Правило №11 : PHP, в конце концов, является объектно-ориентированным языком, поэтому не обращайтесь напрямую к переменным сервера ($_SERVER, $_POST, $_GET, $_SESSION) — используйте объекты
Некоторые переменные в других веб-серверах имеют другие имена, а некоторые вообще не существуют и их придется вычислять или придумывать (печально обстоят дела с сессиями)
Пост написан подразумевая, что разработчик знает, что такое оптимизация кода и запросов: - что лучшая оптимизация операции - это ее исключить, лучше всего, если сервер вообще не получит запрос, если он его получит, то пусть оно должно быть статическим, если оно динамическое, то оно не трогает базу данных, а если и коснулось базы, то не трогало диск.

Ну вот и всё главное, что сейчас пришло в голову.

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

Теги: #CMS #php #Распределенные системы #распределение нагрузки #правила #php

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.