Система и способ для оптимизации передач загружаемого контента

Иллюстрации

Показать все

Изобретение относится к оптимизации передач загружаемого контента от поставщика контента в процессор. Технический результат заключается в повышении скорости доступа к контенту. Принимают первый локальный запрос первого фрагмента из множества фрагментов загружаемого контента, которые должны исполняться процессором. Преобразуют первый локальный запрос в первый удаленный запрос первого фрагмента загружаемого контента. Передают первый удаленный запрос. Принимают первый фрагмент загружаемого контента. Сохраняют первый фрагмент загружаемого контента. Используют процессор, чтобы исполнять первый фрагмент загружаемого контента до того, как другие части загружаемого контента станут доступными для исполнения процессором. Определяют, должен ли быть получен второй фрагмент из упомянутого множества фрагментов загружаемого контента. Если определено, что второй фрагмент должен быть получен, формируют запрос второго фрагмента, получают второй фрагмент и используют процессор, чтобы исполнять полученный второй фрагмент. 4 н. и 32 з.п. ф-лы, 7 ил.

Реферат

Область техники

[0001] Настоящее раскрытие относится, в целом, к доставке загружаемого контента, а более конкретно - к системам и способам для оптимизации передач загружаемого контента.

Уровень техники

[0002] В последние годы вычислительные устройства нашли универсальное применение в качестве основного источника информации, развлечений и связи. Продукты для конечного потребителя, объединяющие эти устройства, такие как телевизоры, DVD-проигрыватели, игровые консоли, компьютеры и т. п., создаются, изменяются и совершенствуются, чтобы облегчать доступ потребителя к цифровому контенту всех размеров и типов. Такой цифровой контент зачастую распространяется на физических носителях, таких как CD, DVD и диски Blu-ray (BD), но ограничен размером хранения физических носителей, на которых он содержится. Дополнительно физические носители требуют, чтобы потребители либо посещали местоположение физического магазина, либо иным способом имели носители, физически доставленные им. В любом случае, требуется фактическое, физическое владение носителями, откладывающее доступ и пользование цифровым контентом. Кроме того, физические носители являются уязвимыми к повреждению, такому как царапанье, ломание и общий физический износ, а также к отклонениям и дефектам в процессе производства. Такие проблемы могут вызывать задержки загрузки, ошибки или могут даже делать цифровой контент недоступным.

[0003] Таким образом, разработчики контента и производители начали распространять цифровой контент через Интернет, который решает многие из вышеописанных проблем, ассоциированных с физическими носителями. Например, потребителям не требуется получать во владение физический носитель из магазина или другого источника, и они могут вместо этого загружать контент в комфорте своего собственного дома. Это предоставляет возможность потребителям получать разнообразие цифрового контента, такого как изображения, музыка, игры, телевизионные шоу, фильмы, приложения, обновления, дополнительные возможности и т. д., с помощью одного щелчка кнопки. Однако размер загружаемого контента может быть ограничен доступной полосой пропускания, скоростью Интернета у потребителя и размером хранилища продукта конечного пользователя, выполняющего контент. Дополнительно выполнение многих типов контента требует, чтобы он был загружен полностью перед выполнением, опять же задерживая доступ потребителя и пользование желаемым контентом.

Сущность изобретения

[0004] Таким образом, существует непрерывная и продолжающаяся потребность в новых и улучшенных системах и способах для передачи цифрового контента через Интернет, которые уменьшают использование полосы частот, являются менее чувствительными к скорости Интернета у потребителя, не ограничены размером хранилища продукта конечного пользователя и обеспечивают более быстрый доступ к контенту. Варианты осуществления изобретения удовлетворяют эти и другие нужды, предоставляя систему и способ для оптимизации передач загружаемого контента, что предоставляет возможность начинать выполнение контента прежде, чем он полностью загрузится. Варианты осуществления, описанные в данном документе, являются динамическими, таким образом распространяя свое применение как к статическому, так и к интерактивному контенту. Дополнительно один или более из раскрытых вариантов осуществления могут быть реализованы с помощью исправления (патча) или драйвера в операционной системе пользовательского устройства, делая ненужной значительную модификацию исходного кода контента. Раскрытые варианты осуществления могут также работать независимо от и/или невидимо по отношению к исполняющемуся контенту. Это минимизирует количество ошибок, наблюдаемых пользователями, когда контент отображается.

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

