Русский
Русский
English
Статистика
Реклама

Pagespeed

Из песочницы Как я за вечер написал быструю CMS для статических сайтов по правилам бизнес-логики в одном файлике

15.10.2020 22:20:39 | Автор: admin

Не Wordpress-ом единым


Не Wordpress-ом единым

Рынок CMS длительное время оставался местом, где Wordpress, Joomla, Drupal тройка абсолютных лидеров. Эти прекрасные времена уже постепенно проходят, хотя WP, сбавляя в динамике появления новых сайтов, все ещё сохраняет лидерство. Не мудрено: активное сообщество, огромное количество плагинов. Но, эта статья вовсе не будет посвящена восходящим звёздам рынка систем управления контентом (привет, решениям на базе Laravel). Скорее даже, объектом нашего внимания будет черная материя, которая находится несколько в стороне. А именно барабанная дробь

Статические сайты


CMS для статических сайтов

Кому нужна статика в 2k20?


Рациональный вопрос! Казалось бы, времена телефонного интернета и Windows95 уже прошли, но спрос на статическую генерацию html кода вновь начинает набирать обороты. И всему виной корпорация добра, разумеется. Google PageSpeed тот самый великий и могучий Урфи В общем, именно этот измеритель производительности веб-страниц стал и двигателем прогресса мирового интернета, и головной болью всех веб-разработчиков, а уж тем более фрилансеров. Результаты измерений сего инструмента базируются на стандартах Google, а далече известно, что онные положено в основу ранжирования. Да и объективно, загрузка страницы более трёх секунд увеличивает количество отказов автоматически. Таким образом, статика становится одним из альтернативных решений на смену или в дополнение к динамической сборке страниц силой любой CMS, фреймворка либо самописных вариантов.

Хьюстон, у нас проблемы или мой случай


По долгу службы я занимаюсь обслуживанием множества проектов, среди которых есть парсеры, но и также решения в сфере e-commerce. На жизнь не жалуюсь, но возникла задачка не из разряда 2 класс, начальная школа. Я, как разработчик, и менеджер (а управление своим маленьким делом, как известно, требует навыков и из этой сферы), как это на польском dostaem si do martwego kta (попал в глухой угол, одним словом). Условие следующее: нужно написать в течение нескольких дней решение, которое должно просто устанавливаться и обслуживать любое количество статических страниц. Более того, администратор должен иметь возможность быстро удалять и добавлять такое решение на любой проект через FTP/SFTP соединение или даже если у него нет доступа к FTP/SFTP. С другой же стороны условием было то, что минимальная версия это PHP 5.6 и она должна поддерживаться также прекрасно, как и каждый более современный вариант.

