ОБЛАСТЬ ТЕХНИКИ
[001] Данное техническое решение, в общем, относится к вычислительной области техники, а в частности к способам управления данными веб-сайта.
УРОВЕНЬ ТЕХНИКИ
[002] В настоящее время активное развитие сети Интернет в последние десятилетия привело к быстрому росту технических решений, позволяющих упростить разработку и создание веб-сайтов. На рынке стали появляться не только новые языки веб-программирования, но и готовые наборы инструментов для быстрого создания веб-сайтов. Такой набор инструментов называется Content management system (далее - "CMS"). Назначение такой системы - дать возможность разработчику (веб-программисту) как можно проще и быстрее создать сайт, после чего останется только наполнить его контентом.
[003] Рынок Интернета развивается стремительно и как следствие, потребности посетителей веб-сайтов также растут. Сайты стали сложнее не только по функциональным возможностям, но и по дизайну - появились адаптивные версии верстки под планшетные устройства, мобильные телефоны, широкоформатные мониторы. Повышение сложности сайтов напрямую повлияло на развитие CMS - появилась необходимость разделения систем по направлениям, с различными наборами инструментов.
[004] Наличие подробной технической документации системы упрощает процесс веб-разработки, но сама CMS без дополнительных инструментов не так быстро эволюционирует, как подключаемые к ней инструменты. Любые серьезные изменения основного программного кода CMS могут повлиять на работоспособность всех инструментов, которые были установлены на сайтах до изменений. Получается, при изменении ядра CMS (например, оптимизация, которая немного уменьшает нагрузку на веб-сервер или экономит место в памяти) необходимо обеспечить полную совместимость всех существующих к нему инструментов, в том числе написанных сторонними разработчиками. Это трудозатратно, если, например, изменения в ядре были связаны с архитектурой. Поэтому изменять работу ядра CMS просто не выгодно. Поэтому новые инструменты и технологии, которые появлялись уже после начала эксплуатации какой-либо системы, подключались к ней как наборы инструментов и не входили в состав ядра.
[005] Примером такого инструмента является Memcached, который обеспечивает кэширование в оперативную память. Основное назначение этого инструмента - по ключу положить данные в память и быстро их вернуть по соответствующему запросу. В настоящее время этот инструмент нашел свое применение в ядре многих крупных проектов, например, Wikipedia, YouTube, Facebook и другие.
[006] Аналогичным инструментом является Redis, который имеет расширенный функционал: поддерживает сложные типы данных (например, списки), поддерживает высокоуровневые операции (например, сортировка), имеет встроенную поддержку репликации данных на другие сервера с целью защитить данные и повысить скорость записи/чтения данных при нагрузке.
[007] Существенным минусом Memcached и Redis является необходимость отслеживать актуальность данных и хранить информацию о ключах, по которым данные можно получить. При существенном масштабировании сайта это сильно усложняет сам процесс веб-разработки страниц.
[008] Из уровня техники известен патент США № US 8924411 B2 "System and method for the dynamic provisioning of static content", патентообладатель: Open Text SA, опубликовано: 31.05.2005.
[009] Ближайшим аналогом может быть признано техническое решение, в котором раскрываются варианты осуществления системы и способа для динамического предоставления статического контента. В одном варианте осуществления информация, представленная в системе доставки контента, может быть обновлена на основе информации, опубликованной в системе управления контентом (CMS). Один вариант осуществления может взаимодействовать с системой доставки контента и системой управления контентом на уровне страницы. Более конкретно, зависимости контента на страницах, использующих один и тот же контент или часть (и), могут своевременно отслеживаться. После получения уведомления об изменении содержимого или его части из системы управления контентом система генерации контента может определять на основе зависимостей, на какие страницы влияет изменение, и на основе данного определения динамически генерировать обновленные данные на всех затронутых страницах. Затем обновленные страницы могут быть сохранены и/или перенесены на веб-уровень для доставки конечным пользователям.
[0010] В данном изобретении основным принципом является поддержание актуальности частей страниц посредством отслеживания изменения данных и обновлении ранее сохраненных частей страниц в энергонезависимой памяти. Недостатком является то, что вопрос ускорения первичной генерации страниц, еще не откэшированных не решается.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0011] Данное техническое решение направлено на устранение недостатков, свойственных решениям, известным из уровня техники.
[0012] Технической задачей или проблемой, решаемой в данном техническом решении, является обработка и управление динамическими и статическими данными веб-сайта.
[0013] Техническим результатом, проявляющимся при решении вышеуказанной технической задачи, является повышение скорости обработки и управления данными веб-сайта.
[0014] Дополнительным техническим результатом является рациональное использование оперативной памяти за счет отсутствия хранения избыточных данных. Динамические части разных веб-страниц могут пользоваться одним и тем же кэшем. Причем, для каждой динамической части могут быть заданы условия, в зависимости от которых он меняет результат своего вычисления (далее - состояние динамической части). Кэширование происходит только при изменении данных, что позволяет избежать дублей данных.
[0015] Указанный технический результат достигается благодаря осуществлению способа управления данными веб-сайта, в котором формируют по меньшей мере одну статическую часть веб-страницы, и по меньшей мере одну динамическую часть веб-страницы, которые хранятся в энергонезависимой памяти; далее получают от по меньшей мере одного пользователя запрос к веб-сайту; затем проверяют наличие файла кэша в энергонезависимой памяти для каждой динамической части веб-страницы полученного на предыдущем шаге запроса, причем при наличии файла кэша в энергонезависимой памяти загружают его содержимое в динамическую часть веб-страницы; при отсутствии файла кэша в энергонезависимой памяти во время проверки осуществляют вычисление динамической части веб-страницы на основании запроса к веб-серверу, причем для вычисления предварительно получают данные из оперативной памяти, в случае их наличия; иначе получают данные из энергонезависимой памяти.
[0016] В некоторых вариантах реализации изобретения запрос имеет тип POST или GET.
[0017] В некоторых вариантах реализации изобретения запрос содержит ссылку на веб-сайт с параметрами.
[0018] В некоторых вариантах реализации изобретения при отсутствии файла кэша в энергонезависимой памяти во время проверки осуществляют вычисление динамической части веб-страницы на основании запроса к вебсерверу, причем при изменении данных модифицируют их сначала в энергонезависимой памяти, а потом в оперативной.
[0019] В некоторых вариантах реализации изобретения при отсутствии файла кэша в энергонезависимой памяти во время проверки осуществляют вычисление динамической части веб-страницы на основании запроса к вебсерверу, причем при изменении данных модифицируют их сначала в оперативной памяти, а потом в энергонезависимой.
[0020] В некоторых вариантах реализации изобретения изменением данных является создание или обновление, или удаление.
[0021] В некоторых вариантах реализации изобретения при изменении данных, которые использовались при вычислении динамических частей, удаляют файлы кэша этих динамических частей.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0022] Признаки и преимущества настоящего технического решения станут очевидными из приведенного ниже подробного описания и прилагаемых чертежей, на которых:
[0023] На Фиг. 1 показан пример реализации первичной загрузки веб-сайта.
[0024] На Фиг. 2 показан пример реализации обработки запроса к веб-серверу на веб-сайте;
[0025] На Фиг. 3 показан процесс формирования кэша динамических блоков.
[0026] На Фиг. 4 показан пример реализации управления данными веб-сайта в виде блок-схемы.
[0027] На Фиг. 5 показан вариант реализации вычисления динамической части веб-страницы.
ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
[0028] Данное техническое решение может быть реализовано на компьютере или другом устройстве обработки данных в виде автоматизированной системы или машиночитаемого носителя, содержащего инструкции для выполнения вышеупомянутого способа.
[0029] Техническое решение может быть реализовано в виде распределенной компьютерной системы, компоненты которой являются облачными или локальными серверами.
[0030] В данном решении под системой подразумевается компьютерная система или автоматизированная система (АС), ЭВМ (электронно-вычислительная машина), ЧПУ (числовое программное управление), ПЛК (программируемый логический контроллер), компьютеризированная система управления и любые другие устройства, способные выполнять заданную, четко определенную последовательность вычислительных операций (действий, инструкций).
[0031] Под устройством обработки команд подразумевается электронный блок либо интегральная схема (микропроцессор), исполняющая машинные инструкции (программы).
[0032] Устройство обработки команд считывает и выполняет машинные инструкции (программы) с одного или более устройства хранения данных. В роли устройства хранения данных могут выступать, но, не ограничиваясь, жесткие диски (HDD), флеш-память, ПЗУ (постоянное запоминающее устройство), твердотельные накопители (SSD), оптические приводы, облачные хранилища данных.
[0033] Программа - последовательность инструкций, предназначенных для исполнения устройством управления вычислительной машины или устройством обработки команд.
[0034] Веб-страница (англ. Web-page) - компонент веб-сайта, файл, размещенный на сервере [ГОСТ Р 52872-2012].
[0035] Кэш (англ. (memory) cache - запас памяти) - область памяти, которая служит для буфера обмена, как правило имеет большую скорость, чем основная память.
[0036] Content Management System (система управления контентом, сокр. CMS) - информационная система для обеспечения и организации совместного процесса создания, редактирования и управления контентом.
[0037] Оперативная память (также оперативное запоминающее устройство, ОЗУ, англ. RAM) - память, часть системы памяти ЭВМ, в которую процессор может обратиться за одну операцию (jump, move и т.п.). Предназначена для временного хранения данных и команд, необходимых процессору для выполнения операций. Оперативная память передает процессору данные непосредственно, либо через кэш-память.
[0038] Вариант реализации первичной загрузки веб-страницы показан на Фиг. 1 в виде блок-схемы.
[0039] Способ управления данными веб-сайта может быть реализован последовательностью вычислительных шагов как это показано в виде блок-схемы на Фиг. 4.
[0040] Шаг 410: формируют по меньшей мере одну статическую часть вебстраницы, и по меньшей мере одну динамическую часть веб-страницы, которые хранятся в энергонезависимой памяти.
[0041] Предварительно получают запрос от пользователя, который осуществляет действие на веб-сайте.
[0042] Для того, чтобы максимально эффективно использовать энергонезависимую память для хранения вычисленных страниц, статическую часть веб-страницы, которая не меняется, хранят отдельно от динамических частей, которые зависят от параметров загрузки. Отдельное хранение динамических частей от статических позволяет их использовать повторно на разных страницах, экономя память и вычислительные мощности. В статической части веб-страницы представлена статическая, постоянная и не изменяющаяся информация. Изменить ее можно, но для этого необходимо внести соответствующие корректировки в программный код веб-страницы. Обычно файл статической части веб-страницы имеет HTML-формат. Веб-разработчик пишет HTML-код разметки, формируя при этом информационное наполнение сайта, после чего файлу присваивается имя, а затем страница загружается на веб-сервер и становится доступной пользователям Интернета. Например, на корпоративном сайте статическая часть веб-страницы может содержать сведения об истории компании, основных направлениях ее деятельности и т.п. В некоторых вариантах реализации веб-сервер при выдаче веб-страниц на оборудование пользователя осуществляет проверку того, изменилась или нет статическая часть страницы. Дело в том, что статические части страницы тоже иногда могут меняться. Эти изменения происходят гораздо реже, чем в случае динамических частей. Они носят не систематический, а эпизодический характер и связаны, как правило, с обновлением стиля сайта его создателями. Например, разработчик сайта решил заменить какую-либо картинку на странице или просто поменял фон всего сайта. Для более корректной работы предложенных способа и системы, целесообразно отслеживать указанные изменения статической части страниц и вносить соответствующие им поправки. В этих целях принято использовать механизм контрольных сумм, работающий по следующему принципу. Определяется контрольная сумма статической части и сохраняется в запоминающем устройстве в служебных данных кэша. При повторном заходе пользователя на страницу, при выполнении ее динамической части, заново вычисляется контрольная сумма обновленной страницы и сравнивается со старой суммой. Если они не совпали, то сервер делает вывод, что статическая часть страницы устарела и в кэш перезаписывается новая страница. Таким образом система автоматически, без участия человека отслеживает подобные изменения в статической части.
[0043] В некоторых вариантах реализации изобретения может использоваться кэш микропроцессора - сверхоперативная память, используемая микропроцессором компьютера для уменьшения среднего времени доступа к компьютерной памяти. Кэш использует небольшую, очень быструю память (обычно типа SRAM), которая хранит копии часто используемых данных из основной памяти.
[0044] В некоторых вариантах реализации изобретения может использоваться память графического процессора (GPU).
[0045] Принципиальное отличие динамической части веб-страницы от статической состоит в том, что ее содержимое является не постоянным, а может изменяться. Содержимое формируется в зависимости от пожеланий пользователя, а точнее - на основании запросов, созданных посетителями и отправленных на веб-сервер. Наиболее типичный пример динамической части веб-сайта - это страница с результатами поиска, выданными поисковой системой (например, www.google.ru) на основании отправленного пользователем поискового запроса. Другим примером реализации динамической части веб-страницы является интернет-магазин, где посетитель с помощью опций указывает, какой товар и с какими свойствами его интересует, отправляет запрос (для этого обычно предназначена соответствующая кнопка), и через пару секунд получает на экран графического интерфейса пользователя перечень товаров, соответствующих установленным им критериям.
[0046] Результат вычисления динамических частей на веб-странице может меняться на основании заранее заданного набора параметров загрузки, которые включат параметры запроса и уникальный текстовый идентификатор, которые указаны ниже.
[0047] В общем случае, этап обнаружения в HTML-коде веб-страницы кода, относящегося к динамическим частям, выполняется веб-сервером путем анализа ее HTML-кода при помощи соответствующего распознающего программного модуля. При этом согласно предпочтительному варианту изобретения, обнаружение динамических частей происходит по специальным указаниям, расставленным в коде страницы разработчиками сайта. Например, установленная на веб-сервере CMS-система анализирует код веб-страницы при сохранении ее на сервер. Если CMS-система встречает установленные разработчиком сайта программные указания, то система заменяет их на собственные метки, по которым она впоследствии определяет места замены устаревших данных на актуальные. В этом случае этапы обнаружения динамических частей и их замены JS-скриптом протекают наиболее быстро, что дает дополнительный выигрыш в скорости при отображении веб-страницы.
[0048] Хранимые на веб-сервере веб-страницы могут быть созданы с использованием компонентов с шаблонами CMS-системы или других модификаторов вывода. Как вариант, код страниц может быть написан программистом на языке низкого уровня, без использования CMS системы и другого подобного программного обеспечения, управляющего контентом веб-страницы.
[0049] В данном техническом решении под веб-сервером понимается программно-аппаратный комплекс, доступный пользователю через Интернет и выполненный с возможностью приема HTTP-запросов пользователей, обычно от веб-браузеров, и выдающий им HTTP-ответы, как правило, вместе с HTML-страницей, изображением, файлом, медиа-потоком или другими данными. В качестве конкретных примеров веб-сервера можно назвать HTTP-серверы Apache, US, Cherokee и Resin на базе операционных систем Linux, BSD, Mac OS, Microsoft Windows, Novell NetWare, BeOS, не ограничиваясь. Неисчерпывающий список функций стандартного веб-сервера включает в себя следующее:
[0050] - Прием запросов от веб-браузеров по протоколу стандарта HTTP с использованием сетевых протоколов TCP/IP;
[0051] - Выполнение поиска и отсылки файлов с гипертекстом или каких-либо документов в браузер по протоколу HTTP;
[0052] - Обслуживание и обработка запросов, типа: mailto: …, FTP, Telnet и т.п.;
[0053] - Запуск прикладных программ на веб-сервере с последующей передачей и возвратом параметров обработки через стандарт интерфейса CGI;
[0054] - Работа и обслуживание навигационных карт изображений (Image map);
[0055] - Загрузка Javascript-приложений;
[0056] - Авторизация пользователей и их аутентификация;
[0057] - Ведение регистрационного журнала обращений пользователей к различным ресурсам;
[0058] - Автоматизированная работа веб-страниц;
[0059] - Поддержка страниц, которые генерируются динамически;
[0060] - Поддержка работы протокола HTTPS для защищенных соединений с клиентами. Шаг 420: получают от по меньшей мере одного пользователя запрос к веб-сайту.
[0061] Итак, браузер оборудования пользователя, например, мобильного устройства связи, посылает клиентский запрос на веб-сервер с адресом вебстраницы для, например, покупки выбранного пользователем товара для покупки в интернет-магазине. Веб-сервер, получив запрос на веб-страницу, предпринимает действия по сборке HTML-кода этой страницы, в ходе которой выполняется следующее:
[0062] - выполнение программного кода динамических частей, относящегося к расчету корзины для данного пользователя, выводу телефона и времени работы пункта доставки и цены товара. Данный этап может проводиться с учетом проверки статуса и прав доступа пользователя, а также других возможных условий формирования веб-страницы, и включает в себя выборку необходимых данных из баз данных, относящихся к клиентам, ценам и ассортименту, фильтрацию и сортировку этих данных и прочие действия, необходимые для формирования HTML-кода динамических частей. В качестве программного кода обычно используется PHP-код, но может также выступать Perl, ASP, JSP и пр. Результатом этапа выполнения программного кода динамических частей является получение HTML-кода, соответствующего указанным динамическим частям;
[0063] - формирование HTML-кода веб-страницы, включающего HTML-код статической части и HTML-код динамических частей, полученный на предыдущем этапе путем выполнения их программного кода;
[0064] - выдача сформированного HTML-кода веб-страницы на оборудование пользователя с последующим отображением веб-страницы браузером пользователя.
[0065] Например, это может быть URL-запрос (со всеми параметрами GET и/или POST). Метод запроса POST предназначен для передачи и получении данных любых размеров, в отличии от метода GET, где ограничения могут быть как на уровне веб-сервера, так и у веб-браузера пользователя на его устройстве. Поэтому POST может использоваться для загрузки файла или представления заполненной веб-формы. В рамках GET-запроса некоторые данные могут быть переданы в строке запроса URI, указывающие, например, условия поиска, диапазоны дат, или другую информацию, определяющую запрос. В рамках POST запроса произвольное количество данных любого типа может быть отправлено на веб-сервер в теле сообщения запроса. Поля заголовка в POST-запросе указывают на тип содержимого.
[0066] Также в качестве параметра загрузки может быть указан сам тип запроса (GET или POST), например, в символьном или численном формате.
[0067] Или в качестве параметра загрузки могут быть указаны Cookies-файлы (например, если веб-сайт хранит данные о поведении пользователя в cookies и на веб-странице необходимо реализовать раздел «Вы смотрели ранее» на основании этих данных). Cookies-файл - небольшой фрагмент данных, отправленный веб-сервером и хранимый на мобильном устройстве связи или компьютере пользователя. Веб-клиент (обычно веб-браузер) всякий раз при попытке открыть страницу соответствующего веб-сайта пересылает этот фрагмент данных веб-серверу в составе HTTP-запроса.
[0068] Также в качестве параметра загрузки может использоваться текстовый идентификатор динамической части веб-сайта, позволяющий различным динамическим частям веб-сайта использовать общий кэш. Если у двух разных динамических частей веб-сайта будет одинаковый идентификатор, то место хранения кэша в энергонезависимой памяти будет одинаковым при одинаковых параметрах загрузки. Это позволяет вычислять динамические блоки один раз, после чего использовать уже вычисленный кэш.
[0069] Используемая в изобретении энергонезависимая память предназначена для записи и хранения данных, используемых веб-сервером, в частности, динамических и статических частей HTML-страниц, контента, необходимого для наполнения HTML-страниц, вспомогательной информации и пр. В качестве энергонезависимой памяти может использоваться жесткий диск веб-сервера, энергонезависимая память мобильного устройства связи пользователя или память других компьютеров, размещенных в сети Интернет.
[0070] Динамическая часть веб-сайта может иметь любой допустимый размер, например как одно слово-ссылку "Вход", которое после авторизации пользователя меняется на "Выход", так и меню, фильтры, товары и даже целые веб-страницы веб-сайта.
[0071] Шаг 430: проверяют наличие файла кэша в энергонезависимой памяти для каждой динамической части веб-страницы полученного на предыдущем шаге запроса.
[0072] В момент загрузки веб-страницы с веб-сервера по запросу веб-браузера происходит проверка для каждого динамического блока, расположенного на данной веб-странице: сохранены ли результаты предыдущих вычислений для текущих параметров загрузки и идентификатора, выполненные при предыдущей загрузке. На данном шаге проверяют наличие файла кэша в энергонезависимой памяти веб-сервера, где хранятся результаты предыдущих вычислений. Если файл присутствует, то динамический блок не вычисляется, а результат загружается из файла кэша. Иначе динамический блок вычисляется, а результаты записываются в новый создаваемый файл кэша.
[0073] При отсутствии файла кэша в энергонезависимой памяти веб-сервера во время проверки осуществляют вычисление динамической части веб-страницы на основании параметров загрузки, причем для вычисления предварительно получают данные из оперативной памяти, в случае их наличия; иначе получают данные из энергонезависимой памяти.
[0074] В данном техническом решении могут использовать оперативную память (RAM) и/или статическую оперативную память (SRAM), и/или память графического устройства (память GPU).
[0075] Чтобы получить ссылку на файл кэша динамической части в виде URL, осуществляют преобразование параметров загрузки таким образом, чтобы для одного и того же набора параметров загрузки возвращалась одна и та же ссылка на файл. Если параметры загрузки не участвуют в вычислении динамической части, то они не участвуют в формировании ссылки на файл кэша. Параметр загрузки может не участвовать в вычислении динамической части, если он не указан явно, или имеет флаг в системе о том, что может не использоваться и не является обязательным. Например, если динамическая часть для всех пользователей не изменяется при вычислении, то указан пользователь или нет не влияет на адрес файла кэша, так как пользователь не влияет на результат вычисления динамической части веб-страницы.
[0076] В параметрах загрузки так же используется уникальный идентификатор пользователя, например логин или ID пользователя (поле login), который может быть как численным, так и символьным. Такой подход позволяет кэшировать индивидуальное для каждого пользователя состояние динамических частей, который является посетителем веб-сайта. В некоторых вариантах реализации если пользователь является неавторизованным посетителем, то значение уникального идентификатора будет "-". Данный параметр загрузки является необязательным.
[0077] Также существует параметр Properties[i], который представляет собой массив данных, а именно упорядоченные параметры и их значения URL-запроса после символа "?" и до символа или конца строки (например, "sort_id=id", "sort_direct=1''), который также является необязательным параметром.
[0078] Параметр urlpage представляет собой адрес текущей страницы запроса пользователя (после первого символа '/' и до первого из символов '?', '.', '#' или конца url), который является необязательным или обязательным параметром, в зависимости от выбора веб-программиста.
[0079] Физически процесс кэширования динамического блока представляет собой сохранение результатов вычисления в файл по определенному адресу, который зависит от параметров загрузки, которые участвуют в вычислении динамической части, например: /cache/modulename/parametrurl/login/var.txt.
[0080] Поскольку необходимо сохранять только различающиеся результаты динамических частей по сравнению с предыдущей вычисленной частью с целью экономии места в энергонезависимой памяти, то используется однозначная функция преобразования набора параметров запроса в URL файла кэша. Так как на вычисление динамической части могут влиять не все параметры запроса, указываются только те, которые влияют на результат.
[0081] Для этого разделяют параметры загрузки на те, которые влияют на результат вычисления и нет (текстовый идентификатор, логин, URL). Запросы POST не кэшируются, т.к. они предназначены для обмена информации веб-сервера и веб-браузера пользователя без обновления целиком страницы. Поэтому кэшируются только GET-запросы.
[0082] Далее формируется уникальная ссылка на файл кэша, например, такого вида, причем расширение может быть любое, не ограничиваясь:
/{текстовый идентификатор}/{логин}/{параметры}.txt.
[0083] Если логин пользователя не участвует в вычислении динамической части веб-страницы, то ссылка на файл кэша будет без этого параметра загрузки иметь следующий вид:
/{текстовый идентификатор}/{параметры}.txt
[0084] Если и параметры не участвуют в формировании (текстовый идентификатор обязательно влияет на формирование URL, это позволяет использовать различным динамическим частям веб-страницы один и тот же кэш), то так:
/{текстовый идентификатор}.txt
[0085] В итоге URL кэша может иметь следующий вид "cache/modules/" + name + "/" + urlpage + "/" + login + "/" + properties[1] + "/" + … + "/" + properties[M] + ".txt", что представляет собой текстовую конкатенацию параметров.
[0086] Примеры URL на файл кэша могут быть следующими:
- "/cache/modules/header/-.txt" - динамическая часть шапки веб-сайта для неавторизованного пользователя.
- "/cache/modules/karusel.txt" - динамическая часть баннера, который не зависит ни от чего и может принимать только одно значение.
- "/cache/modules/control_table/users/admin/sort_id=id/sort_direct=1.txt'' - динамическая часть веб-страницы с текстовым идентификатором control_table в администраторской части, отвечающий за отображение данных (а в данном случае пользователей users), который был просмотрен пользователем сайта admin и отсортирован по столбцу идентификатора id в порядке убывания.
[0087] Результатом вычисления динамической части веб-страницы является следующий набор данных:
[0088] HTML - код динамической части, который необходимо разместить на веб-странице;
[0089] Javascript - код динамической части, который необходимо разместить на веб-странице;
[0090] Javascript - код, который запускается по событию onload при загрузке веб-страницы. Чтобы код javascript выполнялся при загрузке веб-страницы, его необходимо указать в параметре onload тега body в HTML-коде веб-страницы. Если на веб-странице располагается несколько динамических частей, которые используют onload при загрузке, то их необходимо скомпоновать в отдельный javascript-код, который будет помещен в событие onload.
[0091] CSS стиль;
[0092] POST - ответ в виде текстовой строки;
[0093] Дополнительный результат - данные в формате текстовой строки, если есть необходимость получать из динамической части дополнительную информацию. Может использоваться в том случае, если, например, данные сначала необходимо преобразовать в зависимости от результатов вычислений других динамических частей веб-страницы. Это поле позволяет данные передавать в удобном для дальнейшей работы формате.
[0094] Например, рассмотрим веб-страницу товара в Интернет-магазине. Пусть, на веб-странице имеются следующие динамические части:
- Поле А корзины с указанием общей суммы и возможностью выведения списка добавленных товаров при наведении мышки,
- Поле В товара, где выводятся подробные характеристики (без цены, цена выводится отдельно)
[0095] Допустим на веб-сайте действует акция: добавьте в корзину товар №1, и получите на товар №2 скидку 50%. Т.е. чтобы понять, какую цену показывать посетителю на странице товара №2, необходимо сначала получить данные о добавленных товарах, а потом вычислить характеристики товара. В данном случае цена без скидки хранится в энергонезависимой памяти в базе данных там же, где и остальные характеристики, поэтому логичнее получить ее вместе с остальными запросами в динамической части В. Но цену не стоит встраивать в результат HTML-кода, а можно вернуть как дополнительный результат, чтобы произвести дальнейшее вычисление. Таким образом, после вычисления динамических частей А и В происходит перерасчет цены, если в корзине есть товар №1.
[0096] Динамическая часть благодаря возможности обрабатывать параметры запроса типа POST может отправлять запросы к веб-серверу и получать ответ в любом текстовом формате (например, JSON) без перезагрузки страницы (например, технология AJAX). Если полученный результат с веб-сервера отобразить на странице, то страница изменится, причем, динамические части будут иметь тот же кэш, ведь в момент запроса страница с динамическими частями не загружалась повторно. Это можно использовать, когда динамическая часть может принимать множество значений, которые быстро вычисляются и, как следствие, их не стоит кэшировать. Например, динамическая часть, которая отображает файловую структуру: слева список папок, а при клике на папку появляются вложенные в папку файлы. Получение дерева файловой структуры не является трудоемкой операцией, поэтому кэшировать результат при каждом клике не имеет смысла.
[0097] В итоге, если состояния динамических частей для определенных параметров запроса уже были вычислены ранее, скорость загрузки веб-страницы будет максимально быстрой, поскольку не потребуется никаких вычислений.
[0098] Весь процесс вычисления результата динамической части основывается на запросе данных из места их хранения (например, в базе данных посредством SQL-запроса) и дальнейшими операциями с этими данными. Основной задачей является максимальное ускорение времени получения данных из места их хранения. В качестве операций над динамической частью могут использоваться операции чтения, модифицирования (обновления), удаления, создания, известные из уровня техники.
[0099] Если осуществляется операция чтения внутри динамической части веб-страницы, то в оперативную память сохраняют связь, которая содержит данные об URL кэша динамической части веб-страницы, строку подключения к базе данных и таблицу внутри базы данных, к которой был запрос.
[00100] Например это может быть выполнено в следующем виде:
[00101] "/cache/modules/header/-.txt",
[00102] "Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=Settings;''
[00103] "Menu".
[00104] Если осуществляется операция создания, обновления или удаления, выполняют поиск всех связей, созданных ранее при чтении по данным строки подключения к базе данных, таблицы внутри базы данных. Затем удаляют все файлы кэша, которые формировались с этими данными - эти файлы кэша будут неактуальными, так как изменились.
[00105] В данном техническом решении реализована система ускорения получения данных. Она заключается в подгрузке информации (которая хранится в энергонезависимой памяти) в момент первой загрузки веб-сайта, в оперативную память. Вся дальнейшая работа веб-разработчика с данными основывается на обобщенном запросе к CMS с указанием, какие данные он хочет использовать без уточнения места хранения. Система сначала запрашивает данные из оперативной памяти и, если данных там нет, запрашивает их из энергонезависимой памяти (например, в базе данных).
[00106] В данном техническом решении используется модель хранения данных Сущность-Атрибут-Значение (Entity-Attribute-Value (EAV)). Такая модель имеет ряд преимуществ:
[00107] 1. Позволяет изменять атрибуты и параметры для сущности без изменения структуры базы данных.
[00108] 2. Исключает избыточность данных.
[00109] Однако в уровне техники при использовании данной модели данных возникают следующие проблемы:
[00110] 1. Усложнение запросов выборки по атрибутам, которые требуют больше времени из-за невозможности применения стандартных способов индексации.
[00111] 2. Необходимость отслеживания дублирующих связей.
[00112] 3. Необходимость отслеживания связей между несуществующими записями таблицы.
[00113] Указанные выше проблемы решаются в рамках данного изобретения. Рассмотрим подробнее пример предложенной структуры SQL для хранения данных пользователей.
[00114] Данная структура имеет таблицу UUsers, хранит id пользователей, а также таблицу UProperty, которая хранит данные о самих атрибутах. Например, для атрибута «Адрес» существует:
[00115] уникальный идентификатор «idProperty» равный «2»,
[00116] название на русском языке,
[00117] название на латинице,
[00118] тип значений для этого атрибута,
[00119] способ отображения параметра (это может быть как обычное текстовое поле, так и слайдер с двумя ползунками),
[00120] должны ли быть значения адресов уникальными,
[00121] сортировка атрибута относительно других атрибутов пользователя
[00122] Таблица UPropertyValue хранит значения атрибутов.
[00123] Таблица UUsersPropertyValue хранит связи между атрибутами и пользователями.
[00124] Чтобы сделать выборку данных максимально быстро, выполняют один сложный запрос с использованием оператора JOIN вместо нескольких простых. Команда INNERJOIN позволяет SQL обрабатывать таблицы в порядке, отличном от указанного в запросе. Это дает возможность базе данных максимально быстро вернуть результат.
[00125] Сама функция запроса возвращает сущности, которые удовлетворяют требования к атрибутам и их значениям, например:
[00126] Требования к сущности о наличии хотя бы одного значения этого атрибута.
[00127] Проверка о наличии/отсутствии NULL среди значений.
[00128] Наличие у определенного атрибута значения, которое содержит указанную строку или полностью совпадает.
[00129] Сложность таких запросов в том, что их необходимо сначала автоматически сформировать в зависимости от указанных требований к атрибутам, а потом уже выполнять. Например, если существует задача выборки по двум значениям различных параметров необходимо найти данные сначала по одному, потом по другому параметру, после чего найти пересечение. Чтобы сделать это одним запросом для любого количества параметров, можно автоматически собрать сложный запрос для любого количества требований к параметрам.
[00130] Чтобы в модели EAV строить такие запросы в базу данных для любого количества атрибутов с любыми требованиями к их значениям, используют компоновщик запросов для всех возможных условий.
[00131] Сохранять результаты запросов к базе данных и всех их вариаций не имеет смысла, так как может быть слишком большое количество подмножеств результатов. Уменьшить число запросов к базе данных можно с помощью заранее загруженных таблиц в оперативную память. Таблицы загружаются в оперативную память в момент запуска веб-сайта. Затем таблицы автоматически преобразуются, однако предварительно пользователь на этапе создания веб-сайта устанавливает, что таблица USERS будет храниться в оперативной памяти.
[00132] Данные хранятся в оперативной памяти как упорядоченный список сущностей, к которым уже привязаны их упорядоченные атрибуты и значения.
[00133] Также в оперативную память дополнительно подгружается список всех параметров и значений для ускоренного получения списка всех атрибутов и их значений без привязки к сущностям.
[00134] Данное техническое решение было апробировано на практике и реализовано: был разработан сайт http://chik-chik.ru/, который показал в среднем лучшие результаты по скорости по обработке и управлению данными веб-сайта в нагрузочном тестировании по сравнению с другими крупными сайтами, имеющими аналогичные технические решения, известные из уровня техники. Для тестирования был использован максимально близкий сервер к физическому расположению веб-сервера сайта.
[00135] Как отмечено выше, сущность изобретения предпочтительно реализуется, по меньшей мере, на одном устройстве обработке данных или веб-сервере. Таким образом, изобретение не требует каких-либо изменений в обычном аппаратном или программном обеспечении клиентского компьютера. Обобщая, описанная выше функциональность или последовательность шагов способа может быть реализована в программном обеспечении, исполняемом на устройстве обработки данных или процессоре, а именно в виде набора инструкций (программный код) в модуле кода, который находится в оперативной памяти вычислительного устройства. До тех пор пока вычислительное устройство не понадобится, набор инструкций может храниться в другом типе памяти, например на жестком диске или в съемной памяти, такой как оптический диск (для возможного использования на компакт-диске) или гибкий диск (для возможного использования на флоппи-диске) или загружается через Интернет или через другую компьютерную сеть.
[00136] Кроме того, хотя различные описанные способы удобно реализовать в компьютере общего назначения, специалист в данной области техники также признает, что такие способы могут выполняться на других аппаратных средствах, в прошивке или на более специализированных устройствах, выполненных для реализации требуемых этапов способа.
название | год | авторы | номер документа |
---|---|---|---|
СПОСОБ ВЫДАЧИ ВЕБ-СТРАНИЦ НА ОБОРУДОВАНИЕ ПОЛЬЗОВАТЕЛЯ, А ТАКЖЕ ПРЕДНАЗНАЧЕННАЯ ДЛЯ ЭТОГО СИСТЕМА | 2014 |
|
RU2571577C2 |
СИСТЕМА И СПОСОБ УПРАВЛЕНИЯ И ОРГАНИЗАЦИИ КЭША ВЕБ-БРАУЗЕРА ДЛЯ ОБЕСПЕЧЕНИЯ АВТОНОМНОГО ПРОСМОТРА | 2014 |
|
RU2608668C2 |
БРОКЕР И ПРОКСИ ОБЕСПЕЧЕНИЯ БЕЗОПАСТНОСТИ ОБЛАЧНЫХ УСЛУГ | 2014 |
|
RU2679549C2 |
СИСТЕМА И СПОСОБ УПРАВЛЕНИЯ И ОРГАНИЗАЦИИ КЭША ВЕБ-БРАУЗЕРА | 2014 |
|
RU2629448C2 |
УСТРОЙСТВО И СПОСОБ ОБРАБОТКИ СОДЕРЖИМОГО ВЕБ-РЕСУРСА В БРАУЗЕРЕ | 2014 |
|
RU2595524C2 |
СПОСОБ И СИСТЕМА РАБОТЫ ВЕБ-ПРИЛОЖЕНИЯ НА УСТРОЙСТВЕ | 2021 |
|
RU2790034C2 |
Способ записи, редактирования и воссоздания компьютерного сеанса | 2018 |
|
RU2733919C2 |
УПРАВЛЕНИЕ ОНЛАЙНОВОЙ КОНФИДЕНЦИАЛЬНОСТЬЮ | 2011 |
|
RU2550531C2 |
СИСТЕМА И СПОСОБ ОБНАРУЖЕНИЯ ФИШИНГОВЫХ ВЕБ-СТРАНИЦ | 2016 |
|
RU2637477C1 |
КОНТЕЙНЕРНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ДЛЯ ВИРУСНОГО КОПИРОВАНИЯ ИЗ ОДНОЙ КОНЕЧНОЙ ТОЧКИ В ДРУГУЮ | 2012 |
|
RU2604670C2 |
Изобретение относится к способам управления данными веб-сайта. Технический результат - скорость повышения обработки и управления данными веб-сайта. Формируют по меньшей мере одну статическую часть веб-страницы и по меньшей мере одну динамическую часть веб-страницы, которые хранятся в энергонезависимой памяти. Получают от по меньшей мере одного пользователя запрос к веб-сайту. Проверяют наличие файла кэша в энергонезависимой памяти для каждой динамической части веб-страницы полученного ранее, причем при наличии файла кэша в энергонезависимой памяти загружают его содержимое в динамическую часть веб-страницы. При отсутствии файла кэша в энергонезависимой памяти во время проверки осуществляют вычисление динамической части веб-страницы на основании запроса к веб-серверу, причем для вычисления предварительно получают данные из оперативной памяти, в случае их наличия, иначе получают данные из энергонезависимой памяти. 9 з.п. ф-лы, 5 ил.
1. Способ управления данными веб-сайта, включающий следующие шаги:
формируют по меньшей мере одну статическую часть веб-страницы и по меньшей мере одну динамическую часть веб-страницы, которые хранятся в энергонезависимой памяти;
получают от по меньшей мере одного пользователя запрос к веб-сайту;
проверяют наличие файла кэша в энергонезависимой памяти для каждой динамической части веб-страницы полученного на предыдущем шаге запроса, причем при наличии файла кэша в энергонезависимой памяти загружают его содержимое в динамическую часть веб-страницы.
2. Способ по п. 1, характеризующийся тем, что запрос имеет тип POST или GET.
3. Способ по п. 1, характеризующийся тем, что запрос содержит ссылку на веб-сайт с параметрами.
4. Способ по п. 1, характеризующийся тем, что при отсутствии файла кэша в энергонезависимой памяти во время проверки осуществляют вычисление динамической части веб-страницы на основании запроса к веб-серверу, причем при изменении данных модифицируют их сначала в энергонезависимой памяти, а потом в оперативной.
5. Способ по п. 1, характеризующийся тем, что при отсутствии файла кэша в энергонезависимой памяти во время проверки осуществляют вычисление динамической части веб-страницы на основании запроса к веб-серверу, причем при изменении данных модифицируют их сначала в оперативной памяти, а потом в энергонезависимой.
6. Способ п. 4, характеризующийся тем, что изменением данных является создание, или обновление, или удаление.
7. Способ п. 4, характеризующийся тем, что при изменении данных, которые использовались при вычислении динамических частей, удаляют файлы кэша этих динамических частей.
8. Способ по п. 1, характеризующийся тем, что, чтобы получить ссылку на файл кэша динамической части в виде URL, осуществляют преобразование параметров загрузки таким образом, чтобы для одного и того же набора параметров загрузки возвращалась одна и та же ссылка на файл кэша.
9. Способ по п. 1, характеризующийся тем, что если у двух разных динамических частей веб-сайта имеется одинаковый идентификатор, то место хранения кэша в энергонезависимой памяти является одинаковым при одинаковых параметрах загрузки.
10. Способ по п. 1, характеризующийся тем, что если осуществляется операция чтения внутри динамической части веб-страницы, то в оперативную память сохраняют связь, которая содержит данные об URL кэша динамической части веб-страницы, строку подключения к базе данных и таблицу внутри базы данных, к которой был запрос.
US 8924411 B2, 30.12.2014 | |||
US 7194678 B1, 20.03.2007 | |||
US 7987239 B2, 26.07.2011 | |||
ГЕНЕРИРОВАНИЕ И КЭШИРОВАНИЕ КОДА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ | 2013 |
|
RU2646329C2 |
Авторы
Даты
2019-06-18—Публикация
2018-07-11—Подача