[0006] Системы для осуществления этого способа также описываются в данном документе согласно варианту осуществления изобретения. Например, описывается система для оптимизации передач загружаемого контента. Система содержит процессор и память. Процессор функционирует, чтобы принимать первый локальный запрос первого фрагмента из множества фрагментов загружаемого контента, преобразовывать первый локальный запрос в первый удаленный запрос первого фрагмента загружаемого контента, передавать первый удаленный контент через сеть, принимать первый фрагмент загружаемого контента через сеть и выполнять первый фрагмент загружаемого контента. Память функционирует, чтобы хранить, по меньшей мере, один фрагмент из множества фрагментов загружаемого контента.

[0007] Система для оптимизации передач загружаемого контента с помощью модулей также описывается в варианте осуществления. Система содержит модуль преобразования, выполненный с возможностью преобразовывать первый локальный запрос первого фрагмента из множества фрагментов загружаемого контента в первый удаленный запрос первого фрагмента загружаемого контента; модуль связи, выполненный с возможностью принимать первый локальный запрос, передавать первый удаленный запрос и принимать первый фрагмент загружаемого контента; модуль выполнения, выполненный с возможностью выполнять первый фрагмент загружаемого контента; и модуль хранения, выполненный с возможностью хранить, по меньшей мере, один фрагмент из множества фрагментов загружаемого контента.

Краткое описание чертежей

[0008] Фиг. 1 - блок-схема последовательности операций, иллюстрирующая способ оптимизации передач загружаемого контента согласно варианту осуществления изобретения.

[0009] Фиг. 2 - блок-схема последовательности операций, иллюстрирующая способ оптимизации передач загружаемого контента согласно другому варианту осуществления изобретения.

[0010] Фиг. 3 - блок-схема последовательности операций, иллюстрирующая способ выполнения загружаемого контента согласно варианту осуществления изобретения.

[0011] Фиг. 4 - блок-схема последовательности операций, иллюстрирующая способ построения метаданных запросов загружаемого контента согласно варианту осуществления изобретения.

[0012] Фиг. 5 - блок-схема последовательности операций, иллюстрирующая способ оптимизации передач загружаемого контента согласно дополнительному варианту осуществления изобретения.

[0013] Фиг. 6 - схематичный чертеж, иллюстрирующий систему согласно варианту осуществления выполнения способов, описанных в данном документе.

[0014] Фиг. 7 - схематическое изображение машины, имеющей набор инструкций для инструктирования машине выполнять любой из одного или более способов, описанных в данном документе.

Подробное описание изобретения

[0015] Описываются система и способ для оптимизации передач загружаемого контента. В последующем описании, для целей пояснения, многие конкретные детали объясняются для того, чтобы обеспечивать полное понимание примерных вариантов осуществления. Специалисту в области техники понятно, однако, что варианты осуществления настоящего изобретения могут быть применены на практике без этих конкретных деталей или с эквивалентной компоновкой. В некоторых случаях хорошо известные структуры и устройства показаны в форме блок-схемы для того, чтобы избегать ненужного усложнения вариантов осуществления.

[0016] Обращаясь теперь к чертежам, при этом одинаковые ссылочные номера обозначают идентичные или соответствующие части повсеместно на нескольких видах, фиг. 1 - это блок-схема последовательности операций, иллюстрирующая способ для оптимизации передач загружаемого контента согласно варианту осуществления изобретения. В этом варианте осуществления контент начинает выполнение прежде, чем его загрузка завершится, и последующие фрагменты контента запрашиваются "по требованию", когда они необходимы. Таким образом, пользователь не должен ожидать, чтобы полный, потенциально большой контент загружался перед началом выполнения, и может начинать пользование контентом, как только возможно. Дополнительно хранение потенциально неуместных данных исключается.