Администратор должен


  1. удалять/добавлять/изменять страницы при помощи админки;
  2. глобально и быстро искать в контенте страниц (учитывая разные кодировки, языки;
  3. искать по названиям файлов;
  4. удалять/вставлять/изменять на всех страницах нужные элементы одним кликом из админки;
  5. решение должно быть простым как в установке, так и в удалении.

Cекьюрность не должна позволять использовать SQL инъекции либо какие-либо другие попытки вмешательства в работу.

Дополнительным обязательством была бы возможность использовать админ панель и все ее функции через API. Грубо говоря, при наличии таких админок на 50+ доменах, должен быть доступ к ним удалённо путем возможности делать запросы.

Чехия, вечер, лето, кофе


Крайне спокойные вечера в Крконошах только способствуют лени. Но, как говорит старая пословица, кто не работает

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

И да, чёрт возьми, я решил перенести в один файл уже устоявшийся подход в большинстве фреймворков ООП и MVC концепцию.

С точки зрения быстродействия процедурщина, быть может, была бы наиболее лучшим вариантом, но:

  • не забудем об аспекте роста потребностей клиента и параллельной надобности добавлять новые возможности к интерфейсам нашего веб-приложения;
  • проблемы с ментальным состоянием программиста хоть я и был согласен мириться с тем, что всё будущее этого проекта будет возложено исключительно на мои могучие плечи, но вряд ли я бы морально перенёс бесконечное усложнение процедурного решения и отсутствие внятной бизнес логики;
  • потребность возможной публикации проекта для всенародных масс такая надобность к моменту публикации сего опуса становится актуальной, поэтому лучше когда руки развязаны и будущую документацию можно оснастить вполне понятными даже не функциями, а структурами объектно-ориентированного мышления и разделения зон ответственности приложения на ярко выраженный фронт-энд, бэк-энд.

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

Структурирование


Исходя из того, что у нас один файл и есть главное правило добавляться должен только один файл и после сразу можно работать и обслуживать директорию, в которую добавили, ясное дело, что даже классы не спасут от чёрт ногу сломит.

Каково же решение?


Интуитивно: файл разбиваем на структурные части вида: базовые системные классы в самом верху, контроллеры пониже, виды еще ниже, но и весь балет закрывают роуты. Каждая часть получила шапку из комментов с объяснением, дабы через время не забыть что здесь:

/** This is the part for routing*Additional information...*/

Нейминг согласно функциональному предназначению методы классов получили имена согласно camelCase практике и соответствуют функциональной роли, к примеру checkAdminCredentials это более чем понятная формулировка для метода.

Попытка описать всё что можно не скажу, что соответствовал этому намерению до самого конца разработки, в конце концов, я лавировал между быстротой и читабельностью кода, но ключевые решения мне удалось сопроводить комментариями вида //to get static html.

Как сделан роутинг?


Надобность более-менее понятного разделения интерфейсов была мною сразу же принята в качестве ключевой потребности. Этот компонент, если не должным образом реализовать, может стать точкой пика роста приложения из-за запутанности в том, какой роут какой контроллер вызывает.

Исходя из упомянутой выше проблемы, я сделал класс для роутинга достаточно примитивным, но функциональным. Роутинг работает при помощи GET запросов конечно, не совсем эстетично, но сиюминутную потребность в быстрой реализации решает на 100%. Роутер стал единственной точкой входа для веб-приложения, что, как по мне, идеальное решение для простоты разработки. В этом классе происходит сборка фронт-энда и бэк-энда апликации и вывод return-ом сформированного HTML.

Вопрос: написал ли я велосипед?


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

Наглядный пример производительности


Одна крайне известная CMS, имя которой не принято называть:



Моё решение:



Очевидно, что скорость получения первого байта также выше, как и все прочие показатели, связанные со скоростью загрузки, даже не буду демонстрировать количество запросов на front-end в классических CMS и в этом мини-решении.

Будет ли продолжение?


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

Зачем и как проверять скорость загрузки сайта?

22.06.2020 20:08:04 | Автор: admin
Скорость работы один из ключевых показателей сайта. От него зависят позиции в поисковой выдаче и конверсия продаж. Следует контролировать быстродействие с помощью специализированных сервисов и предпринимать меры по ускорению загрузки страниц.



Зачем и как проверять скорость загрузки сайта?


Быстрый удобный сайт щедрый источник продаж. Скорость загрузки страниц конкурентное оружие и основа успеха в интернете. Важно стремиться улучшать этот параметр и обязательно контролировать его доступными средствами.

Гонка за покупателем


Компании и предприниматели в интернете борются за сердца пользователей своих потенциальных клиентов. Сайты становятся все более красивыми, информативными, функциональными. В ход идут орудия SEO, SMM и контекстной рекламы. Задействуются любые средства интернет-маркетинга лишь бы оказаться на передовой поисковой выдачи.

Можно вложить уйму сил и денег в дизайн, контент, пиар и расшаривание сайта в сети но остаться не у дел. И все лишь потому, что ресурс слишком медленный.

Почему так важна скорость?


Работа в интернете это серфинг. Человек легко переходит со страницы на страницу, с сайта на сайт. За короткий промежуток времени совершаются десятки кликов, переходов, просмотров страниц.

Пользователь ограничен во времени. Ему всегда некогда. Он спешит открыть для себя новые уголки бескрайнего интернет-пространства.

Время главная ценность для человека, и особенно для интернет-пользователя.

К тому же, в интернете всегда есть выбор. Поисковики выдают по одному запросу десятки, а то и сотни сайтов похожей тематики.

Простой пример:

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


Результаты поисковой выдачи по запросу робот-пылесос купить в регионе Москва

Не долго думая Аркадий выбирает сайт, наиболее подходящий своему запросу например тот, где большой ассортимент, предлагают акции и есть гарантии.

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

В тот момент, когда страница, наконец, открывается Аркадий уже закрыл вкладку и выбирает пылесос на соседнем сайте конкурента.

Факт

70% пользователей с меньшей вероятностью совершат покупку (и маловероятно, что вернутся в будущем), если время загрузки дольше, чем ожидалось.

По данным опроса Unbounce

Как скорость влияет на SEO?


Скорость загрузки сайта один из факторов ранжирования. Google сообщил об этом еще в 2010 году. Ну а к 2020-м гг. значимость показателя page speed только выросла.

Быстродействие прямо влияет на SEO, и вот почему:

  1. Поисковые системы напрямую замеряют скорость загрузки, повышая приоритет быстрых сайтов.
  2. Поисковики следят за поведением людей: если страницы реже посещают и чаще закрывают рейтинг понижается.

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

Высокая скорость загрузки первоочередная необходимость. Страницы должны открываться как можно быстрее почти мгновенно. Для этого нужны соответствующие технические решения.

Какой сайт быстрый, а какой нет?


Скорость загрузки сайта зависит от суммы факторов, в том числе от качества интернет-соединения на стороне пользователя, вида и настроек браузера, типа устройства. Но если брать самые средние показатели, быстродействие должно составлять 2-3 секунды.

Задержка в 5-7 секунд еще допустима. Но если контент загружается более 10 секунд нужно принимать меры.

64% пользователей ожидают, что страницы будут загружаться не более 4 секунд.

В общем и целом, быстрым следует считать такой сайт, который не раздражает пользователя. Страницы ресурса должны загружаться достаточно оперативно как минимум, не хуже, чем у основных конкурентов и в среднем по интернету.

Как измеряется скорость?


Для проверки скорости сайта можно использовать доступные сервисы. Самый популярный из них PageSpeed Insights от Google.


Пример работы сервиса PageSpeed Insights

Page Speed Insights замеряет скорость загрузки на десктопах и мобильных устройствах, а также выдает рекомендации по ускорению работы.

Еще один инструмент от Google сервис Lighthouse, встроенный в браузер Chrome. С его помощью удобно тестировать страницы, просто заходя на них и нажимая кнопку теста.

Для проверки скорости мобильной версии предназначен сервис Test My Site.

Альтернативные инструменты


Не желательно пользоваться одним выбранным сервисом для замера быстродействия. Результаты проверок не всегда точны, да и слишком много факторов влияет на скорость страниц.

Вот список альтернативных инструментов для перепроверки результатов:

  • GTmetrix;
  • Pingdom Tools;
  • WebPagetest;
  • UpTrends;
  • Loading.express;
  • SiteSpeed.me.

Анализировать page speed можно и по отчетам веб-аналитики: в сервисах Яндекс.Метрика и Google Analytics. Здесь наглядно показывается, как соотносится скорость загрузки с отказами, конверсией и различными действиями пользователей.

Почему сайт медленный?


Быстродействие определяется двумя основными факторами:

  1. Скорость работы сервера, где хранятся файлы сайта.
  2. Программная часть самого ресурса.

Страницы могут медленно открываться, если на сервере проблемы или он расположен географически далеко.

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

Как разогнать сайт?


Работы по ускорению сайта следует доверять исключительно компетентным разработчикам. В процессе оптимизации важно соблюсти баланс между техническими характеристиками, юзабилити, функционалом и контентом.


Код сайта

В числе возможных решений: грамотный подбор или смена сервера, доработка программной части и сокращение кода, архивация данных, настройка скриптов, обработка контента, обновление программного обеспечения.

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

Всего лишь односекундная задержка загрузки сайта снижает конверсию на 7%!

Постоянный мониторинг page speed


Работа на ускорение сайта дает результаты в виде продвижения в ТОП, роста посещаемости и увеличения продаж. Нужно контролировать page speed и улучшать показатель, одновременно повышая качество и привлекательность ресурса для пользователей.
Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru