Но есть одна застарелая «болезнь» у LS, которая тоже могла приводить к тому, что движок работал «вхолостую», сжирая ресурсы сервера и задерживая загрузку страницы. «Болезнь» эта — обработка движком несуществующих статичных файлов, такких, как картинки, CSS-файлы, JS-файлы и т.д. Например, что будет в LS, если в топик сначала загрузить какую-то картинку, а потом ее удалить с диска? Или если указать неверный (отсутствующий) CSS-файл? Допустим, будет у нас на странице такой вот код:
<link rel='stylesheet' type='text/css' href='https://altocms.ru/default/style.css' />
Но при этом сам файл style.css в папке default отсутствует. И что у нас получится?
А получится у нас вот что: сначала веб-сервер постарается этот файл у себя найти. И не найдя, передаст управление движку. А движок сначала загрузит все плагины и обязательные модули, подключившись попутно к базе данных, потом попробует передать обработку какому-нибудь экшену, потом выяснит, что нет экшена, который должен отрабатывать эту ссылку, и передаст управление экшену ActionError, которые сформирует сообщение об ошибке, потом будет вызваен Viewer, который загрузит соответвтующий шаблон, отрисует страницу об ошибке, и отдаст эту страницу браузеру, дополнив ее кодом 404 (т.е. страница не найдена).
Видите, как много телодвижений? И все это нещадно поедает и память, и процессорное время сервера, и значительно увеличивает время отображения страницы у посетителя.
Теперь я расскажу, как это организовано в Alto CMS: когда движок принимает управление на себя, он проверяет, а не запрашивается ли статичный файл? И если это так, то немедлено прекращает выполнение, выдав браузеру код 404. Все! Никакие плагины, модули, вьюеры не подгружаются — все, как ножом обрезается.
Конечно, когда посещаемость сайта не такая уж и большая, лишняя пара-другая секунд погоды особо не сделают, и можно об этом даже не думать. Но когда трафик растет, начинается борьба за каждую долю секунды. И тут решение Альто будет как нельзя кстати.
13 комментариев
Если это тонкий намек на то, что статику лучше отсеивать на уровне веб-сервера — соглашусь охотно. Но мы не оринетируемся на конкретный веб-сервер, и на продвинутых юзеров, которые умеют его настраивать.
Я пытался открыть несуществующую картинку altocms.ru/404.gif и обратил внимание, что отдаётся корректный заголовок 404, но самого докумениа с текстом об ошибке нет
altocms.ru/кириллица.gif вернёт страницу
altocms.ru/latin.png белый экран