[0017] На этапе 110 обработки принимается локальный запрос фрагмента загружаемого контента. Локальный запрос может поступать в форме стандартной файловой операции относительно набора данных, ассоциированных с желаемым фрагментом загружаемого контента, и может быть передан от приложения операционной системе, например, как обсуждается далее в данном документе. Загружаемый контент может быть, например, видеоконтентом, звуковым контентом, игровым контентом и/или статическим визуальным контентом, включающим в себя игры, фильмы, программное обеспечение, ТВ-шоу, новости, музыкальные видеоклипы, разговорные шоу, анонсы, рекламные объявления, музыку, книги, аудиокниги, журналы, газеты, каталоги, обои, темы, "дополнительный" контент или любой другой тип контента, разделяемого на меньшие фрагменты исполняемого контента. Предполагается, что такой контент может быть создан пользователем или разработчиком, бесплатным или платным, полным или пробным и/или для продажи или для аренды. Кроме того, термин "фрагмент", используемый в данном документе, может соответствовать любой части загружаемого контента, которая имеет возможность деления на любые связанные или произвольные группы из одного или множества битов или байтов данных. Например, "фрагменты" контента могут соответствовать уровням, главам, сценам, актам, символам, фонам, текстурам, действиям, песням, темам, периодам, размерам, файлам, их частям и их комбинациям. В другом варианте осуществления, однако, "фрагменты" контента могут соответствовать данным, сгруппированным вместе с целью эффективности передачи, которые не имеют других легко очевидных общностей.

[0018] На этапе 115 принятия решения определяется, хранится ли запрошенный фрагмент загружаемого контента локально. Например, процессор может опрашивать локальную память на предмет запрошенного фрагмента загружаемого контента. Если запрошенный фрагмент загружаемого контента действительно хранится локально, он выполняется на этапе 140 обработки. Если запрошенный фрагмент загружаемого контента не хранится локально, локальный запрос преобразовывается, например, посредством процессора, в удаленный запрос на этапе 120 обработки. На этапе 125 обработки удаленный запрос передается. Например, удаленный запрос может быть передан от процессора локального устройства серверу. Сервер может затем выполнять обработку, описанную далее в данном документе, относительно фиг. 5, например.

[0019] Обращаясь снова к фиг. 1, запрошенный фрагмент загружаемого контента принимается на этапе 130 обработки. На этапе 130 обработки запрошенный фрагмент загружаемого контента сохраняется локально. Локальное хранение запрошенных фрагментов загружаемого контента гарантирует, что эти фрагменты загружаемого контента не должны повторно загружаться в случае, когда они запрашиваются снова. Фрагмент контента может быть запрошен множество раз, например, если один и тот же фон или образ в игре используется на множестве уровней.

[0020] На этапе 140 обработки запрошенный фрагмент загружаемого контента выполняется. Между тем, способ может повторяться на этапе 110 обработки для другого принятого локального запроса фрагмента загружаемого контента, в то время как предыдущий запрошенный фрагмент загружаемого контента выполняется. Другими словами, действия способа могут выполняться асинхронно, т. е. предоставляя возможность другой обработке продолжаться прежде, чем завершится предыдущая обработка.

[0021] Как проиллюстрировано на фиг. 1, другой локальный запрос фрагмента загружаемого контента может быть принят после сохранения первого фрагмента загружаемого контента на этапе 135 обработки. Хотя проиллюстрирован как возникающий в этом положении, однако последующие локальные запросы фрагментов загружаемого контента могут возникать в любой момент в процессе после приема первоначального локального запроса. Если, однако, впоследствии запрошенный фрагмент недоступен для выполнения после завершившегося выполнения непосредственно предшествующего запрошенного фрагмента, формируется сообщение об ошибке, и задержка реализуется, чтобы предоставлять возможность впоследствии запрошенному фрагменту закончить загрузку, как описано более подробно в данном документе со ссылкой на фиг. 3. Когда используется в данном документе, термин "последующий" ссылается только на порядок, в котором запросы принимаются, передаются и/или прогнозируются, и необязательно отражает то, что конкретный фрагмент контента находится "после" предыдущего запрошенного фрагмента контента относительно времени, порядка выполнения, местоположения в коде и т. д. Дополнительно предполагается, что один и тот же фрагмент контента может быть запрошен множество раз и, таким образом, составляет более чем один из запрашиваемого ранее, в настоящее время и/или впоследствии фрагмента контента.

