СПОСОБ И СИСТЕМА РАБОТЫ ВЕБ-ПРИЛОЖЕНИЯ НА УСТРОЙСТВЕ
METHOD AND SYSTEM FOR OPERATION OF WEB-APPLICATION ON DEVICE

Область техники
[0001] Настоящая технология в целом относится к системам и способам работы веб-приложения на устройстве и, в частности, к способам и системам для быстрого открытия веб-страниц в прогрессивных веб-приложениях (PWA).
Уровень техники
де-факто
[0004] Помимо сервис-воркера, описанного здесь выше в контексте PWA, другие известные подходы включают в себя подходы, описанные в одном из следующих: заявка на патент Китая, опубликованная под номером CN 106202179 A и озаглавленная «Page Loading Method and Device», заявка на патент США, опубликованная под номером US 2018/285470 A1 и озаглавленная «A Mobile Web Cache Optimization Method Based on HTML5 Application Caching», и европейская патентная заявка, опубликованная под номером EP 1081607 A2 и озаглавленная «Method for Providing Fast Access to Dynamic Content on the World Wide Web».
[0005] Заявка на патент Китая, опубликованная под номером CN 106202179 A, раскрывает способ и устройство загрузки страницы. Способ включает в себя определение того, сохранил ли браузер локально содержимое назначенной части назначенной страницы, когда браузеру необходимо загрузить назначенную страницу; если да, определение того, запрашивать ли контент с сервера назначенной страницы; если запрос с сервера не требуется, использование локально сохраненного в браузере контента в качестве контента назначенной части назначенной страницы и его загрузку.
[0007] Европейская патентная заявка, опубликованная под номером EP 1081607 A2, раскрывает сохраненную в интеллектуальной закладке последовательность этапов просмотра, выполняемых пользователем, которые были записаны прозрачным образом и которые могут быть автоматически воспроизведены и повторно воспроизведены позже при доступе к интеллектуальной закладке. Когда пользователь выбирает создание интеллектуальной закладки, вызывается апплет Java-рекордера-проигрывателя, который запускает процесс записи. Когда процесс записи запускается и пользователь вводит начальный URL-адрес, соответствующая веб-страница по этому URL-адресу, загруженному в браузер, модифицируется для присоединения обработчиков событий к каждому элементу на этой странице, который связан с действиями, которые может выполнять пользователь.
Сущность изобретения
[0008] Неограничивающие варианты осуществления настоящей технологии были разработаны на основе оценки разработчика по меньшей мере одной технической проблемы, связанной с решениями предшествующего уровня техники.
[0009] В соответствии с первым широким аспектом настоящей технологии, предоставляется способ работы веб-приложения на устройстве, причем способ включает в себя:
в ответ на инициирующее событие, запуск веб-приложения для взаимодействия с выбранным веб-ресурсом, причем инициирующее событие определяется на основе области действия, связанной с веб-приложением, при этом область действия включает в себя идентификаторы ресурсов, идентифицирующие веб-ресурсы;
доступ, веб-приложением, к локальному кэшу, хранящемуся в компьютерно-читаемой памяти устройства, причем локальный кэш содержит статические данные, при этом статические данные определяют совместно используемые части записей, каждая из совместно используемых частей записей связана с по меньшей мере двумя из веб-ресурсов, каждая из совместно используемых частей записей определяет статический контент, общий для соответствующих по меньшей мере двух веб-ресурсов;
выбор, веб-приложением, среди совместно используемых частей записей, хранящихся в локальном кэше, по меньшей мере одной совместно используемой части записей, связанной с выбранным ресурсом;
извлечение, веб-приложением, по меньшей мере одной совместно используемой части записей, связанной с выбранным ресурсом, причем извлеченные совместно используемые части определяют статический компонент для выбранного ресурса;
получение, веб-приложением, из выбранного веб-ресурса, динамического компонента для выбранного ресурса; и
обработку, веб-приложением, статического компонента и динамического компонента для создания контента, отображаемого устройством.
[00010] В некоторых неограничивающих вариантах осуществления настоящей технологии, идентификаторы ресурсов представляют собой унифицированные указатели ресурсов (URL), связанные с веб-ресурсами.
[00011] В некоторых неограничивающих вариантах осуществления настоящей технологии, инициирующее событие определяется путем сравнения первого URL-адреса, связанного с выбранным веб-ресурсом, с URL-адресами области действия, связанной с веб-приложением.
[00012] В некоторых неограничивающих вариантах осуществления настоящей технологии, инициирующее событие представляет собой действие перехода от страницы результатов поиска (SERP) к выбранному ресурсу.
[00013] В некоторых неограничивающих вариантах осуществления настоящей технологии, связь совместно используемых частей записей с по меньшей мере двумя из веб-ресурсов определяется на основе связи первого из идентификаторов ресурсов, связанного с первым из по меньшей мере двух веб-ресурсов, и второго из идентификаторов ресурсов, связанного со вторым из по меньшей мере двух веб-ресурсов.
[00014] В некоторых неограничивающих вариантах осуществления настоящей технологии, связь основана на первом из идентификаторов ресурсов и втором из идентификаторов ресурсов, имеющих общий префикс.
[00015] В некоторых неограничивающих вариантах осуществления настоящей технологии, связь предварительно определена на основе параметров TF/IDF.
[00016] В некоторых неограничивающих вариантах осуществления настоящей технологии, связь предварительно определена на основе предварительно определенных n-грамм.
[00017] В некоторых неограничивающих вариантах осуществления настоящей технологии, запуск веб-приложения для взаимодействия включает в себя открытие веб-страницы, содержащей статический компонент и динамический компонент.
[00018] В некоторых неограничивающих вариантах осуществления настоящей технологии, статические данные, хранящиеся в локальном кэше, дополнительно определяют статический контент, уникальный для выбранного ресурса.
[00019] В некоторых неограничивающих вариантах осуществления настоящей технологии, извлечение веб-приложением из выбранного веб-ресурса динамического компонента включает в себя выполнение подпрограммы сценария Java, загружающей динамический компонент с сервера, связанного с выбранным веб-ресурсом.
[00020] В некоторых неограничивающих вариантах осуществления настоящей технологии, статический контент содержит по меньшей мере одну из страницы профиля социальной сети, новой страницы или страницы-шаблона.
[00021] В некоторых неограничивающих вариантах осуществления настоящей технологии, по меньшей мере одна совместно используемая часть записей, связанная с выбранным ресурсом, содержит первую совместно используемую часть записей, связанную с выбранным ресурсом, и вторую совместно используемую часть записей, связанную с выбранным ресурсом.
[00022] В соответствии со вторым широким аспектом настоящей технологии, предоставляется система для работы веб-приложения, причем система содержит компьютерно-читаемую память, хранящую инструкции, которые, при выполнении процессором системы, предписывают:
в ответ на инициирующее событие, запуск веб-приложения для взаимодействия с выбранным веб-ресурсом, причем инициирующее событие определяется на основе области действия, связанной с веб-приложением, при этом область действия включает в себя идентификаторы ресурсов, идентифицирующие веб-ресурсы;
доступ, веб-приложением, к локальному кэшу, хранящемуся в компьютерно-читаемой памяти устройства, причем локальный кэш содержит статические данные, при этом статические данные определяют совместно используемые части записей, каждая из совместно используемых частей записей связана с по меньшей мере двумя из веб-ресурсов, каждая из совместно используемых частей записей определяет статический контент, общий для соответствующих по меньшей мере двух веб-ресурсов;
выбор, веб-приложением, среди совместно используемых частей записей, хранящихся в локальном кэше, по меньшей мере одной совместно используемой части записей, связанной с выбранным ресурсом;
извлечение, веб-приложением, по меньшей мере одной совместно используемой части записей, связанной с выбранным ресурсом, причем извлеченные совместно используемые части определяют статический компонент для выбранного ресурса;
получение, веб-приложением, из выбранного веб-ресурса динамического компонента для выбранного ресурса; и
обработку, веб-приложением, статического компонента и динамического компонента для создания контента, отображаемого устройством.
[00023] В контексте настоящего описания "сервер" представляет собой компьютерную программу, которая работает на надлежащем аппаратном обеспечении и способна принимать запросы (например, от электронных устройств) по сети, а также выполнять эти запросы или вызывать выполнение этих запросов. Аппаратное обеспечение может быть одним физическим компьютером или одной физической компьютерной системой, но ни то, ни другое не является обязательным для настоящей технологии. В настоящем контексте использование выражения «по меньшей мере один сервер» не предназначено для обозначения того, что каждая задача (например, принятые инструкции или запросы) или любая конкретная задача будет принята, выполнена или вызвана для выполнения одним и тем же сервером (то есть одним и тем же программным и/или аппаратным обеспечением); подразумевается, что любое количество программных элементов или аппаратных устройств может быть вовлечено в прием/отправку, выполнение или вызов для выполнения любой задачи или запроса, или последствий любой задачи или запроса; и все это программное и аппаратное обеспечение может быть одним сервером или несколькими серверами, причем оба этих варианта включены в выражение «по меньшей мере один сервер».
[00024] В контексте настоящего описания, если специально не указано иное, слова "первый", "второй", "третий" и т.д. используются в качестве прилагательных только для того, чтобы позволить отличить существительные, которые они модифицируют, друг от друга, а не для описания какой-либо особой взаимосвязи между такими существительными. Таким образом, например, следует понимать, что использование терминов "первый сервер" и "третий сервер" не подразумевает какого-либо конкретного порядка, типа, хронологии, иерархии или ранжирования (например) таких серверов, равно как и их использование (само по себе) не означает, что какой-либо "второй сервер" должен обязательно существовать в любой определенной ситуации. Кроме того, как обсуждается в других контекстах данного документа, ссылка на "первый" элемент и "второй" элемент не исключает того, что эти два элемента фактически являются одним и тем же элементом реального мира. Таким образом, например, в некоторых случаях "первый" сервер и "второй" сервер могут быть одним и тем же программным обеспечением и/или аппаратным обеспечением, в других случаях они могут представлять собой разное программное обеспечение и/или аппаратное обеспечение.
[00025] В контексте настоящего описания, если специально не указано иное, "база данных" представляет собой любую структурированную совокупность данных, независимо от ее конкретной структуры, программного обеспечения для администрирования базы данных, или компьютерного оборудования, на котором данные хранятся, реализуются или делаются доступными для использования иным образом. База данных может находиться на том же оборудовании, что и процесс, который хранит или использует информацию, хранящуюся в базе данных, или она может находиться на отдельном оборудовании, например на выделенном сервере или множестве серверов.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[00026] Для лучшего понимания настоящей технологии, а также других аспектов и ее дополнительных признаков, приводится ссылка на нижеследующее описание, которое должно использоваться в сочетании с сопроводительными чертежами, на которых:
[00027] Фиг.1 иллюстрирует схематическую диаграмму системы, реализуемой в соответствии с неограничивающими вариантами осуществления настоящей технологии;
[00028] Фиг.2 изображает схематическую диаграмму электронного устройства, реализованного в соответствии с неограничивающими вариантами осуществления настоящей технологии;
[00029] На Фиг.3 и 4 показаны схематические изображения базы данных, хранящейся в локальном кэше; и
[00030] На Фиг.5 изображена блок-схема последовательности операций способа работы веб-приложения в соответствии с неограничивающими вариантами осуществления настоящей технологии.
Подробное описание
[00031] Обратившись к Фигуре 1, увидим, что проиллюстрирована схематическая диаграмма системы 100, причем система 100 подходит для реализации неограничивающих вариантов осуществления настоящей технологии. Следует четко понимать, что система 100 проиллюстрирована лишь как иллюстративная реализация настоящей технологии. Таким образом, нижеследующее описание предназначено лишь для того, чтобы использоваться в качестве описания иллюстративных примеров настоящей технологии. Это описание не предназначено для определения объема или ограничения настоящей технологии. В некоторых случаях то, что считается полезными примерами модификаций системы 100, также может быть изложено ниже. Это делается лишь для содействия пониманию и, кроме того, не для строгого определения объема или очерчивания границ настоящей технологии. Эти модификации не являются исчерпывающим списком и, как будет понятно специалисту в данной области техники, вероятно возможны другие модификации. Кроме того, если это не было сделано (то есть, когда примеры модификаций не были приведены), это не следует интерпретировать так, что никакие модификации не возможны и/или что описанное является единственным способом реализации этого элемента настоящей технологии. Специалисту в данной области техники будет понятно, что это, вероятно, не так. Кроме того, следует понимать, что в некоторых случаях система 100 может предоставлять простые реализации настоящей технологии, и что в таких случаях они представлены для помощи в понимании. Специалисты в данной области техники поймут, что различные реализации настоящей технологии могут иметь большую сложность.
[00032] Приведенные в данном документе примеры и условные формулировки призваны главным образом помочь читателю понять принципы настоящей технологии, а не ограничить ее объем такими конкретно приведенными примерами и условиями. Должно быть понятно, что специалисты в данной области техники смогут разработать различные механизмы, которые, хоть и не описаны в данном документе явным образом, тем не менее воплощают принципы настоящей технологии и включаются в ее суть и объем. Кроме того, нижеследующее описание может описывать реализации настоящей технологии в относительно упрощенном виде для целей упрощения понимания. Специалисты в данной области техники поймут, что различные реализации настоящей технологии могут иметь большую сложность.
[00033] Кроме того, все содержащиеся в данном документе утверждения, в которых указываются принципы, аспекты и реализации настоящей технологии, а также их конкретные примеры, призваны охватить как структурные, так и функциональные эквиваленты, вне зависимости от того, известны ли они в настоящее время или будут разработаны в будущем. Таким образом, например, специалисты в данной области техники осознают, что любые блок-схемы в данном документе представляют концептуальные виды иллюстративной схемы, воплощающей принципы настоящей технологии. Аналогичным образом, будет понятно, что любые блок-схемы, схемы последовательности операций, диаграммы переходов состояний, псевдо-коды и подобное представляют различные процессы, которые могут быть по существу представлены на считываемых компьютерам носителях и таким образом исполнены компьютером или процессором вне зависимости от того, показан такой компьютер или процессор явным образом или нет.
[00034] Функции различных элементов, показанных на фигурах, в том числе любого функционального блока, помеченного как "процессор", могут быть обеспечены с помощью специализированного аппаратного обеспечения, а также аппаратного обеспечения, способного исполнять программное обеспечение и связанного с надлежащим программным обеспечением. При обеспечении процессором, функции могут быть обеспечены одним выделенным процессором, одним совместно используемым процессором или множеством отдельных процессоров, некоторые из которых могут быть совместно используемыми. В некоторых вариантах осуществления настоящей технологии процессор может быть процессором общего назначения, таким как центральный процессор (CPU) или процессор, выделенный для конкретной цели, например графический процессор (GPU). Кроме того, явное использование термина "процессор" или "контроллер" не должно истолковываться как относящееся исключительно к аппаратному обеспечению, способному исполнять программное обеспечение, и может в неявной форме включать в себя, без ограничений перечисленным, аппаратное обеспечение цифрового сигнального процессора (DSP), сетевой процессор, интегральную схему специального назначения (ASIC), программируемую пользователем вентильную матрицу (FPGA), постоянную память (ROM) для хранения программного обеспечения, оперативную память (RAM) и энергонезависимое хранилище. Другое аппаратное обеспечение, традиционное и/или специализированное, также может быть включено в состав.
[00035] Учитывая эти основополагающие вещи, рассмотрим некоторые неограничивающие примеры, чтобы проиллюстрировать различные реализации аспектов настоящей технологии.
[00036] Система 100 содержит электронное устройство 102. Электронное устройство 102 обычно ассоциируется с пользователем (не изображен) и, как таковое, иногда может упоминаться как "клиентское устройство". Следует отметить, что тот факт, что электронное устройство 102 ассоциировано с пользователем, не означает, что предполагается или подразумевается какой-либо режим работы - такой как необходимость входа в систему, необходимость регистрации или тому подобное.
[00037] В контексте настоящего описания, если не указано иное, "электронное устройство" представляет собой любое компьютерное аппаратное обеспечение, которое способно выполнять программное обеспечение, подходящее для соответствующей рассматриваемой задачи. Таким образом, некоторые (не ограничивающие) примеры электронных устройств включают в себя персональные компьютеры (настольные, ноутбуки, нетбуки и т.д.), смартфоны и планшеты, а также сетевое оборудование, такое как маршрутизаторы, коммутаторы и шлюзы. Следует понимать, что в данном контексте тот факт, что устройство функционирует как электронное устройство, не означает, что оно не может функционировать как сервер для других электронных устройств. Использование выражения "электронное устройство" не исключает использования многочисленных клиентских устройств при приеме/отправке, выполнении или вызове для выполнения какой-либо задачи или запроса, или последствий любой задачи или запроса, или этапов любого описанного в данном документе способа.
[00038] Обратившись одновременно на фиг. 1 и 2, увидим, что электронное устройство 102 может содержать один или несколько запоминающих носителей 104, 105, 107 и обычно предоставляет место для хранения команд исполняемых компьютером программ, выполняемых одним или процессорами 106. В качестве примера, один или несколько запоминающих носителей данных могут быть реализованы как материальные компьютерно-читаемые запоминающие носители данных, включая в себя оперативную память (RAM). Один или несколько запоминающих носителей 104, 105, 107 могут также включать в себя одно или несколько постоянных запоминающих устройств в форме постоянного хранилища 105. Постоянное хранилище 105 может включать в себя один или более запоминающих носителей и, как правило, обеспечивает место для хранения исполняемых компьютером инструкций, исполняемых процессором 106. В качестве примера постоянное хранилище 105 может быть реализовано как компьютерно-читаемый запоминающий носитель данных, включая в себя постоянное запоминающее устройство (ROM), жесткие диски (HDD), твердотельные накопители (SSD) и карты флэш-памяти.
[00039] Электронное устройство 102 содержит аппаратные средства, и/или программное обеспечение, и/или микропрограммное обеспечение (или их комбинацию), как известно в данной области техники для выполнения приложения 108 браузера. Вообще говоря, цель приложения 108 браузера состоит в том, чтобы позволить пользователю (не изображен) получить доступ к одному или нескольким веб-ресурсам. Способ реализации приложения 108 браузера известен в данной области техники и здесь не описывается. Достаточно сказать, что приложение 108 браузера может быть одним из браузера Google™ Chrome™, браузера Yandex.Browser™ или других коммерческих или проприетарных браузеров.
[00040] Независимо от того, как реализовано приложение 108 браузера, приложение 108 браузера обычно имеет командный интерфейс 110 и интерфейс 112 просмотра. Вообще говоря, пользователь (не изображен) может получить доступ к веб-ресурсу через сеть связи двумя основными способами. Данный пользователь может получить доступ к конкретному веб-ресурсу напрямую, либо введя адрес веб-ресурса (обычно URL-адрес или универсальный указатель ресурсов, например www.example.com) в командный интерфейс 110, либо щелкнув ссылку в электронном письме или в другом веб-ресурсе (это действие будет в некотором смысле «копировать и вставлять» URL-адрес, связанный со ссылкой, в командный интерфейс 110).
[00041] В качестве альтернативы, данный пользователь может проводить поиск, используя службу поисковой машины (не изображена), чтобы найти интересующий ресурс на основе поискового намерения пользователя. Последний особенно подходит в тех случаях, когда данный пользователь знает интересующую его тему, но не знает URL-адрес интересующего его веб-ресурса. Поисковая система обычно возвращает страницу результатов поисковой системы (SERP), содержащую ссылки на один или несколько веб-ресурсов, которые отвечают на запрос пользователя. Кроме того, после того, как пользователь щелкнет одну или несколько ссылок, представленных в поисковой выдаче, пользователь может открыть требуемый веб-ресурс.
[00043] Электронное устройство 102 содержит интерфейс связи (не показан) для двусторонней связи с сетью 114 связи через канал 116 связи. В некоторых вариантах осуществления, интерфейс связи является частью набора интерфейсов 109 ввода/вывода. В некоторых неограничивающих вариантах осуществления настоящей технологии, сеть 114 связи может быть реализована как Интернет. В других вариантах осуществления настоящей технологии, сеть 114 связи может быть реализована иначе, например как какая-либо глобальная сеть связи, локальная сеть связи, частная сеть связи и тому подобное.
[00044] То, как канал 116 связи реализуется, специально не ограничено и зависит от того, как реализовано электронное устройство 102. Просто в качестве примера, а не ограничения, в тех вариантах осуществления настоящей технологии, где электронное устройство 102 реализовано как устройство беспроводной связи (например, смартфон), канал 116 связи может быть реализован как канал беспроводной связи (например, но не ограничиваясь перечисленным, канал связи 3G, канал связи 4G, Wireless Fidelity или для краткости WiFi, Bluetooth или т.п.) или проводной (например, соединение на основе Ethernet).
[00045] Следует четко понимать, что реализации для электронного устройства 102, канала 116 связи и сети 114 связи предоставлены лишь в иллюстративных целях. Таким образом, специалисты в данной области техники легко оценят другие конкретные детали реализации электронного устройства 102, канала 116 связи и сети 114 связи. Как таковые, примеры, представленные в настоящем документе выше, никоим образом не предназначены для ограничения объема настоящей технологии.
[00046] Система 100 дополнительно включает в себя серверы 140, 150 и 160, подключенные к сети 114 связи. Серверы 140-160 могут быть реализованы как обычные компьютерные серверы. В примере варианта осуществления настоящей технологии, серверы 140-160 могут быть реализованы как сервер Dell™ PowerEdge™, работающий под управлениемоперационной системы Microsoft™ Windows Server™. Само собой разумеется, что серверы 140-160 могут быть реализованы в любом другом подходящем аппаратном и/или программном и/или встроенном программном обеспечении или их комбинации. В изображенном неограничивающем варианте осуществления настоящей технологии, каждый из серверов 140-160 является одним сервером. В альтернативных неограничивающих вариантах осуществления настоящей технологии, функциональные возможности каждого из серверов 140-160 могут быть распределены и могут быть реализованы на нескольких серверах.
[00047] Реализация серверов 140-160 хорошо известна. Однако, вкратце, серверы 140-160 содержат интерфейс связи (не показан), структурированный и сконфигурированный для связи с различными объектами (такими как электронное устройство 102 и другие устройства, потенциально подключенные к сети 114 связи). Подобно электронному устройству 102, каждый из серверов 140-160 содержит запоминающие устройства 142, 152 и 162 сервера, которые содержат один или несколько запоминающих носителей данных и обычно предоставляют место для хранения команд исполняемых компьютером программ, выполняемых процессорами 144, 154 и 164 сервера. В качестве примера, запоминающие устройства 142, 152 и 162 сервера могут быть реализованы как материальный компьютерно-читаемый запоминающий носитель данных, включающий в себя постоянное запоминающее устройство (ПЗУ) и/или оперативное запоминающее устройство (ОЗУ). Запоминающие устройства 142, 152 и 162 сервера также могут включать в себя одно или несколько постоянных запоминающих устройств в виде, например, жестких дисков (HDD), твердотельных накопителей (SSD) и карт флэш-памяти.
[00048] В некоторых вариантах осуществления, каждый из серверов 140-160 может управляться тем же объектом, который предоставил вышеописанное приложение 108 браузера. Например, если приложение 108 браузера является браузером Яндекс.Браузер™, по меньшей мере один из серверов 140-160 может управляться ООО «Яндекс» расположеннымпо адресу: Россия, 119021, Москва, улица Льва Толстого, 16. В альтернативных вариантах осуществления один из серверов 140-160 может управляться объектом, отличным от того, который предоставил вышеупомянутое приложение 108 браузера.
[00049] В некоторых вариантах осуществления настоящей технологии и вообще говоря, каждый из серверов 140-160 функционирует как репозиторий для выделенных веб-ресурсов 144, 154, 164. В других вариантах осуществления, каждый из серверов 140-160 может быть связан с множеством веб-ресурсов (например, сервер 140 может размещать веб-ресурсы 144 и 154). В еще других вариантах осуществления, данный веб-ресурс может быть связан с множеством серверов 140-160 (например, веб-ресурс 144 может быть размещен на серверах 140 и 150). В контексте настоящего описания термин «веб-ресурс» относится к любому сетевому ресурсу (например, веб-странице, веб-сайту или веб-службе), контент которого визуально представляется электронным устройством 102 пользователю через приложение 108 браузера и связанное с конкретным веб-адресом (например, URL-адресом).
[00051] В некоторых вариантах осуществления, статический контент может быть предназначен для загрузки после первого подключения электронного устройства 102 к одному из серверов 140-160. Статический контент затем может храниться в локальном кэше 103 электронного устройства 102, чтобы впоследствии повторно использоваться электронным устройством 102 без необходимости повторной загрузки с одного из серверов 140-160. Напротив, динамический контент также может быть загружен с серверов 140-160, но по определению не предназначен для хранения в локальном кэше 103. Напротив, динамический контент должен загружаться снова с серверов 140-160 каждый раз, когда электронному устройству 102 требуется доступ к такому контенту.
[00052] Обратившись теперь одновременно к фиг. 1 и 3 увидим, что показаны примеры структуры данных, хранящейся в локальном кэше 104, которые будут дополнительно описаны. В некоторых вариантах осуществления, структура данных может иметь форму двух баз данных 180, 190, управляемых веб-приложением 113. Как может понять специалист в данной области техники, термин «база данных» можно в широком смысле определить как совокупность или регистр структурированных или неструктурированных данных. В проиллюстрированных вариантах осуществления, база 180 данных также может упоминаться как «область действия» или «манифест» для передачи концепции охвата, связанной с веб-приложением 113, которое управляет базой данных 180. В некоторых вариантах осуществления, база 180 данных может принимать форму списка URL-адресов, которые могут обновляться веб-приложением 113 и на которые можно полагаться для определения инициирующего события, которое приводит к «активации» веб-приложения и взаимодействию с заданным веб-ресурсом. В качестве неограничивающего примера, инициированием запуска веб-приложения 113 может быть просмотр пользователем электронного устройства 102 из SERP (например, щелчок по ссылке, связанной с веб-ресурсом), который,фактически, становится веб-ресурсом, выбранным пользователем. Веб-приложение 113 может определить, что выбранный веб-ресурс указан в базе 180 данных, и в результате определяет, что выбор веб-ресурса пользователем является инициирующим событием, для которого должно быть запущено веб-приложение 113. Следует понимать, что мониторинг инициирующего события может выполняться самим веб-приложением 113 или, альтернативно, программным компонентом, работающим вне веб-приложения (например, управляемым операционной системой электронного устройства 102). Под «запуском» следует понимать то, что веб-приложение 113 может работать в фоновом режиме (то есть быть невидимым для пользователя электронного устройства 102) и переводиться в «активный» режим в ответ на инициирующее событие. В альтернативных вариантах осуществления, веб-приложение 113 может не работать и фактически запускается при обнаружении инициирующего события.
[00054] В некоторых вариантах осуществления, запуск веб-приложения 113 в ответ на инициирующее событие также включает в себя доступ к базе данных 190, в которой хранится статический контент, связанный с веб-ресурсами, перечисленными в базе 180 данных. В качестве примера, в ответ на щелчок пользователя по заданному URL-адресу, веб-приложение 113 запускается, поскольку оно определило, что URL-адрес находился в его «области действия». Поскольку веб-ресурс указан в базе данных 180, веб-приложение 113 напрямую обращается к базе 190 данных для извлечения контента вместо прямого обращения к веб-ресурсу. Другими словами, к контенту, определенному как статический, осуществляется прямой доступ из локального кэша 104 вместо загрузки из веб-ресурса через сеть. В результате, веб-приложение 113, определив, что статический контент, связанный с веб-ресурсом, уже сохранен в локальном кэше, извлекает его из локального кэша, тем самым избегая любой задержки или задержки, связанной с загрузкой такого контента с удаленного сервера, на котором размещен веб-ресурс.
[00056] Как видно из фиг. 3, база данных 190, хранящаяся в локальном кэше 104, связывает первый и второй URL-адреса с одним и тем же статическим контентом «статический контент - 1». В результате первый ресурс, связанный с первым URL-адресом, и второй ресурс, связанный со вторым URL-адресом, совместно используют аналогичный статический контент. В некоторых вариантах осуществления, статический контент может содержать статические компоненты, например, но без ограничения перечисленным, шаблоны веб-страниц, изображения и т.д. Можно сказать, что статический контент является собственным кэшем, который, например, может быть установлен приложением 108 браузера и/или веб-приложением 113. Собственный кэш может хранить несколько шаблонов для нескольких страниц. В некоторых вариантах осуществления, содержимое базы 190 данных может быть заполнено на основе набора правил, образующих манифест. В манифесте может быть указано, какой шаблон может быть связан с другими веб-страницами. В некоторых вариантах осуществления, поскольку статический контент совместно используется несколькими веб-ресурсами, статический контент называется совместно используемым статическим контентом и/или содержит совместно используемые статические компоненты. Другими словами, несколько веб-ресурсов совместно используют части записей, хранящихся в локальном кэше 104, для совместно используемых статических компонентов.
[00057] Обратившись теперь к фиг. 4 увидим, что показан альтернативный пример структуры данных, хранящейся в локальном кэше 104 и называемой базой 490 данных. Как может оценить специалист в данной области техники, части записей (например, «совместно используемая запись 1», «совместно используемая запись 2», «совместно используемая запись 4») связаны с несколькими ресурсами (например, «ресурс 1» и «ресурс 2»). В этом примере «совместно используемая запись 1» связана как с «ресурсом 1», так и «ресурсом 2». Другими словами, «совместно используемая запись 1» представляет собой избыточную статическую часть данных, которая имеет отношение как к «ресурсу 1», так и «ресурсу 2». В результате этой связи, статическая часть данных не должна храниться дважды в локальном кэше 104 (т.е. нет необходимости сохранять первый раз по отношению к «ресурсу 1» и второй раз по отношению к «ресурсу 2»). Содержимое базы 490 данных может быть определено до запуска веб-приложения 113. Например, разработчик веб-контента может создавать для ресурсов, имеющих общий префикс (или другие типы связи между ресурсами, как упоминалось ранее), один и тот же статический контент, содержащий множество совместно используемых частей записей (например, один и тот же шаблон веб-страницы, одно и то же фоновое изображение, страницы профиля в социальных сетях или страницы новостей и т.д.).
[00058] Таким образом, во время работы веб-приложение 113 может запрашивать локальный кэш 104 для извлечения статического контента, при этом статический контент связан с множеством ресурсов, поэтому позволяет уменьшить размер локального кэша 104, поскольку он не хранит контент, который является избыточным среди множества ресурсов. Кроме того, веб-приложение 113 также может определять, что динамический контент необходимо загружать непосредственно с веб-ресурса. В некоторых вариантах осуществления, это определение может быть сделано после того, как установлено, что контент недоступен в локальном кэше 104 и, следовательно, должен быть загружен. В некоторых других вариантах осуществления, база 490 данных содержит указание на то, что динамический контент должен быть загружен из связанного ресурса. Кроме того, база 490 данных также может содержать статический контент, который специфичен для данного ресурса (т.е. не используется совместно множеством ресурсов).
[00059] В некоторых вариантах осуществления, как только веб-приложение 113 получило доступ как к статическому, так и к динамическому контенту, оно может сгенерировать контент, который будет отображаться на дисплее электронного устройства 102, например, путем объединения статического контента и динамического контента для формирования контента (например, веб-страницы, представляющей прогноз для данного местоположения, стартовой страницы социальной сети), который будет отображаться пользователю.
[00060] Возвращаясь к примеру прогноза погоды, инициирующим событием может быть переход пользователя по ссылке, представленной SERP, и переход на веб-ресурс «yandex.forcast.ru/moscow». Инициирующее событие может быть основано на определении того, что веб-ресурс находится в пределах области действия веб-приложения 113. В ответ на инициирующее событие, веб-приложение 113 обращается к локальному кэшу 104 и извлекает статические данные, определяющие общие части записей, то есть части записей, которые совместно используются веб-ресурсом «yandex.forcast.ru/moscow» и по меньшей мере другим веб-ресурсом (например, «yandex.forcast.ru/tver»). Как только статические данные получены, веб-приложение 113 также обращается к веб-ресурсу для получения динамических данных, специфичных для выбранного веб-ресурса. Затем веб-приложение 113 обрабатывает как статические, так и динамические компоненты для отображения пользователю электронного устройства 102.
[00061] В качестве неограничивающего примера приведем ниже образец манифеста, определяющий совместно используемые части записей, к которым будет осуществляться доступ из локального кэша (например, также называемый «белым списком»), и динамический контент, который должен быть загружен с веб-ресурса (например, также называемый «черным списком»). Как может оценить специалист в данной области техники, манифест может быть воплощен как формат файла на основе JSON, который предоставляет разработчикам централизованное место для размещения метаданных, связанных с веб-приложением. Эти метаданные включают в себя, помимо прочего, имя веб-приложения, ссылки на значки, а также предпочтительный URL-адрес, который следует открывать, когда пользователь запускает веб-приложение. Манифест также может позволить разработчикам объявить ориентацию экрана по умолчанию для своего веб-приложения, а также предоставить возможность устанавливать режим отображения для приложения (например, в полноэкранном режиме). Кроме того, манифест может позволить разработчику «привязать» веб-приложение к URL-адресу. Это ограничивает URL-адреса, к которым применяется манифест, и предоставляет средства для «глубокой ссылки» на веб-приложение из других приложений. Кроме того, в соответствии с некоторыми вариантами осуществления, область действия может быть определена как область навигации манифеста, содержащая элементы области действия обработанного манифеста. Область навигации может ограничивать набор URL-адресов, по которым можно перемещаться по контексту приложения во время применения манифеста. Более подробная информация о том, как может быть реализована область действия, доступна по адресу https://www.w3.org/TR/appmanifest/#dfn-navigation-scope, содержание которой включено сюда посредством ссылки.
https://weather.tap.yandex.ru/manifest.json
[00062] Пример манифеста доступен по URL-адресу «». Содержание которого воспроизводится ниже.
{
"name": "Яндекс.Погода",
"short_name": "Погода",
"icons": [
{
"src": "https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/favicon.png",
"type": "image/png",
"sizes": "512x512"
},
{
"src": "https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/favicon.svg",
"type": "image/svg+xml"
}
],
"lang": "ru",
"start_url": "https://yandex.ru/pogoda",
"yandex": {
"manifest_version": 1,
"base_url": "https://yandex.ru/pogoda",
"splash_screen_color": "#fff",
"app_version": "20201130.1517",
"cache": {
"pages": [
{
"url": "redirect_to_network",
"filters": [
{
"pathEquals": "/pogoda/map"
},
{
"pathEquals": "/pogoda/map/"
},
{
"pathEquals": "/pogoda/maps"
},
{
"pathEquals": "/pogoda/maps/"
},
{
"pathPrefix": "/pogoda/maps/"
},
{
"pathPrefix": "/pogoda/404"
},
{
"pathPrefix": "/pogoda/error"
},
{
"pathPrefix": "/pogoda/nowcast"
},
{
"pathPrefix": "/pogoda/meteum"
},
{
"pathPrefix": "/pogoda/compare"
},
{
"pathPrefix": "/pogoda/informer"
},
{
"pathPrefix": "/pogoda/favorites"
},
{
"pathPrefix": "/pogoda/find"
},
{
"pathPrefix": "/pogoda/segment/details"
},
{
"pathPrefix": "/pogoda/widgets/morda"
}
]
},
{
"url": "/pogoda/turboapp",
"filters": [
{
"pathEquals": "/pogoda"
},
{
"pathEquals": "/pogoda/"
},
{
"pathEquals": "/pogoda/details"
},
{
"pathEquals": "/pogoda/details/"
},
{
"pathPrefix": "/pogoda/search"
},
{
"pathPrefix": "/pogoda/month"
},
{
"pathPrefix": "/pogoda/month/"
},
{
"pathPrefix": "/pogoda/region"
},
{
"pathPrefix": "/pogoda/region/"
},
{
"originAndPathMatches": "^(?P<schema>https://)(?P<subdomain>[\\w-\\.]+\\.)?(?P<domain>yandex\\.ru)/(?P<service>pogoda)/(?P<slug>[\\w-]+)?/?((?P<details>details/?(?P<day>today|tomorrow|day-\\d)?/?)|(?P<month>month/?(?P<monthname>january|february|march|april|may|june|july|august|september|october|november|december)?/?))?$"
}
]
}
],
"resources": [
"https://yandex.ru/pogoda/turboapp",
"https://mc.yandex.ru/metrika/tag_turboapp.js",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/index.html",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/loadable-stats.json",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/css/0.30278c65.chunk.css",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/css/1.b0f1e724.chunk.css",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/css/3.6c7088c8.chunk.css",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/css/details-screen.fc4114da.chunk.css",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/css/forecast_collapsed.f9ad49c0.chunk.css",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/css/main-screen.381260fe.chunk.css",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/css/main.335078b4.chunk.css",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/css/maps-widget.89db3ff7.chunk.css",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/css/month-screen.6ab368f9.chunk.css",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/css/months-card.b6db34d0.chunk.css",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/css/region-screen.a80b3ac4.chunk.css",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/css/search-screen.98e0c2a1.chunk.css",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/js/0.88e73dc1.chunk.js",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/js/1.c8fc469e.chunk.js",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/js/2.b36aa31b.chunk.js",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/js/3.7018e5ca.chunk.js",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/js/details-screen.6f352768.chunk.js",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/js/forecast_collapsed.f5660f41.chunk.js",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/js/i18n-be.b144eabc.chunk.js",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/js/i18n-en.a6e36625.chunk.js",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/js/i18n-kk.de74da27.chunk.js",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/js/i18n-ru.00f73de6.chunk.js",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/js/i18n-tr.7a7256aa.chunk.js",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/js/i18n-uk.a607d92c.chunk.js",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/js/i18n-uz.4ff88dd5.chunk.js",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/js/main-screen.4dafdd7d.chunk.js",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/js/main.ea227dc5.chunk.js",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/js/maps-widget.d9da936b.chunk.js",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/js/month-screen.ebdae519.chunk.js",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/js/months-card.dd8ecbde.chunk.js",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/js/polyfill-abortcontroller.b6e36ed6.chunk.js",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/js/polyfill-es.dab437b7.chunk.js",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/js/polyfill-fetch.ae7e4cf2.chunk.js",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/js/polyfill-intersection-observer.f2dfa2b7.chunk.js",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/js/polyfill-url-search-params.175dbe01.chunk.js",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/js/region-screen.e8dd60c5.chunk.js",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/js/rum-debug.b2bdc48e.chunk.js",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/js/runtime-main.06cf34aa.js",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/js/search-screen.7dbe5ad6.chunk.js",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/-bl.028288d8.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/-bl.a6cb246e.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/-bl.d33be55f.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/arrow-gray-redesign.258d2a91.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/arrow-gray.74e4c786.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/arrow-white.fd6c98a0.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/be-default.b6d8e303.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/be-white.961229d1.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_+ra_d.608b199a.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_+ra_d.dd1ef551.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_+ra_d.fb683ff3.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_+ra_n.0562d14d.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_+ra_n.0d6f060e.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_+ra_n.60e61d82.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_+sn_d.02499ce7.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_+sn_d.7463e196.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_+sn_d.76c4c825.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_+sn_n.2b5aa593.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_+sn_n.6939fb6f.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_+sn_n.ea449589.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_-ra_d.99bc093e.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_-ra_d.b4fb0298.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_-ra_d.d4ff9444.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_-ra_n.6d0b97e6.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_-ra_n.720dfb08.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_-ra_n.9846218d.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_-sn_d.3f071e16.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_-sn_d.567d3e92.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_-sn_d.6276bbad.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_-sn_n.2c629598.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_-sn_n.50b752a6.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_-sn_n.c2a79ba0.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_d.0e44f60d.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_d.507ed893.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_d.745809a3.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_n.9c5fae5d.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_n.cb92099e.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_n.dbdec1f6.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_ra_d.3ffded79.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_ra_d.6d58981e.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_ra_d.c8466286.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_ra_n.0221a313.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_ra_n.b961479a.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_ra_n.f736a5c3.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_sn_d.1df5a23a.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_sn_d.c252f568.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_sn_d.ef0c3b57.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_sn_n.12aaa823.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_sn_n.eff41c26.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bkn_sn_n.f0d05bcf.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bl.086fda5c.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bl.4e2c6f89.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/bl.9f31071f.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/burger.7d5bebe9.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/chevron-black.526700dd.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/chevron-black_new.78903e35.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/chevron-blue.3f49a22d.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/chevron-gray.7060794c.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/chevron-red.cd41dd4f.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/chevron-red_new.5f8ccd1c.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/chevron-white.5c56a16e.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/cross-black.a6126943.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/cross-filled.84d4e8c5.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/cross.9240c3e2.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/current-location-dark.68731771.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/current-location-light.0347faaa.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/dst.2ec834f2.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/dst.95de009c.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/dst.9fac3e22.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/du_st.748c564b.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/du_st.7881e1a4.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/du_st.e80594e7.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/du_ts.361caa71.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/du_ts.363b5d1f.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/du_ts.7f0c1cae.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/en-default.eaa3a086.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/en-white.4c9604a4.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fct_+ra.17812e03.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fct_+ra.8890d812.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fct_+ra.ad5c39ee.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fct_+sn.1acdd3dd.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fct_+sn.39a24593.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fct_+sn.dd5f5edc.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fct_-ra.0553ada6.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fct_-ra.2885fdbe.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fct_-ra.b85bf99c.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fct_-sn.4b370673.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fct_-sn.71a22827.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fct_ra.15ff528e.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fct_ra.6dbad07a.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fct_ra.cc9bca3c.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fct_ra_sn.57ec19cf.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fct_ra_sn.5f12815b.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fct_ra_sn.ead0bdef.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fct_sn.0055e178.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fct_sn.2a4c5487.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fct_sn.ffea84cf.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fct_sn_dwn.141f01ad.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fct_sn_dwn.2da9aa13.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fct_sn_dwn.61f16380.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fct_sn_rs.15a4382a.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fct_sn_rs.c45e30a0.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fct_sn_rs.eb0495e0.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fct_ts.9ab6ba36.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fct_ts.a3e689b2.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fct_ts.bfccee93.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fct_ts_ra.68f07e6c.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fct_ts_ra.a4969a66.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fct_ts_ra.d6875132.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fg_d.65b834f6.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fg_d.79beebf8.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fg_d.d84c2c49.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fg_n.3966622b.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fg_n.7e39209d.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/fg_n.c7d0413a.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/flare.ea064673.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/humidity-filled.982ec59e.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/humidity-redesign.5c57a7c1.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/humidity.7a705302.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/humidity_white.25b56b8d.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/kk-default.d26e23f8.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/kk-white.5ca48da7.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/like.32764b9c.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/map-fallback.216749d1.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/meteum.7d80d76b.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/month.00bde7dc.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/no-location-dark.74a82c11.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/no-location-light-redesign.5eb1bbed.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/no-location-light.a619d121.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/nowcast.6250f867.jpg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc.4ec8ae47.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc.69a2808b.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc.a5966b7a.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_+ra.65bc7910.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_+ra.7b93d1b4.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_+ra.f35484b2.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_+sn.0b9ae39d.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_+sn.5634a808.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_+sn.d74a796a.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_-ra.d145b1a0.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_-ra.ea8ef392.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_-ra.fa55df18.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_-sn.76aa35f9.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_-sn.d210c2c9.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_-sn.dc7bf687.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_ha.13486786.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_ha.978cef61.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_ha.ad86c15a.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_ra.12a8d11d.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_ra.15fb4e51.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_ra.d855df85.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_ra_ice.105950ea.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_ra_ice.36701d9d.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_ra_ice.81478aae.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_ra_sn.0bd33083.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_ra_sn.1649b1ef.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_ra_sn.7c416d4e.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_sn.1441e82d.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_sn.54905698.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_sn.af42c17b.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_ts.1c585f6c.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_ts.b2636871.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_ts.d611b31c.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_ts_ha.185ea262.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_ts_ha.30b29061.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_ts_ha.91ebfed9.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_ts_ra.114d6344.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_ts_ra.4bf05ed5.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ovc_ts_ra.b8fc7076.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/pressure-redesign.3d318cb2.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/pressure-white-redesign.dd782f10.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/pressure.0c3d1865.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/pressure.9d40b83d.jpg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/pressure_white.b7eb9911.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/rain-day.41a23b3b.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/rain-level.79e72148.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/rain-night.900cff83.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ru-default.2515785c.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/ru-white.fc7359fe.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/search-gray.1520e96f.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/search-white-redesign.e0333865.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/search-white.ce089e28.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/search.3a5783a9.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/settings_app.1d204d63.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/skc_d.5e1afb19.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/skc_d.78152027.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/skc_d.88ac982b.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/skc_n.5c920051.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/skc_n.8f8938ec.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/skc_n.d081a629.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/smog.470fa20a.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/smog.7d39411b.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/smog.bf43f74b.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/stars1.2d3d0b98.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/stars2.364ba012.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/strm.19a1e2b1.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/strm.23f29724.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/strm.6e335a80.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/temp-water.0c77e142.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/temperature.5bcd7d4d.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/temperature.aca37006.jpg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/tick.59a1e6b7.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/tick.f6ad79d5.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/tr-default.0a2b543a.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/tr-white.68331cb0.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/tree-calm.7779ca41.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/tree-high.0d8c85cf.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/tree-light.af4a567c.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/tree-medium.7748c553.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/tree-storm.b5eba3e3.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/tree-upper-high.035652a0.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/tree-upper-medium.4c6b0b61.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/uk-default.2515785c.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/uk-white.fc7359fe.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/uz-default.0a3c586c.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/uz-white.942c1a3e.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/vlka.207da926.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/vlka.b23fd8f5.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/vlka.dc99e519.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/warning-redesign.d12a3449.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/warning.932ed10a.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/water-redesign.3007c7cf.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/water.ed689628.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/waterBg.66ab20d2.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/water_blue.14835797.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/water_white.20dfc200.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/wind-airflow.d772d673.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/wind-redesign.1a631bd6.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/wind.178b0e8e.jpg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/wind.aa003f5e.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/wind_white.b6a2a21a.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/yw-maps-widget__tab-icon_layer_nowcast-white.8692a164.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/yw-maps-widget__tab-icon_layer_nowcast.bc599b3c.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/yw-maps-widget__tab-icon_layer_pressure-white.b4b6ed96.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/yw-maps-widget__tab-icon_layer_pressure.cbf725e3.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/yw-maps-widget__tab-icon_layer_temperature-white.26ce61c1.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/yw-maps-widget__tab-icon_layer_temperature.9eb10e66.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/yw-maps-widget__tab-icon_layer_wind-white.8645df68.svg",
"https://yastat.net/s3/tap/weather/v0.193.0-cff1a81b7a7d41be1bd157cf3fdcea4b1960a5eb.0/static/media/yw-maps-widget__tab-icon_layer_wind.d6630a72.svg",
"https://yastatic.net/react/16.8.4/react-with-dom.min.js",
"https://yastatic.net/s3/home/fonts/ys/1/text-bold.woff2",
"https://yastatic.net/s3/home/fonts/ys/1/text-medium.woff2",
"https://yastatic.net/s3/home/fonts/ys/1/text-regular.woff2"
]
}
}
}
[00063] В приведенном выше примере эта часть представляет собой «черный список»:
"url": "redirect_to_network",
"filters": [
{
"pathEquals": "/pogoda/map"
[00064] Другими словами, запрос к подкаталогу /pogoda/map не будет подвергаться сопоставлению URL и будет поиском как есть. В этом примере, манифест настроен так, что подкаталог /pogoda/map запроса определяется как динамический контент и, следовательно, должен извлекаться из веб-ресурса, а не из локального кэша 104.
[00065] С другой стороны, в этом примере:
"url": "/pogoda/turboapp",
"filters": [
{
"pathEquals": "/pogoda"
[00066] Запрос к подкаталогу /pogoda будет заменен URL-адресом /pogoda/turboapp, который будет искать в сохраненном шаблоне статический контент в локальном кэше 104. Следует отметить, что сохраненный шаблон для статического контента может храниться в одном типе кэша, который отделен от кэша HTML. Другими словами, в некоторых вариантах осуществления, локальный кэш 104 является отдельным кэшем от кэша HTML, связанного с приложением 108 браузера. Точно так же кэш HTML, связанный с приложением 108 браузера, может хранить фактические недавно посещенные веб-страницы. Таким образом, в зависимости от времени запроса для данного пользовательского запроса статический контент может быть извлечен из локального кэша 104, в то время как динамический контент может быть извлечен из кэша HTML (например, если страница была недавно посещена и сохранена в кэше HTML). Таким образом, запрошенная страница может быть собрана без необходимости вообще обращаться к серверу, связанному с веб-ресурсом.
[00067] В других примерах, где запрошенная страница не была недавно посещена. Статический контент может быть получен из локального кэша 104, а динамический контент может быть получен с сервера, связанного с веб-ресурсом.
[00068] В некоторых вариантах осуществления, поиск статического и/или динамического контента выполняется в ответ на часть манифеста, соответствующую URL-адресу, и не выполняется, если запрошенный URL-адрес находится в черном списке.
[00069] Учитывая архитектуру и примеры, представленные в данном документе выше, можно выполнить реализованный на компьютере способ работы веб-приложения, в частности PWA, такого как веб-приложение 113, описанное выше. Со ссылкой на Фиг. 5 проиллюстрирована блок-схема последовательности операций способа 500, причем способ 500 может быть исполнен в соответствии с неограничивающими вариантами осуществления настоящей технологии. Способ 500 может выполняться электронным устройством 102.
Этап 502 - запуск веб-приложения для взаимодействия с выбранным веб-ресурсом.
[00070]
[00071] Способ 500 начинается на этапе 502, где электронное устройство 102 запускает веб-приложение 113 для взаимодействия с выбранным веб-ресурсом. В некоторых вариантах осуществления запуск осуществляется в ответ на инициирующее событие. В некоторых вариантах осуществления инициирующее событие определяется на основе области действия, связанной с веб-приложением, причем область действия включает в себя идентификаторы ресурсов, идентифицирующие веб-ресурсы. В некоторых вариантах осуществления идентификаторы ресурсов представляют собой унифицированные указатели ресурсов (URL), связанные с веб-ресурсами. В некоторых вариантах осуществления инициирующее событие определяется путем сравнения первого URL-адреса, связанного с выбранным веб-ресурсом, с URL-адресами области действия, связанной с веб-приложением. В некоторых вариантах осуществления инициирующее событие представляет собой действие перехода от страницы результатов поиска (SERP) к выбранному ресурсу.
Этап 504: доступ к локальному кэшу, хранящемуся в компьютерно-читаемой памяти устройства, причем локальный кэш содержит статические данные, а статические данные определяют совместно используемые части записей.
[00072]
[00073] На этапе 504 электронное устройство 102 обращается к локальному кэшу 104, хранящемуся в компьютерно-читаемой памяти электронного устройства 102. В некоторых вариантах осуществления, локальный кэш 104 содержит статические данные, причем статические данные определяют совместно используемые части записей. Каждая из совместно используемых частей записей связана с по меньшей мере двумя веб-ресурсами. В некоторых вариантах осуществления, каждая из совместно используемых частей записей определяет статический контент, общий для соответствующих по меньшей мере двух веб-ресурсов. В некоторых вариантах осуществления, связь совместно используемых частей записей с по меньшей мере двумя веб-ресурсами определяется на основе связи первого из идентификаторов ресурсов, связанного с первым из по меньшей мере двух веб-ресурсов, и второго из идентификаторов ресурсов, связанного  со вторым из по меньшей мере двух веб-ресурсов. В некоторых вариантах осуществления, связь основана на первом из идентификаторов ресурсов и втором из идентификаторов ресурсов, имеющих общий префикс. В некоторых вариантах осуществления связь предопределена на основе параметров TF/IDF. Еще в некоторых других вариантах осуществления, связь предварительно определена на основе предварительно определенных n-грамм. В некоторых вариантах осуществления статический контент содержит по меньшей мере одну из страницы профиля социальной сети, новой страницы или страницы-шаблона. В некоторых вариантах осуществления, статические данные, хранящиеся в локальном кэше, дополнительно определяют статический контент, уникальный для выбранного ресурса.
[00074] В некоторых вариантах осуществления, по меньшей мере одна совместно используемая часть записей, связанная с выбранным ресурсом, содержит первую совместно используемую часть записей, связанную с выбранным ресурсом, и вторую совместно используемую часть записей, связанную с выбранным ресурсом.
Этап 506: выбор среди совместно используемых частей записей, хранящихся в локальном кэше, по меньшей мере одной совместно используемой части записей, связанной с выбранным ресурсом.
[00075]
[00076] На этапе 506 электронное устройство 102 выбирает среди совместно используемых частей записей, хранящихся в локальном кэше, по меньшей мере одну совместно используемую часть записей, связанную с выбранным ресурсом.
Этап 508: получение по меньшей мере одной совместно используемой части записей, связанной с выбранным ресурсом.
[00077]
[00078] На этапе 508 электронное устройство 102 извлекает по меньшей мере одну совместно используемую часть записей, связанную с выбранным ресурсом, причем извлеченные совместно используемые части определяют статический компонент для выбранного ресурса.
Этап 510: получение из выбранного веб-ресурса динамического компонента для выбранного ресурса.
[00079]
[00080] На этапе 510 электронное устройство 102 извлекает из выбранного веб-ресурса динамический компонент для выбранного ресурса. В некоторых вариантах осуществления, этап 510 содержит выполнение подпрограммы сценария Java, загружающей динамический компонент с сервера, связанного с выбранным веб-ресурсом.
Этап 512: обработка веб-приложением статического компонента и динамического компонента для создания контента, отображаемого устройством.
[00081]
[00082] На этапе 512 электронное устройство 102 обрабатывает статический компонент и динамический компонент для создания контента, который будет отображаться устройством. В некоторых вариантах осуществления, способ 500 дополнительно включает в себя открытие веб-страницы, содержащей статический компонент и динамический компонент.
[00083] Модификации и улучшения вышеописанных реализаций настоящей технологии могут стать очевидными для специалистов в данной области техники. Предшествующее описание предназначено для того, чтобы быть примерным, а не ограничивающим. Поэтому предполагается, что объем настоящей технологии ограничен лишь объемом прилагаемой формулы изобретения.
[00084] Хотя вышеописанные реализации были описаны и показаны со ссылкой на конкретные этапы, выполняемые в конкретном порядке, следует понимать, что эти этапы могут быть объединены, подразделены или переупорядочены без отклонения от идей настоящей технологии. Соответственно, порядок и группировка упомянутых этапов ограничениями настоящей технологии не являются.