Get Mystery Box with random crypto!

maxsite

Логотип телеграм -каналу maxsite — maxsite M
Логотип телеграм -каналу maxsite — maxsite
Адреса каналу: @maxsite
Категорії: Технології
Мова: Українська
Передплатники: 81
Опис з каналу

О MaxSite CMS, PHP, html-вёрстке, программировании и т.д. Этот канал я использую как дополнение к своему сайту maxsite.org

Ratings & Reviews

3.50

2 reviews

Reviews can be left only by registered users. All reviews are moderated by admins.

5 stars

0

4 stars

1

3 stars

1

2 stars

0

1 stars

0


Останні повідомлення 3

2021-12-04 10:52:26 10 = 0.333sec // cacheTimeL1 отключён
10 = 0.039003sec // первый запрос
10 = 0.005001sec // второй, третий и т.д.

100 = 3.573sec // cacheTimeL1 отключён
100 = 0.096006sec // первый запрос
100 = 0.048003sec // второй, третий и т.д.

500 = 17.443sec // cacheTimeL1 отключён
500 = 0.325018sec // первый запрос
500 = 0.195011sec // второй, третий и т.д.

1000 = > 30 секунд (вылет по ошибке) // cacheTimeL1 отключён
1000 = 0.715041sec // первый запрос
1000 = 0.416024sec // второй, третий и т.д.

Ещё раз — это количество обращений в секунду. Чтобы понять насколько это большие числа, представьте себе, что сайт будет посещать 1 посетитель в секунду. Это даст 86 400 хитов в сутки. Это очень большая посещаемость. А тут цифры аж на три порядка выше (1000 запросов в секунду это 86 400 000 хитов в сутки)! :-)

Здесь важный момент — это не реальные http-запросы, поскольку я сомневаюсь, что http-сервер вообще такое допустит — это ближе к DDoS-атаке. Это количество итераций по чтению файлов страниц через readPages(). Можно сказать, что это скорость работы на уровне PHP. Это говорит о том, что при очень высокой посещаемости, «тормозов» со стороны Albireo Framework просто не возникнет.

#albireo
50 views07:52
Відкрити / Коментувати
2021-12-04 10:52:25 Расскажу об небольшой доработке Albireo Framework , позволяющем ему работать в режиме очень большого количества http-запросов.

Чтобы было понятно, кратко остановлюсь как работает Albireo.

Когда происходит обращение к сайту, Albireo последовательно выполняет функции, среди которых readPages(). Здесь получаются данные из всех php-файлов страниц.

Она циклично обходит все php-файлы каталога albireo-data и вытягивает из них всю служебную информацию. Формируется массив, который сохраняется в файловом кэше. Таким образом при повторном обращении в реальности данные уже берутся из кэша.

Но с кэшем всегда есть проблема его устаревания. Изменили файл, что-то удалили, добавили, кэш приходит в негодность. Чтобы отслеживать такие изменения используется алгоритм, когда функция кэша сканирует файлы и получает их имена и дату модификации. Формируется «снимок» (snapshot) всего каталога (включая подкаталоги), на основании которого вычисляется полином CRC32 и сохраняется в отдельном малюсеньком файле кэша.

То есть когда произойдёт любое изменение в каталоге albireo-data, кэш сразу же это определит сравнивая новый и старый snapshot. Если они не совпадают, значит что-то изменилось и кэш отмечается невалидным. Он строится заново.

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

Если мы имеем «типовую» посещаемость сайта (до тысячи или десятка тысяч хитов в сутки), то любой сервер даже не пикнет о нагрузке. Но что если посещаемость увеличивается на порядок?

Предположим у нас будет посещаемость в 10 обращений в секунду. Все эти 10 http-запросов в итоге создадут некоторую нагрузку на диск сервера в функции, которая проверяет snapshot'ы. Хотя десяток одновременных запросов к диску не создадут для него сверхвысокой нагрузки, но что если увеличить посещаемость до 100 запросов в секунду? А если 500 или 1000?

Чтобы проверить свои догадки, я смоделировал такую нагрузку и получил, что при 500 запросов в секунду страница может формироваться примерно 17 секунд. Это на моём обычном ноутбуке с обычным HDD. На настоящем сервере, скорее всего, время будет меньше, но сейчас речь идёт об относительных числах.

Главная сложность в том, что дисковые операции достаточно затратная операция для сервера, поэтому даже простое сканирование файлов, требует некоторого времени. Очевидно, что 500 запусков функции (в цикле) создаст существенную нагрузку. Чтобы её снять, нужно сделать так, чтобы формирование «снимка» происходило только в первом обращении, а остальные 499 считали, что snapshot верный и его не нужно проверять.

Именно такую штуку я и реализовал в Albireo Framework. В файле конфигурации можно использовать ключ cacheTimeL1 (время в секундах), например 60. Если к сайту будет много обращений в течение этой минуты, то snapshot кэша будет обновляться не чаще, чем эти же 60 секунд. В теории возможна ситуация, когда данные изменились, но кэш это не определит при условии, что между изменениями прошло менее 60 секунд. Поэтому для таких ситуаций можно уменишить время cacheTimeL1. Эффективным будет даже несколько секунд. Если указать 0, то никаких задержек не будет (сайт будет работать как и раньше). По умолчанию используется 10 секунд.