[0022] Способ может продолжаться до тех пор, пока соединение между запрашивающим устройством и хостом загружаемого контента не будет прервано, пока загружаемый контент не будет выполнен полностью, или пока все фрагменты загружаемого контента не будут сохранены. Например, фрагменты игры могут продолжать запрашиваться и выполняться до тех пор, пока пользователь не выйдет из игры, не выключит игровую консоль или не закончит все уровни игры, или пока игра не будет загружена полностью. Таким образом, в случае, когда пользователь играет в игру в течение лишь короткого интервала времени и решает, что ему или ей не нравится игра, только небольшой объем игры загружается в игровую консоль. Это минимизирует потерю времени пользователем в ожидании загрузки непонравившейся игры, снижает потери пропускной способности и/или потери на получение/хранение данных по непонравившейся игре и сокращает объем памяти, занятый непонравившейся игрой на игровой консоли.

[0023] Аналогично, когда все уровни игры завершены, и пользователь больше не хочет играть в игру, только фрагменты игры, необходимые пользователю в процессе игры, загружены в игровую консоль. Это минимизирует потерю времени пользователем в ожидании загрузки ненужных файлов или характерных признаков, величину потери пропускной способности и/или разрешенных объемов данных по загрузке ненужных файлов или характерных признаков и объем памяти, занятой ненужными файлами или характерными признаками.

[0024] Фиг. 2 - это блок-схема последовательности операций, иллюстрирующая способ оптимизации передач загружаемого контента согласно другому варианту осуществления изобретения. Согласно этому варианту осуществления фрагменты загружаемого контента запрашиваются "по требованию", когда они необходимы для выполнения, на основе прогнозирования того, какие фрагменты будут необходимы для выполнения, или в обоих случаях. Запросы фрагментов загружаемого контента прогнозируются локально, и спрогнозированные фрагменты загружаемого контента получаются до (или полностью без) приема локального запроса этих фрагментов.

[0025] На этапе 210 обработки принимается первоначальный локальный запрос первоначального фрагмента загружаемого контента. На этапе 215 принятия решения определяется, хранится ли первоначальный фрагмент загружаемого контента локально. Если первоначальный фрагмент загружаемого контента действительно хранится локально, первоначальный локальный запрос сохраняется на этапе 237 обработки, и первоначальный фрагмент загружаемого контента выполняется на этапе 240 обработки. Если первоначальный фрагмент загружаемого контента не сохранен локально, однако, первоначальный локальный запрос преобразовывается в удаленный запрос для первоначального фрагмента загружаемого контента на этапе 220 обработки. На этапе 225 обработки удаленный запрос передается, а на этапе 230 обработки принимается первоначальный фрагмент загружаемого контента. На этапе 235 обработки сохраняется первоначальный фрагмент загружаемого контента, а на этапе 237 обработки сохраняется первоначальный локальный запрос. Первоначальный фрагмент загружаемого контента выполняется на этапе 240 обработки.

[0026] Слово "первоначальный", когда используется, указывает фрагмент контента, соответствующий первому запросу при конкретном выполнении контента, и необязательно указывает, что фрагмент является первым фрагментом контента относительно времени, порядка выполнения, местоположения в коде и т. д. Таким образом, например, "первоначальным" фрагментом игры может быть уровень 7, "первоначальным" фрагментом видео может быть середина видео, "первоначальным" фрагментом книги может быть глава 8 и т. д. В другом варианте осуществления, однако, "первоначальный" фрагмент контента может соответствовать минимальному рабочему набору данных для загружаемого контента или может фактически соответствовать фрагменту загружаемого контента, который, как предполагается, выполняется первым относительно всего контента. Что касается последнего, первоначальным фрагментом мог бы быть, например, уровень 1 игры, первые 10 секунд видео, глава 1 книги и т. д. В любом случае, по меньшей мере, первоначальный фрагмент загружаемого контента может требоваться, чтобы быть локально сохраненным перед началом выполнения загружаемого контента согласно варианту осуществления. Требуя, чтобы первоначальный фрагмент контента был загружен перед началом выполнения, пользовательское восприятие может быть улучшено, минимизируя задержки или перерывы в выполнении. Таким образом, например, пользователю, начинающему игру в первый раз, может потребоваться загрузить уровень 1 игры перед участием в игре, или пользователю, возвращающемуся к игре после остановки на уровне 4, может потребоваться загрузить уровень 5 игры перед участием в игре.

[0027] Как показано на фиг. 2, последующий запрос фрагмента загружаемого контента может быть спрогнозирован на этапе 250 обработки. В этом варианте осуществления последующий запрос прогнозируется локально, например, устройством, выполняющим загружаемый контент. Такие прогнозы могут быть выполнены с помощью, например, предыдущих запрошенных фрагментов загружаемого контента (например, первоначального фрагмента загружаемого контента), предыдущих локальных запросов (например, сохраненного первоначального локального запроса), метаданных загружаемого контента (например, заголовка, размера, типа, издателя), метаданных запрашивающего устройства (например, типа, операционной системы, пространства хранения, типа соединения), пользовательских метаданных как для текущего пользователя, так и других пользователей (например, демографической информации, истории доступа к контенту) и метаданных запросов загружаемого контента (например, последовательного журнала сделанных локальных запросов). Необязательно спрогнозированный запрос может быть сохранен как метаданные спрогнозированного запроса.

[0028] Метаданные запросов загружаемого контента не ограничиваются журналом запросов, выполненных в конкретном исполняемом контенте, и могут включать в себя журналы запросов, выполненных также в другом, ранее выполненном контенте. Например, последующий запрос конкретной активной игрой может быть спрогнозирован с помощью метаданных запроса другой активной игры на основе предположения, что активные игры выполняют аналогичные функции в аналогичном порядке. Такие предположения могут быть сделаны не только на основе жанра запрошенного контента, но также его платформы, издателя, автора, даты выпуска или любых других доступных метаданных контента.

[0029] На этапе 215 принятия решения определяется, хранится ли спрогнозированный фрагмент загружаемого контента локально. Если спрогнозированный фрагмент загружаемого контента действительно хранится локально, способ продолжается на этапе 265 обработки, как описано далее в данном документе. Если спрогнозированный фрагмент загружаемого контента не хранится локально, однако, удаленный запрос для спрогнозированного фрагмента загружаемого контента формируется на этапе 255 обработки. На этапе 257 обработки удаленный запрос передается, а на этапе 260 обработки принимается спрогнозированный фрагмент загружаемого контента. На этапе 263 обработки спрогнозированный фрагмент загружаемого контента сохраняется, и способ продолжается на этапе 265 обработки. Локальное хранение спрогнозированных фрагментов загружаемого контента гарантирует, что эти фрагменты не должны будут повторно загружаться в случае, когда они потребуются (например, если прогноз является правильным) или опять спрогнозируются. Этапы 250-263 могут быть выполнены независимо от приложения или модуля, формулирующего локальные запросы.

[0030] На этапе 265 обработки принимается последующий локальный запрос фрагмента загружаемого контента. На этапе 270 принятия решения определяется, совпадает ли последующий локальный запрос со спрогнозированным запросом, т. е. являются ли запросы запросами в отношении одного и того же фрагмента загружаемого контента, например, посредством осуществления доступа к метаданным спрогнозированного запроса. Метаданные спрогнозированного запроса могут обновляться, чтобы отражать то, был или нет прогноз точным, и могут использоваться, чтобы уточнять последующие прогнозы.

[0031] Если последующий локальный запрос совпадает с спрогнозированным запросом, тогда последующий локальный запрос сохраняется на этапе 273 обработки, и спрогнозированный фрагмент загружаемого контента выполняется на этапе 275 обработки. Если последующий локальный запрос не совпадает со спрогнозированным запросом, тогда определяется, хранится ли запрошенный фрагмент загружаемого контента локально, на этапе 280 принятия решения. Если запрошенный фрагмент загружаемого контента действительно хранится локально, тогда последующий локальный запрос сохраняется на этапе 293 обработки, и запрошенный фрагмент загружаемого контента выполняется на этапе 295 обработки. Если запрошенный фрагмент загружаемого контента не хранится локально, тогда последующий локальный запрос преобразовывается в удаленный запрос на этапе 283 обработки, и удаленный запрос передается на этапе 285 обработки. На этапе 287 обработки запрошенный фрагмент загружаемого контента принимается, а на этапе 290 обработки он сохраняется. Последующий локальный запрос сохраняется на этапе 293 обработки, и запрошенный фрагмент загружаемого контента выполняется на этапе 295 обработки.