Насколько это ускоряет работу сайта? Если честно, то я и сам не ожидал такого результата.

| Опять же речь о моём ноуте, на хостинге цифры скорее всего будут ещё лучше.

Если у нас происходят редкие обращения к странице, например раз в минуту, то в обычном режиме время обхода файлов будет от 0.034sec до 0.15sec. Если же это повторное обращение за время cacheTimeL1, то скорость работы увеличивается до 0.001000sec — ускорение в 30-100 раз.

Теперь многократно увеличим кол-во запросов:
46 views07:52
Відкрити / Коментувати
2021-12-03 11:39:08 Только что жаловался на Альпину, что слишком часто выходят версии, так за последние три дня вышло три новых. :-) Забавно...

Я сегодня сделал новый опрос на сайте, если будет время, ответьте на несколько вопросов. Мне это нужно, чтобы оценить текущую аудиторию и её интересы.

https://maxsite.org/page/interview-2021-12
54 views08:39
Відкрити / Коментувати
2021-12-01 14:12:38 Выложил обновление MaxSite CMS 108.2.

В Default-шаблон добавил новый модуль base2 — он для построения flex-сетки. Там 2 колонки. Я бы добавил ещё какие-то базовые каркасы. Если есть пожелания, пишите в группу, обсудим.

Также я обновил страницу mfstore, чтобы дизайн получше смотрелся.

И были правки по AlpineJS. Раньше была вторая версия, теперь третья. С этим связаны и две новые функции mso_add_lazy() для загрузки произвольного html-блока в конце BODY и mso_add_preload_html() для секции HEAD с preload.

Такая форма загрузки (в HEAD кидаем ссылку на preload, а в конце BODY уже сам файл) уже используется в MaxSite CMS с помощью функции mso_add_file(), где lazy-загрузка — это второй аргумент функции. А функция mso_add_preload() уже формирует из файла правильный html-код для preload. Всё работает без проблем, но я столкнулся с тем, что автор AlpineJS выпускает новые версии библиотеки очень часто. Буквально вчера я обновил верисю на 3.5.1, а сегодня увидел, что вышла новая — 3.6.1. Обновлять js-файл в шаблоне каждую неделю — это уже слишком, поэтому я решил, что лучше уж загружать библиотеку из официального репозитория.

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

// это lazy — готовый html-код
mso_add_lazy('');

// а это preload — также готовый html-код
mso_add_preload_html('');

MaxSite CMS сама автоматом раскидает этот html.
37 views11:12
Відкрити / Коментувати
2021-11-26 12:33:54 Вторая статья о хранении деревьев в базе
https://maxsite.org/page/sql-tree2
35 views09:33
Відкрити / Коментувати
2021-11-25 13:37:59 Ещё две статьи про хранение деревьев в базах данных. Первая о методе Adjacency List
https://maxsite.org/page/sql-tree1
24 views10:37
Відкрити / Коментувати
2021-11-23 11:38:23 Немного о проектировании баз
https://maxsite.org/page/database-design
13 views08:38
Відкрити / Коментувати
2021-11-19 14:08:40 Обещанная статья об использование SQLite в PHP
https://maxsite.org/page/sqlite-php
35 views11:08
Відкрити / Коментувати
2021-11-16 12:03:30
Подходящая для вас цена на шаблоны MaxSite CMS (по которой вы реально готовы их приобретать)
Anonymous Poll
0%
до 10$
25%
до 20$
13%
до 30$
13%
до 40$
0%
50..70$
0%
70..100$
0%
более 100$
25%
не готов покупать шаблон
25%
не покупаю, поскольку делаю всё сам
8 voters15 views09:03
Відкрити / Коментувати
2021-11-16 12:01:25 По поводу SQLite и PHP. Да, будет статья, где я расскажу, как это можно сделать. Но поскольку в PHP для работы с базами используется PDO, который достаточно «многословен», то будут примеры для Albireo. Библиотека уже в комплекте фреймворка. Я более подробно расскажу что можно с ней делать.

Ещё небольшое объявление.

Я больше не продаю шаблон MF. Те, кто успел его купить, молодцы! Кто не успел, всё, поезд ушёл. :-)

Вместо MF я буду предлагать недорогие шаблоны под определённый дизайн и с ограниченной (по сравнению с MF) функциональностью. Это позволяет снизить цену на шаблоны. Также можно будет отдельно докупить прочие модули, компоненты, цветовые дизайны, скажем так, поштучно. Цена будет невысокой и можно будет выбрать ровно то, что нужно.

Что касается цен на шаблон, я подготовил небольшой опрос, если не сложно, выберите подходящий для вас вариант. :-)
16 viewsedited  09:01
Відкрити / Коментувати