[0032] Этапы 250-295 могут повторяться для любого числа фрагментов загружаемого контента. Локальные запросы, сохраненные на этапах 237, 273 и 293, например, могут использоваться, чтобы создавать и расширять метаданные запросов загружаемого контента для того, чтобы делать последующие прогнозы (как для запрошенного контента, так и для будущего запрошенного контента) более точными. Способ может продолжаться до тех пор, пока соединение между запрашивающим устройством и хостом загружаемого контента не будет прервано, пока загружаемый контент не будет выполнен полностью, или пока все фрагменты загружаемого контента не будут сохранены.

[0033] Хотя проиллюстрированы как случающиеся повторно только после приема последующего локального запроса и выполнения запрошенного фрагмента контента, предполагается, что последующие запросы могут быть спрогнозированы, и спрогнозированные фрагменты контента загружаются прежде, чем принимается локальный запрос, ассоциированный с предыдущим прогнозом. Например, после приема первого локального запроса на этапе 210 и выполнения первого фрагмента контента на этапе 240 может быть сделан первый прогноз о том, для чего будет второй локальный запрос, на этапе 250, и спрогнозированный запрос контента может быть загружен и сохранен на этапах 260 и 263 соответственно. В то время как первый фрагмент контента выполняется на этапе 240 и до того как второй локальный запрос принимается на этапе 265, может быть сделан второй прогноз о том, для чего будет третий локальный запрос, и спрогнозированный фрагмент контента может быть загружен и сохранен.

[0034] Прогнозы и ассоциированные загрузки (скачивания) могут продолжаться постоянно, пока выполняется способ, или могут приостанавливаться или прекращаться в любой момент в способе. Например, прогнозы могут приостанавливаться, когда принимается следующий локальный запрос, причем в этот момент прошлые или будущие прогнозы могут быть уточнены. Кроме того, прогнозы могут приостанавливаться, когда было сделано некоторое число спрогнозированных запросов (или некоторое количество спрогнозированных фрагментов контента было загружено) после выполняющегося в настоящее время запроса или фрагмента контента. Например, если уровень 1 игры выполняется в настоящий момент в соответствии с первым локальным запросом, а последующие локальные запросы еще не приняты, прогнозы могут быть ограничены следующими двумя запросами. Таким образом, второй и третий запросы для уровня 2 и 3, соответственно, могут быть спрогнозированы, и их соответственные фрагменты игры загружены. Однако четвертый запрос не может быть спрогнозирован до тех пор, пока не будет принят реальный второй локальный запрос. Поскольку метаданные запросов загружаемого контента могут обновляться при приеме второго локального запроса, такой вариант осуществления предоставляет возможность уточнения будущих запросов, чтобы они были более точными, и только ограниченное количество спрогнозированных фрагментов контента будет загружено тем временем. Дополнительно объем памяти, выделенный для спрогнозированных фрагментов контента (которые могут быть или могут не быть фактически необходимы для выполнения), ограничивается. Таким образом, если пользователь выключает игру прежде, чем принимается второй локальный запрос, и никогда не играет снова в игру, только ограниченный объем памяти занят ненужными данными.

[0035] При приеме второго локального запроса на этапе 265 обработки способ может переходить к этапу 270 принятия решения относительно первого прогноза. Другими словами, второй локальный запрос может быть сравнен с первым прогнозом на этапе 270, и способ может продолжаться, как проиллюстрировано. Далее, после сохранения второго локального запроса на этапе 273 или 293 обработки, метаданные запросов загружаемого контента могут быть обновлены, и последующие прогнозы могут быть уточнены. Например, второй прогноз (и любые другие прогнозы, сделанные перед приемом второго локального запроса) может быть уточнен на основе контента второго локального запроса и обновленных метаданных запроса, и новые прогнозы могут продолжать создаваться.

[0036] Фиг. 3 - это блок-схема последовательности операций, иллюстрирующая способ выполнения загружаемого контента, принятого, как описано посредством фиг. 1 или 2, например. Выполнение контента может включать в себя, например, вывод контента, например, посредством отображения контента, на который могут влиять одни или более пользовательских входных данных. Согласно варианту осуществления, показанному на фиг. 3, выполняется первый фрагмент загружаемого контента, и, после завершения выполнения первого фрагмента, выполняется второй фрагмент, и т. д. и т. п. Если, однако, впоследствии запрошенный фрагмент недоступен для выполнения после завершения выполнения непосредственно предшествующего запрошенного фрагмента, формируется сообщение об ошибке, и реализуется задержка, чтобы предоставлять возможность последовательно загруженному фрагменту закончить загрузку. На этапе 310 обработки на фиг. 3 выполняется первоначальный фрагмент загружаемого контента. Только в целях иллюстрации этому фрагменту загружаемого контента назначено значение n=1. После начала выполнения первоначального фрагмента загружаемого контента n устанавливается как n=n+1 или n=2. Когда используются в данном документе, различные значения n относятся только к порядку, в котором конкретные фрагменты контента запрашиваются, передаются и/или прогнозируются и не обязательно отражают то, что конкретный фрагмент контента находится "после" предыдущего запрошенного фрагмента контента относительно времени, порядка выполнения, местоположения в коде и т.д. Дополнительно предполагается, что более чем одно значение n может относиться к одному и тому же фрагменту загружаемого контента, например, в случае фрагмента загружаемого контента, который запрашивается более чем один раз.

[0037] На этапе 320 принятия решения определяется, доступен ли n-ый фрагмент загружаемого контента для выполнения. Определение может быть сделано в любой момент после выполнения предыдущего фрагмента (т. е. n-1 фрагмента) контента. Например, доступность второго фрагмента может быть запрошена непосредственно после выполнения первоначального фрагмента контента; с конкретными интервалами во время выполнения первоначального фрагмента; в случайные моменты времени в течение выполнения первоначального фрагмента или прямо перед завершением выполнения первоначального фрагмента. Фрагмент загружаемого контента доступен для выполнения, когда, по меньшей мере, минимальный объем его данных сохранен, чтобы поддерживать выполнение. Например, фрагмент может быть доступен для выполнения, если он полностью загружен и сохранен, или если существует, по меньшей мере, минимальный рабочий объем данных фрагмента, чтобы начинать его выполнение.

[0038] Если n-ый фрагмент загружаемого контента доступен для выполнения, тогда он выполняется на этапе 330 обработки, и n устанавливается как n=n+1, и способ возвращается к этапу 320 принятия решения. Например, если второй фрагмент загружаемого контента доступен для выполнения, тогда он выполняется на этапе 330 обработки, и n устанавливается как n=n+1 или n=3. Затем будет определено, доступен ли третий фрагмент загружаемого контента для выполнения, на этапе 320 принятия решения и так далее для каждого n-го фрагмента загружаемого контента.

[0039] Если n-ый фрагмент загружаемого контента недоступен для выполнения, тогда выполнение загружаемого контента приостанавливается на этапе 340 обработки, и сообщение о задержке формируется на этапе 350 обработки. Это предотвращает возникновение ненормальных тайм-аутов и других ненормальных ситуаций. Дополнительно значение n остается неизменным. Таким образом, способ продолжает определять, доступен ли n-ый фрагмент загружаемого контента для выполнения, на этапе 320 принятия решения. Когда n-ый блок загружаемого контента доступен для выполнения, он выполняется на этапе 330 обработки, и n устанавливается как n=n+1. Способ возвращается к этапу 320 принятия решения и может повторяться для каждого n-го фрагмента загружаемого контента до тех пор, пока соединение между запрашивающим устройством и хостом загружаемого контента не прервется, или пока загружаемый контент не будет выполнен полностью.

[0040] Выполнение любого фрагмента загружаемого контента может приостанавливаться в любое время, чтобы предоставлять возможность продвижения или завершения загрузки n-го фрагмента. В этом варианте осуществления, однако, выполнение загружаемого контента приостанавливается, если n-ый фрагмент загружаемого контента недоступен для выполнения после завершившегося выполнения предыдущего фрагмента (т.е. n-1 фрагмента) контента. Например, если второй фрагмент загружаемого контента недоступен для выполнения, тогда общее выполнение загружаемого контента приостанавливается на этапе 340 обработки (т.е. задержка реализуется между завершившимся выполнением первоначального фрагмента и начавшимся выполнением второго фрагмента), и сообщение о задержке формируется на этапе 350 обработки. Значение n остается как n=2. Таким образом, способ продолжает возвращаться к этапу 320 принятия решения, чтобы определять, доступен ли второй фрагмент загружаемого контента для выполнения. Когда второй фрагмент загружаемого контента становится доступным для выполнения, он выполняется на этапе 330 обработки, и n устанавливается как n=n+1, или n=3 в этом примере. Затем определяется, доступен ли третий фрагмент загружаемого контента для выполнения на этапе 320 принятия решения, и т.д. и т.п. Способ повторяется для каждого локально запрошенного фрагмента загружаемого контента или до тех пор, пока соединение между запрашивающим устройством и хостом загружаемого контента не прервется.

[0041] Фиг. 4 - это блок-схема последовательности операций, иллюстрирующая способ создания и расширения метаданных запросов загружаемого контента согласно варианту осуществления изобретения. В этом варианте осуществления метаданные запросов загружаемого контента строятся удаленно, например, посредством сервера или третьей стороны, размещающей загружаемый контент. На этапе 410 обработки принимается удаленный запрос фрагмента загружаемого контента. На этапе 420 обработки запрошенный фрагмент загружаемого контента передается. На этапе 430 удаленный запрос сохраняется в файле метаданных запросов загружаемого контента. Способ повторяется для каждого принятого удаленного запроса фрагмента загружаемого контента, при этом удаленные запросы сохраняются последовательно согласно порядку их приема. Метаданные запросов загружаемого контента могут быть сохранены в привязке к многообразию другой информации, такой как метаданные загружаемого контента (например, заголовок, размер, тип, издатель), метаданные запрашивающего устройства (например, тип, операционная система, пространство хранения, тип соединения) и пользовательские метаданные как для текущего пользователя, так и для других пользователей (например, демографическая информация, история доступа к контенту).

[0042] Если уже не сохранены, метаданные загружаемого контента, метаданные запрашивающего устройства, пользовательские метаданные и/или метаданные запросов загружаемого контента могут быть запрошены, получены и расширены с помощью информации из множества источников, включающих в себя запрашивающее устройство; издателя, производителя и/или базы данных распространителей; веб-сайты третьих сторон и/или пользовательские устройства третьих сторон. Способ может продолжаться до тех пор, пока соединение между запрашивающим устройством и хостом загружаемого контента не прервется, или пока все фрагменты загружаемого контента не будут запрошены и/или переданы.

[0043] Фиг. 5 - это блок-схема последовательности операций, иллюстрирующая способ оптимизации передач загружаемого контента с помощью прогнозов согласно варианту осуществления изобретения. В этом варианте осуществления способ иллюстрируется относительно сервера, размещающего загружаемый контент. Предполагается, однако, что удаленные прогнозы, описанные относительно фиг. 5, могут быть объединены, чередоваться или выполняться одновременно или параллельно с локальными прогнозами, описанными относительно фиг. 2, синхронным или асинхронным образом. Дополнительно предполагается, что вариант осуществления на фиг. 5 может быть объединен, чередоваться или выполняться одновременно или параллельно с вариантом осуществления, описанным относительно фиг. 4, синхронным или асинхронным образом. Когда выполняются асинхронно, способы, проиллюстрированные на фиг. 4 и 5, могут принимать и исполнять запросы, а также создавать метаданные запросов загружаемого контента, в то же время прогнозируя будущие запросы.

[0044] На этапе 510 обработки на фиг. 5 принимается первоначальный удаленный запрос первоначального фрагмента загружаемого контента. В целях объяснения этому фрагменту загружаемого контента назначается значение n=1. На этапе 520 обработки передается первоначальный фрагмент загружаемого контента в ответ на первоначальный удаленный запр