CN118251656A - 渐进式网络应用程序(pwa)的服务工作线程的自动工作或自动生成代码 - Google Patents

渐进式网络应用程序(pwa)的服务工作线程的自动工作或自动生成代码 Download PDF

Info

Publication number
CN118251656A
CN118251656A CN202280075622.3A CN202280075622A CN118251656A CN 118251656 A CN118251656 A CN 118251656A CN 202280075622 A CN202280075622 A CN 202280075622A CN 118251656 A CN118251656 A CN 118251656A
Authority
CN
China
Prior art keywords
data
application
interface
view
content
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202280075622.3A
Other languages
English (en)
Inventor
尤盖希·拉舍得
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Publication of CN118251656A publication Critical patent/CN118251656A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45529Embedded in an application, e.g. JavaScript in a Web browser
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

一种用于配置文件和数据复制模型的方法、***和装置,该数据复制模型包括快照、合并、事务、单向(客户端到服务器/服务器到客户端)发布和订阅,用于不同类型的策略和规则,以缓存并获取与特定网络应用程序相关的资源。另一个重要的发明是,基于使用提供的用于缓存和获取策略和规则的可视化配置设置以及所选参数的关联值,为服务工作线程生成代码和组件。其它重要的发明是基于多个源(包括链接源)的多种类型的用户相关数据以及多种类型的用户操作和需求指示,显示或自动安装服务工作线程/复制工作线程使能的网络应用程序。

Description

渐进式网络应用程序(PWA)的服务工作线程的自动工作或自 动生成代码
技术领域
本发明通常涉及实现自定义无程序复制工作线程(program-less replicationworker),以基于快照、单向合并文件和数据复制模型以及拉取和推送订阅同步文件和数据以便基于定义或更新的缓存策略和规则缓存静态内容和动态数据,在配置文件中作为预定义的复制模型和缓存策略接收来自缓存或网络的请求并发送来自缓存或网络的响应。另一项重要的发明是实现开发者用户使渐进式网络应用程序(Progressive Web App,PWA)的服务工作线程(Service Worker)自动工作,或者基于阐明缓存策略的可视化界面、用户为所选参数和设置提供的值,自动生成渐进式网络应用程序的服务工作线程(PWA)的代码。本发明还涉及基于多个源的多种类型的用户相关数据建议、安装或自动安装或调用渐进式网络应用程序(PWA)。本发明还涉及基于快照、合并、事务、拉取、推送以及基于规则和调度的同步模型,智能地、可编程地或自动地从服务器同步网络应用程序相关资源和动态数据,使网络应用程序离线工作并更快地加载。
背景技术
渐进式网络应用程序(PWA)是一种通过网页发布的应用程序软件,使用HTML、CSS和JavaScript等网页技术(web technology)构建。其旨在在任何使用了符合标准的浏览器的平台上运行,包括桌面和移动设备。由于渐进式网络应用程序是一种称为网络应用程序的网页或网站,因此它们不需要单独的捆绑或分发。开发者只需在线发布网络应用程序,确保它满足基准“安装要求”,用户就可以将应用程序添加到他们的主屏幕。将应用程序发布到苹果应用商店(Apple App Store)或谷歌商店(Google Play)等数字分发***是可选的。如果网络应用程序满足“安装条件”,因而可以离线工作并可以添加到设备主屏幕,则该应用程序被视为PWA。为了满足此定义,所有PWA至少需要服务工作线程和清单。一些渐进式网络应用程序使用称为应用程序外壳模型(App Shell Model)的架构方法。在此模型中,服务工作线程将响应式网络设计网络应用程序的基本用户界面或“外壳”存储在浏览器的离线缓存中。此模型允许PWA在有或没有网络连接的情况下保持类似本机的使用。这可以通过提供初始静态帧、其中内容可以渐进式和动态加载的布局或架构来缩短加载时间。
服务工作线程是实现可编程网络代理的网络工作线程,该可编程网络代理可以响应主文档的网络/HTTP请求。其能够检查远程服务器的可用性,并在该服务器可用时缓存内容,并在后续将该内容提供给文档。与任何其它网络工作线程一样,服务工作线程与主文档上下文分开工作。服务工作线程可以在后台处理推送通知并同步数据、缓存或检索资源请求、拦截网络请求以及独立于注册它们的文档接收集中更新,即使该文档未加载亦是如此。服务工作线程实质上充当位于网络应用程序、浏览器和网络(如果可用)之间的代理服务器。其中,它们旨在实现有效离线体验的创建,拦截网络请求并根据网络是否可用采取适当的操作,并更新驻留在服务器上的资产。它们还允许访问推送通知和后台同步API。
服务工作线程语法比应用程序缓存(AppCache)的语法更复杂,但服务工作线程使用JavaScript以精细的粒度控制AppCache隐式行为,使其能够处理此问题以及更多问题。使用服务工作线程,可以轻松地将应用设置为首先使用缓存的资产,从而即使在离线时也能提供默认体验,然后从网络获取更多数据(通常称为离线优先)。这已经可用于本机应用程序,这是通常选择本机应用程序而不是网络应用程序的主要原因之一。
使用服务工作线程API和相关的推送和同步API来制作PWA,开发者需要思考不同类型的策略、模式和架构,并编写复杂的程序代码。这将需要大量的时间、金钱和精力。
数据复制(例如,微软TM SQL数据复制)包括快照、合并、事务发布以及拉取和推送订阅,并可实现数据同步,文件同步可实现单向或合并文件同步。
本发明使开发者能够可视化地选择、绘制、编辑、更新、测试、管理一种或多种缓存和获取资源的策略、模式和架构,并基于缓存和获取策略、规则、架构和模式的可视化或基于向导的配置,能够完全或半自动地生成服务工作线程的代码,其中,基于服务工作线程API、缓存API、获取API、推送API、同步API和其它网络API来生成代码。用户可以生成、编辑、测试、管理代码和发布网络应用程序。
替代地,本发明还使开发者能够使用无程序设置、基于向导和配置的服务工作线程或复制工作线程或基于数据和文件复制以及规则的静态内容和动态数据从/到本地存储、服务器和一个或多个源获取和缓存,请求和响应用于渲染网页或应用页面或界面的缓存资源。
安装渐进式网络应用程序非常快(几秒钟内)。渐进式网络应用程序与统一资源定位符(uniform resource locator,URL)关联或可通过URL进行访问。本发明能够大规模安装渐进式网络应用程序,其中,向每个用户建议,基于客户数据库实体的上下文渐进式网络应用程序、多个源的用户相关数据、实体的识别以及相关联的渐进式网络应用程序。
因此,本发明正是基于这些考虑因素和其它考虑因素而做出的。
发明目的
本发明的一个主要目的是基于向导基础配置或可视化地绘制、可视化地描述或者选择模型、策略、模式、架构、规则,选择参数并提供参数值供获取、缓存、请求、响应资源、内容、数据,生成服务工作线程代码。服务工作线程通过程序逻辑接收请求并响应请求,该程序逻辑包括生成的代码或编辑的生成代码。服务工作线程基于策略和规则,从客户端设备或服务器或服务器数据库或一个或多个源的本地存储中获取并且缓存资源或原始数据、内容或文件。
本发明的另一主要目的是可以配置数据复制和文件同步,包括快照、合并、事务发布、拉取和推送订阅、关联计划、设置和规则,配置文件同步,包括单向或双向或合并文件同步、从客户端到服务器或源或者服务器或源到客户端的拉取或推送文件或数据。客户端侧复制组件和服务器侧复制组件根据所述配置运行,并启用检索、获取、缓存、处理、存储文件和数据。客户端侧复制组件基于本地缓存的原始内容或用户客户端设备的本地存储中的文件和数据,接收请求并且响应请求或者发送响应,基于配置的或自动确定的或选择的用于缓存和获取资源的规则和策略,从一个或多个源(包括服务器或服务器存储或文件夹或目录和数据库)获取和缓存内容。
本发明的另一主要目的是基于用户介入搜索、匹配、选择和经由显示的PWA的选择,大规模安装渐进式网络应用程序(PWA)或网络应用程序,该显示的PWA的建议基础是基于多种类型的用户相关数据建议或自动安装PWA,包括用户配置文件、记录的用户活动、操作、事务、关键字、数字活动,包括访问网站、安装或使用应用程序、接收的消息、电子邮件、通信、协作、共享、互动、参与、反应、用户操作或调用操作(call-to-action),在/从/通过一个或多个源、地点,包括家庭或办公室地址、互动实体、访问或喜欢或添加书签的地点,以及链接的***或数据库,包括品牌、公司、商店、学院、学校等实体的客户、客户端、客人、患者、观众、访客数据库。
发明内容
下面将参考附图更全面地描述本发明,附图构成本发明的一部分,并且通过图示示出了可以实施本发明的具体示例性实施例。然而,本发明可以以许多不同的形式实施,并且不应被解释为仅限于本文所阐述的实施例;相反,提供这些实施例是为了使得本公开将详尽和完整,并将充分地将本发明的范围传达给本领域技术人员。其中,本发明可以体现为方法或设备。因此,本发明可以采取完全硬件实施例、完全软件实施例或软件和硬件方面相结合的实施例的形式。因此,以下详细描述不应从狭义上理解。
在整个说明书和权利要求书中,除非上下文另有明确规定,否则以下术语采用本文明确关联的含义。本文所用的短语“在一实施例中”不一定是指同一实施例,尽管也可能是指同一实施例。此外,本文所用的短语“在另一实施例中”并不一定指不同的实施例,尽管也可能是指不同的实施例。因此,如下所述,本发明的各种实施方式可以很容易地组合在一起,而不会偏离本发明的范围或精神。
此外,如本文所用,术语“或”是包含性“或”运算符,并且等同于术语“和/或”,除非上下文另有明确规定。术语“基于”不是排他性的并且允许以未描述的其它因素为基础,除非上下文另有明确规定。此外,在整个说明中,“一个”、“一种”和“所述”的含义包括复数引用。“在……中”的含义包括“在……中”和“在……上”。
如本文所用,术语从设备或组件“接收”请求、响应、检索到的或获取到的资源、内容和数据包括:间接接收请求、响应、检索到的或获取到的资源、内容和数据,例如,当由一个或多个其它设备或组件转发时。同样,向设备或组件“发送”请求、响应、检索到的或获取到的资源、内容和数据包括:间接发送请求、响应、检索到的或获取到的资源、内容和数据,例如,由一个或多个其它设备或组件转发时。
如本文所用,术语“客户端应用程序”是指运行在客户端计算设备上的应用程序。客户端应用程序可以用各种语言中的一种或多种编写,例如“C”、“C++”、“C#”、“J2ME”、Java、ASP.Net、VB.Net等。浏览器、电子邮件客户端、短信客户端、日历和游戏是客户端应用程序的示例。移动客户端应用程序是指在移动设备上运行的客户端应用程序。
如本文所用,术语“网络应用程序”是指基于计算机的应用程序,其直接或间接地与网络上的至少一个其它组件进行通信。网站、电子邮件服务器、消息服务器和游戏服务器是网络应用程序的示例。
简而言之,本发明针对:在运行环境中执行应用程序,所述应用程序的所述执行启动复制逻辑进程和对应于所述应用程序的第一视图界面的第一呈现进程;所述复制逻辑进程接收用于访问第一视图界面关联内容、文件和资源的统一资源定位符(URL)或链接的请求,或者接收用于访问数据的请求;所述复制逻辑进程基于所述第一视图界面的第一复制逻辑配置设置,从本地存储或服务器或一个或多个源检索包括第一视图界面关联数据、内容和资源的URL或链接在内的请求的URL或链接或者匹配的URL或链接关联数据、内容和资源,或者请求的数据;所述复制逻辑进程基于所述第一视图界面的第一复制逻辑配置设置,存储或更新从服务器或一个或多个源检索到的包括第一视图界面关联数据、内容和资源的URL或链接在内的请求的URL或链接或者匹配的URL或链接关联数据、内容和资源,或者请求的数据;在所述复制逻辑进程中获取所述第一视图界面的第一界面数据;通过所述运行环境将所述第一视图界面的初始第一界面数据从所述复制逻辑进程传输到所述第一呈现进程,所述复制逻辑进程基于所述第一视图界面的第一复制逻辑配置设置生成所述初始第一界面数据,其中,还包括:通过所述运行环境将一部分所述第一视图界面的更新数据从所述复制逻辑进程传输到所述第一呈现进程;和在所述第一呈现进程中,根据所述第一视图界面的初始第一界面数据渲染所述第一视图界面,其中,还包括:在所述第一呈现进程中,根据所述一部分所述第一视图界面的更新数据重新渲染所述一部分所述第一视图界面。
在一些实施例中,在所述复制逻辑进程中获取触发从所述第一视图界面切换到第二视图界面的事件;所述复制逻辑进程接收用于访问包括第二视图界面关联数据、内容和资源的URL或链接在内的URL或链接的请求,或者接收用于访问数据的请求;所述复制逻辑进程基于所述第二视图界面的第二复制逻辑配置设置,从本地存储或服务器或一个或多个源检索包括第二视图界面关联数据、内容和资源的URL或链接在内的请求的URL或链接或者匹配的URL或链接关联数据、内容和资源,或者请求的数据;所述复制逻辑进程基于所述第二视图界面的第二复制逻辑配置设置,存储或更新从服务器或一个或多个源检索到的包括第二视图界面关联数据、内容和资源的URL或链接在内的请求的URL或链接或者匹配的URL或链接关联数据、内容和资源,或者请求的数据;在所述复制逻辑进程中获取所述第二视图界面的第二界面数据;通过所述运行环境,将所述第二视图界面的第二界面数据从所述复制逻辑进程传输到对应于所述第二视图界面的第二呈现进程,所述应用程序在所述运行环境中的执行,在所述第一呈现进程开始后启动所述第二呈现进程;和在所述第二呈现进程中,根据所述第二视图界面的第二界面数据渲染所述第二视图界面。
在一些实施例中,在所述运行环境中,基于所述应用程序的程序标识符获取所述应用程序的生成的全局复制逻辑配置设置;在所述运行环境中,根据所述应用程序的生成的全局复制逻辑配置设置,启动所述逻辑进程和第一视图进程;在所述逻辑进程中,当所述应用程序的逻辑进程启动时,注册第一视图页面的第一生成的复制逻辑配置设置;在所述逻辑进程中,根据生成的所述第一复制逻辑配置设置,在所述第一视图进程中完成初始化后,获取所述第一视图页面的初始第一页面数据;并通过所述运行环境,将所述第一视图页面的初始第一页面数据从所述逻辑进程发送到与所述第一视图页面对应的第一视图进程。
在一些实施例中,在所述运行环境中,根据所述应用程序的所述生成的全局复制逻辑配置设置中的生成的全局复制逻辑配置设置,启动所述逻辑进程;并且,在由所述应用程序的所述执行提供的运行环境中,根据所述第一视图页面的全局特征启动所述第一视图进程,所述全局特征由所述应用程序的生成的全局页面复制逻辑配置设置所定义,所述生成的全局页面复制逻辑配置设置定义所述应用程序的视图页面的全局特征。
在一些实施例中,识别域或网站统一资源定位符(URL)特定的静态内容和动态数据;应用配置的一种或多种类型的文件和数据复制和同步模型以及与静态内容和动态数据相关的关联规则;以键(请求)和值(响应)形式接收并存储静态内容和动态数据;客户端组件接收用于访问统一资源定位符(URL)或链接特定网页的请求;所述客户端组件识别请求的URL或链接特定的静态内容和动态数据;基于请求的URL或识别出的链接特定的静态内容和动态数据生成网页;和渲染网页。
在一些实施例中,代码生成包括生成服务工作线程的代码,包括:识别任何类型的数字内容或数据,包括与网络应用程序相关的供获取和缓存的所选或自动识别的静态内容和动态数据;访问包括参数关联的值和数据复制模型相关的配置设置在内的定义的与可视化程序相关的获取和缓存策略、规则、模式;基于包括参数关联的值和数据复制模型相关的配置设置在内的定义的与可视化程序相关的获取和缓存策略、规则、模式,生成代码;和基于生成或编辑的代码生成文件,包括服务工作线程JavaScript文件。
在一些实施例中,可以编辑和合并不同生成代码,所述不同生成代码与包括参数关联的值和数据复制模型相关的配置设置在内的可视化程序相关的不同定义的获取和缓存策略、规则、模式相关。
在一些实施例中,注册服务工作线程;在安装服务工作线程的情况下,执行所述文件关联的代码;基于执行的代码,从客户端、服务器或其它一个或多个源访问或检索缓存的静态内容和动态数据或者获取和缓存静态内容和动态数据。
在一些实施例中,从可视化图形用户界面接收内容和数据规则、设置和所选参数关联值的缓存和获取的配置;基于接收到的内容和数据规则、设置和所选参数关联值的缓存和获取的配置,生成程序逻辑进程的代码;在运行环境中执行应用程序,所述应用程序的所述执行启动程序逻辑进程和对应于所述应用程序的第一视图界面的第一呈现进程;所述程序逻辑进程接收用于访问包括第一视图界面关联数据、内容和资源的URL或链接在内的URL或链接的请求,或者接收用于访问数据的请求;所述程序逻辑进程基于所述第一视图界面的第一程序逻辑代码,从本地存储或服务器或一个或多个源检索包括第一视图界面关联数据、内容和资源的URL或链接在内的请求的URL或链接或者匹配的URL或链接关联数据、内容和资源,或者请求的数据;所述程序逻辑进程基于所述第一视图界面的第一程序逻辑代码,存储或更新从服务器或一个或多个源检索到的包括第一视图界面关联数据、内容和资源的URL或链接在内的请求的URL或链接或者匹配的URL或链接关联数据、内容和资源,或者请求的数据;在所述程序逻辑进程中获取所述第一视图界面的第一界面数据;通过所述运行环境将所述第一视图界面的初始第一界面数据从所述程序逻辑进程传输到所述第一呈现进程,所述程序逻辑进程基于所述第一视图界面的第一程序逻辑代码生成所述初始第一界面数据,其中,还包括:通过所述运行环境将一部分所述第一视图界面的更新数据从所述程序逻辑进程传输到所述第一呈现进程;和在所述第一呈现进程中,根据所述第一视图界面的初始第一界面数据渲染所述第一视图界面,其中,还包括:在所述第一呈现进程中,根据所述一部分所述第一视图界面的更新数据重新渲染所述一部分所述第一视图界面。
在一些实施例中,从可视化图形用户界面接收内容和数据规则、设置和所选参数关联值的缓存和获取的配置;基于接收到的内容和数据规则、设置和所选参数关联值的缓存和获取的配置,生成程序逻辑进程的代码;在所述程序逻辑进程中获取触发从所述第一视图界面切换到第二视图界面的事件;所述程序逻辑进程接收用于访问包括第二视图界面关联数据、内容和资源的URL或链接在内的URL或链接的请求,或者接收用于访问数据的请求;所述程序逻辑进程基于所述第二视图界面的第二程序逻辑代码,从本地存储或服务器或一个或多个源检索包括第二视图界面关联数据、内容和资源的URL或链接在内的请求的URL或链接或者匹配的URL或链接关联数据、内容和资源,或者请求的数据;所述程序逻辑进程基于所述第二视图界面的第二程序逻辑代码,存储或更新从服务器或一个或多个源检索到的包括第二视图界面关联数据、内容和资源的URL或链接在内的请求的URL或链接或者匹配的URL或链接关联数据、内容和资源,或者请求的数据;在所述程序逻辑进程中获取所述第二视图界面的第二界面数据;通过所述运行环境,将所述第二视图界面的第二界面数据从所述程序逻辑进程传输到对应于所述第二视图界面的第二呈现进程,所述应用程序在所述运行环境中的执行,在所述第一呈现进程启动后启动所述第二呈现进程;和在所述第二呈现进程中,根据所述第二视图界面的第二界面数据渲染所述第二视图界面。
在一些实施例中,在所述运行环境中,基于所述应用程序的程序标识符获取所述应用程序的生成的全局配置代码;在所述运行环境中,根据所述生成的所述应用程序的全局配置代码,启动所述逻辑进程和第一视图进程;在所述逻辑进程中,当所述应用程序的所述逻辑进程启动时,注册第一视图页面的第一生成逻辑代码;在所述逻辑进程中,根据所述第一生成逻辑代码,在所述第一视图进程中的初始化完成后,获取所述第一视图页面的初始第一页面数据;并通过所述运行环境,将所述第一视图页面的初始第一页面数据从所述逻辑进程发送到对应于所述第一视图页面的所述第一视图进程。
在一些实施例中,在所述运行环境中,根据所述应用程序的所述生成的全局配置代码中生成的全局逻辑代码,启动所述逻辑进程;并且,在由所述应用程序的执行提供的所述运行环境中,根据所述第一视图页面的全局特征启动所述第一视图进程,所述第一视图页面的全局特征由所述应用程序的所述生成的全局配置代码中生成的全局页面配置代码定义,所述生成的全局页面配置代码定义所述应用程序视图页面的全局特征。
在一些实施例中,识别任何类型的数字内容或数据,包括与网络应用程序相关的供获取和缓存的所选或自动识别的静态内容和动态数据;访问包括参数关联的值的获取和缓存策略、规则、模式、可视化程序配置设置,以及获取和缓存策略和规则或可视化程序关联的定义的文件和数据复制模型;基于包括参数关联的值的获取和缓存策略、规则、模式、可视化程序配置设置,以及获取和缓存策略和规则或可视化程序关联的定义的文件和数据复制模型,生成配置文件。
在一些实施例中,监听、跟踪和访问用户提供的或来自连接或链接源的多种类型的用户相关数据;基于网络应用程序相关数据从用户相关数据中识别关键字,并识别来自一个或多个源的用户操作,所述源包括连接或链接源;识别识别到的关键字和用户操作相关的网络应用程序;显示识别到的网络应用程序;启用从显示出的网络应用程序中选择和添加网络应用程序;和在识别出网络应用程序的调用或从添加的网络应用程序中选择网络应用程序的情况下,自动安装和打开来自一个或多个源的网络应用程序。
在一些实施例中,在识别出接收选择、关键字、网络应用程序搜索查询或网络应用程序功能或触发触发器或接收事件或执行规则或识别用户操作的情况下,显示相关的网络应用程序以进行安装,或者从一个或多个源自动安装和打开启用了服务工作线程或启用了复制工作线程的网络应用程序,所述用户操作包括调用操作、事务、通信、共享、参与、位置或地点、语音、扫描代码或对象或识别状态。
在一些实施例中,在识别出触发用于指示卸载网络应用程序的触发器或事件的情况下,自动卸载或删除网络应用程序,其中,触发器包括根据设定的存储阈值检测存储需求或存储时间短,在预设时长内不打开网络应用程序,识别预设的使用次数,识别不适当的、报告的或垃圾邮件的网络应用程序。
在一些实施例中,在选择网络应用程序的情况下,安装网络应用程序,在关闭网络应用程序的情况下,自动卸载所述网络应用程序。
在一些实施例中,一种图形用户界面(graphical user interface,GUI)包括:在第一选项卡中加载第一打开的网络应用程序,并在第二选项卡中加载第二打开的网络应用程序;在选择第一选项卡的情况下,显示第一选项卡关联的第一应用程序;在第一选项卡中加载第一网络应用程序的第一功能,并在第二选项卡中加载第一网络应用程序的第二功能;在选择第一选项卡的情况下,显示第一应用程序的第一选项卡关联功能,在选择第二选项卡的情况下,显示第一应用程序的第二选项卡关联功能;在选择第二选项卡的情况下,显示第二选项卡关联的第二应用程序;在第一选项卡中加载第二网络应用程序的第二功能,并在第二选项卡中加载第二网络应用程序的第二功能;在选择第一选项卡的情况下,显示第二应用程序的第一选项卡关联功能,在选择第二选项卡的情况下,显示第二应用程序的第二选项卡关联功能;和在选择名称、图标或列表项或一种或多种类型的控件或者输入或选择统一资源定位符(URL)或网络地址的情况下,在父应用程序的关联选项卡或应用程序浏览器中加载、打开或调用关联的网络应用程序。
在一些实施例中,一种图形用户界面(GUI)包括:在第一选项卡中加载第一网络应用程序的第一打开或识别的功能,并在第二选项卡中加载第二网络应用程序的第二打开或识别的功能;在选择第一选项卡的情况下,显示第一应用程序的第一选项卡关联的第一功能,在选择第二选项卡的情况下,显示第二应用程序的第二选项卡关联的第二功能。
在一些实施例中,一种图形用户界面(GUI)包括:在选择第一应用程序或第一应用程序的第一功能的情况下,在父界面中加载和显示第一应用程序或第一应用程序的第一功能;在选择第二应用程序或第二应用程序的第二功能的情况下,卸载当前显示的第一应用程序或第一应用程序的第一功能,并在父界面中加载所选的第二应用程序或第二应用程序的第二功能;和在选择第一应用程序或第一应用程序的第一功能的情况下,卸载当前显示的第二应用程序或第二应用程序的第二功能,并在父界面中加载和显示第一应用程序或第一应用程序的第一功能。
从详细说明书中可以明显看出本发明的许多特征和优点,因此,所附权利要求旨在涵盖本发明的落入其真正精神和范围内的所有此类特征和优点。此外,由于本领域技术人员很容易想到许多修改和变化,因此不希望将本发明限制在所示和描述的确切结构和操作上,因此所有适当的修改和等同物均落入本发明的范围。
附图说明
本发明的非限制性和非穷尽性实施例参照以下附图进行描述。在附图中,除非另有说明,否则类似附图标记在各附图中是指类似部分。
为了更好地理解本发明,将参考以下具体实施方式,其与附图一起进行研读,其中:
图1是本发明可以实施的环境的一个实施例的***图;
图2示出了可用于本发明实施***中的客户端设备的一个实施例;
图3示出了可用于本发明实施***中的网络设备的一个实施例;
图4示出了示例性图形用户界面(GUI),用于通过文件管理器准备文件列表以添加到缓存中,基于表单生成清单文件,提供设置,创建服务工作线程的数据复制,准备网络应用程序包,发布管理以在开发者或发布者或提供者服务器135/145上发布包;
图5A和图5B示出了服务工作线程生命周期流程图,描述了注册和安装与服务工作线程相关的生成的代码文件和组件,以及在安装的情况下,在客户端侧拷贝或安装网络应用程序包文件,以及在激活服务工作线程的情况下,基于生成的或编辑的服务工作线程相关代码或编译的自定义组件中的预定义策略,接收用于访问缓存或网络资源的请求;
图6至图20示出了示例性图形用户界面(GUI),用于设计、可视化、绘制、可视化地准备不同类型的自定义或基于缓存策略选择的模板,并基于缓存策略和规则图或流程图或概念图以及由用户提供的所选关联参数的关联值,动态地且自动生成代码或程序或指令或生成组件(无程序),以使服务工作线程组件能够根据所述生成或编辑生成或组件进行缓存、获取和响应。在另一实施例中,缓存策略具体为生成或更新复制工作线程的配置文件;
图21示出了服务工作线程可以从缓存存储中加载请求的资源,也可以根据网络状况通过联机网络获取请求的资源。这些可编程界面极大地改善了网络应用程序用户的在线和离线浏览体验;
图22A、图22B和图23示出了文件同步和数据复制模型、拓扑和架构、快照复制的主要组件、合并复制和事务复制中使用的组件;
图24至图25示出了复制工作线程的各种类型的缓存策略;
图26示出了复制工作线程可以从缓存存储中加载请求的资源,也可以根据网络状况通过联机网络获取请求的资源。这些程序减少了界面,大大改善了网络应用程序用户的在线和离线浏览体验;
图27A和图27B示出了复制工作线程生命周期流程图,描述了注册和安装生成的复制工作线程相关的无程序配置文件,以及在安装的情况下,在客户端侧拷贝或安装网络应用程序包文件(来自开发者或发布者或提供者服务器135/145),以及在激活复制工作线程的情况下,基于在生成或编辑生成的复制工作线程相关自定义配置文件中定义的预定义策略,接收用于访问缓存或网络资源的请求;
图28示出了基于网络应用程序或PWA/小应用程序内部架构的服务工作线程/复制工作线程;
图29至图31示出了用于向导的示例性图形用户界面,使用户能够提供多种类型的数据或者接收和记录来自多个源的多种类型的用户相关数据,多个源包括链接的或连接的***、数据库、网络、应用程序、服务器、网站;
图32示出了用于启用了服务工作线程(SW)或复制工作线程(RW)的网络应用程序或渐进式网络应用程序商店的图形用户界面,其中,用户可以搜索、查看详细信息,从类别目录中选择,从建议或更新的网络应用程序/PWA列表中访问、选择和安装网络应用程序/PWA,并且可以管理、过滤排序、订购、卸载、升级并设置自动卸载设置和自动更新设置。用户可以手动创建各种类型的网络应用程序/PWA列表或类别,包括启用了服务工作线程/复制工作线程的网络应用程序/PWA,并且可以在稍后安装或者在首次单击或点击网络应用程序/PWA的名称或图标或控件或选择一个或多个网络应用程序/PWA时,自动在后台下载、安装、更新所选的网络应用程序/PWA。
图33示出了图形用户界面,用于自动显示当前位置、当前位置关联地点、当前位置关联地点关联的一种或多种类型的活动、当前预期事务的识别、搜索查询、当前交互实体、用户设备周围连接或相关用户、用户语音、语音指令扫描对象或代码(包括QR码)、识别的用户活动、状态、传入的一种或多种类型的通信,包括识别的传入电话呼叫或语音呼叫、SMS、消息、电子邮件关联的服务工作线程或启用了复制工作线程的网络应用程序或渐进式网络应用程序(PWA)以及功能、启用了服务工作线程或复制工作线程的网络应用程序或渐进式网络应用程序(PWA)的操作。
图34(A)和图34(B)示出了如何针对每个用户识别启用了上下文服务工作线程或复制工作线程的网络应用程序或渐进式网络应用程序(PWA),并按需安装网络应用程序或PWA。
图35(A)至图35(F)和图36(A)至图36(F)示出了基于识别或触发事件或触发器或规则、检测安装或卸载本机应用程序(native application)、访问网站、扫描QR码、用户设备环绕语音、语音指令、用户设备环绕连接或相关用户、访问地点、互动实体、执行的事务、输入统一资源定位符(URL)、拍照、观看视频、阅读内容、网页、博客、接收通信、网络优势、识别客户、订阅者、观众、成员、兴趣、采取调用操作、参与、位置、共享或者接收内容,建议安装或自动下载和安装网络应用程序/PWA。
图37示出了启用了服务工作线程或复制工作线程的网络应用程序或渐进式网络应用程序(PWA)浏览器和网络应用程序或PWA、网络应用程序或PWA的存储和管理,使用户能够通过统一资源定位符(URL)打开网络应用程序或PWA或网络应用程序或PWA的功能或页面。
具体实施方式
图1示出了可以在其中实践本发明的环境的一个实施例的组件。实践本发明可能并非需要所有的组件用于,并且在不脱离本发明的精神或范围的情况下可以对组件的布置和类型进行变化。如图所示,图1的***100包括客户端设备,特别是移动设备130和140。该***还包括网络或无线网络120、中央服务器115、存储器/数据库125、启用服务工作线程(service worker)或复制工作线程(replication worker)的网络应用程序或渐进式网络应用程序(PWA)发布者或提供者或开发者的服务器135/145。
根据本发明,可以使用多种客户端设备。客户端设备可以包括移动设备、诸如个人电脑和媒体中心的数字家庭客户端以及其他客户端设备。通常,移动设备135可以包括能够通过诸如网络120等网络接收和发送消息的几乎任何便携式计算设备。移动设备130/140也可以总体上被描述为配置成便携式的客户端设备。移动设备130/140可以具有使用无线技术、有线技术或有线和无线技术的组合而连接到网络的能力。因此,移动设备130/140可以包括能够连接到另一计算设备并接收信息的几乎任何便携式计算设备。这种设备包括便携式设备,诸如智能手机、手持式电脑、传感器、笔记本电脑、可穿戴电脑、平板电脑、智能手表、结合一个或多个前述设备的集成设备等。因此,移动设备130/140通常在性能和特征方面具有广泛的范围。
启用网络的移动设备可以包括浏览器应用程序(由服务工作线程启用),该浏览器应用程序被配置为接收和发送网页、基于网络的消息等。浏览器应用程序可以被配置为接收和显示图形、文本、视频、多媒体等,使用几乎任何基于网络的语言或协议,包括层叠样式表(Cascade Style Sheet,CSS)、超文本标记语言(HyperText Markup Language,HTML)、JavaScript可扩展标记语言(eXtensible Markup Language,XML)、网络API(Web API)、服务工作线程API(Service Workers API)、缓存API(Cache API)、获取API(Fetch API)、推送API(Push API)、同步API(Sync.API)、IndexedDB API等,以实现发布、搜索、共享、下载、安装、更新启用服务工作线程的网络应用程序和渐进式网络应用程序(PWA)。
移动设备130/140可以包括被配置为接收来自另一计算设备的内容的一个或多个其他客户端应用程序。该客户端应用程序可以包括提供和接收文本内容、图形内容、音频内容、视频内容等的能力。该客户端应用程序还可以提供标识其自身的信息,包括类型、能力、名称等。在一个实施例中,移动设备130/140可以通过多种机制中的任何一种来唯一地标识自身,包括电话号码、移动标识号(Mobile Identification Number,MIN)或移动订阅标识号(mobile subscription identification number,MSIN)或国际移动用户标识(international mobile subscriber identity,IMSI)或其他移动设备标识符。该信息还可以指示移动设备能够使用的内容格式。这种信息可以在发送到中央服务器115或其他计算设备的消息等中提供。
移动设备130/140还可以被配置为在诸如中央服务器115、另一网络服务器等的另一计算设备之间,通过诸如短消息服务(Short Message Service,SMS)、多媒体消息服务(Multimedia Message Service,MMS)、即时消息收发(instant messaging,IM)、互联网中继聊天(internet relay chat,IRC)、Jabber等来传送消息。然而,本发明不限于这些消息协议,可以使用几乎任何其他消息协议。
移动设备130/140还可以被配置为使得用户能够参与通信会话,诸如IM会话。这样,移动设备130/140可以包括客户端应用程序,该客户端应用程序被配置为代表客户端设备管理各种动作。例如,客户端应用程序可以使用户能够与浏览器应用程序、电子邮件应用程序、IM应用程序、SMS应用程序等进行交互。通常,即时消息收发为至少两个计算设备提供实时交换消息的能力。
移动设备130/140还可以被配置为包括客户端应用程序,该客户端应用程序使得最终用户能够登录到可以由网络应用程序管理的最终用户帐户。例如,这种最终用户帐户可以被配置为使得最终用户能够发布、注册、列出、下载、安装、管理、注册、登录网络应用程序或PWA、接收电子邮件、发送/接收IM消息、SMS消息和访问所选网页、维护数字钱包等。
网络120被配置为将移动设备130/140以及未示出的其他客户端设备及其组件与诸如中央服务器115等的其他网络设备耦合。网络120被配置为将包括移动电话130/140的响应方客户端设备与中央服务器115耦合。
尽管出于说明的目的,示出了网络和无线网络的组合,但在使用本发明的各种环境中,网络和无线网络120可以是单独的或相同的网络、不同的网络、或包括重叠组件和不同组件的组合的不同网络。因此,本文中描述网络120的讨论可以适用于描述网络120。
网络120可以包括各种有线或无线子网络中的任何一个,这些子网络还可以覆盖独立运行的自组织网络等,以为移动设备135提供面向基础设施的连接。这种子网络可以包括网状网络、无线LAN(Wireless LAN,WLAN)网络、蜂窝网络等。此外,网络120可以通过有线连接例如电缆、电话线、以太网等连接到移动设备。网络120可以包括诸如因特网之类的广域网。本发明可以通常与网络一起使用,特别是与无线网络一起使用,或者与无线和有线网络的各种组合一起使用。
网络120还可以包括通过无线无线电链路等连接的终端、网关、路由器等的自主***。这些连接器可以被配置为自由且随机地移动并且任意地组织其自身,使得网络120的拓扑结构可以快速地改变。
网络120还可以使用包括第二代(2G)、第三代(3G)、***(4G)和第五代(4G)无线接入的多种接入技术用于蜂窝***、WLAN、无线路由器(Wireless Router,WR)网格等。诸如2G、3G、4G、5G的接入技术和未来的接入网络可以支持移动设备(诸如具有不同程度移动性的移动设备130/140)的广域覆盖。例如,网络120可以通过诸如全球移动通信***(GlobalSystem for Mobile communication,GSM)、通用分组无线电服务(General Packet RadioServices,GPRS)、增强型数据GSM环境(Enhanced Data GSM Environment,EDGE)、宽带码分多址(Wideband Code Division Multiple Access,WCDMA)等无线电网络接入来实现无线电连接。本质上,网络120可以包括几乎任何通信机制,信息可以通过该通信机制在移动设备130/140与另一计算设备、网络等之间传播。
网络120还可以包括或使用一个或多个网络网关(未示出),其用作移动设备130/140和诸如中央服务器115的其他网络设备之间的中介。网络网关可以接收来自设备或网络的数据,转换数据,并将数据转送到另一设备或网络。网络网关可以在多个方向上执行转换。例如,转换可以包括修改协议或通信机制,以便促进两个设备或两个网络之间的通信,每个设备或网络可以使用不同的协议。WAP网关是一种网络网关。WAP网关可以促进使用无线应用协议(Wireless Application Protocol,WAP)的第一设备与第二设备之间的通信。例如,第二设备可以使用超文本传输协议安全(HyperText Transfer Protocol Secure,HTTPs)进行通信。SMS网关是促进使用短消息服务(SMS)协议的设备与另一设备(诸如使用HTTP的设备)之间的通信的网络网关。WAP/无线互联网协议和SMS网关结合了WAP/无线电互联网协议网关和SMS网关的特点。
在一个实施例中,网络120可以包括一个或多个组件和服务,该组件和服务操作以促进或实现从多个提供者135/145到包括移动设备和智能设备130/140以及中央服务器115的客户端设备来发布、上传、注册、列出、搜索、匹配、选择、注册、上传、主理、存储、处理、下载、安装、订阅、附加、更新、升级、共享、呈现和接入启用服务工作线程或本发明中新引入的复制工作线程的网络应用程序和渐进式网络应用程序(PWA)。
图1示出了移动设备130/140与中央服务器115进行通信,并且中央服务器115可以与网络应用程序/PWA提供者服务器135/145进行通信。图1还示出了中央服务器115与客户端设备130/140进行通信。这些通信中的每一个可以使用直接连接、或者一个或多个网络、或者它们的组合。为了说明的目的,图1示出了使用网络120的提供者服务器135/145和中央服务器115之间的通信,然而,包括这种通信的环境可以与本发明一起使用。特别地,中央服务器115和提供者服务器135/145可以使用直接通信、局域网或广域网(诸如网络120)中的任何一个或多个。
实现上述通信中的任何一个或多个的网络可以使用任何形式的计算机可读介质,用于将信息从一个电子设备传送到另一个。
此外,除了局域网(local area network,LAN)、广域网(wide area network,WAN)、诸如通过通用串行总线(universal serial bus,USB)端口的直接连接、其他形式的计算机可读介质或其任何组合之外,网络还可以包括因特网。在一组互连的LAN上,包括那些基于不同架构和协议的LAN,路由器用作LAN之间的链路,使消息能够从一个LAN发送到另一个LAN。此外,LAN内的通信链路通常包括双绞线或同轴电缆,而网络之间的通信链路可以使用模拟电话线、包括T1、T2、T3和T4的全部或部分专用数字线、综合服务数字网络(Integrated Services Digital Network,ISDN)、数字用户线(Digital SubscriberLine,DSL)、包括卫星链路的无线链路或本领域技术人员已知的其他通信链路。此外,远程计算机和其他相关电子设备可以经由调制解调器和临时电话链路远程连接到LAN或WAN。本质上,网络包括任何通信方法,通过该通信方法,信息可以在中央服务器115、提供者服务器135/145以及开发者、赞助商、广告商、客户端设备130/140和其他计算设备(未示出)之间传播。
此外,通信介质通常包含计算机可读指令、数据结构、程序模块或调制数据信号(诸如载波、数据信号或其他传输机制)中的其他数据,并且包括任何信息传递介质。术语“调制数据信号”和“载波信号”包括一种信号,该信号的一个或多个特性以对信号中的信息、指令、数据等进行编码的方式设置或改变。例如,通信介质包括有线介质,诸如双绞线、同轴电缆、光纤、波导和其他有线介质,以及无线介质,诸如声学、RF、红外和其他无线介质。
客户端设备130/140是可以由用户(被称为网络应用程序/PWA的用户和提供者开发者或发布者、用来接收和共享网络应用程序/PWA的接收者和共享用户)使用的计算设备。根据本发明,可以使用网络应用程序/PWA的各种用户和提供者开发者或发布者以及发送者和/或接收者客户端设备。客户端设备可以包括智能设备、移动设备、数字家庭客户端(诸如个人电脑、笔记本电脑、平板电脑、数字手表和媒体中心)以及其他客户端设备。通常,客户端可以包括几乎任何计算设备,便携式或非便携式,能够通过诸如网络120等网络发布、列出、注册、搜索、下载、安装网络应用程序/PWA 243、接收和共享网络应用程序/PWA的链接或统一资源定位符(uniform resource locator,URL)。客户端可以包括诸如本文所述的移动设备130/140的设备。尽管图1仅示出了几个客户端130/140,但是可以设想,本发明可以在包括发送者和接收者客户端的大型社区的环境中实践。因此,发送者和接收者客户端的数量可以是数百、数千、数十万、数百万,或者几乎任何数量。
尽管图1示出了具有作为单独计算设备的网络中央服务器115和提供者服务器130/140中的每一个的***的实施例,但是本发明不限于此。实施这些组件的任何部分的软件、硬件或硬件-软件组合可以与单个计算设备上的任何其他组件组合,或者以不同的方式布置在多个计算设备之间。任何组件的某些部分或全部功能可以在多个计算设备之间分布或复制。
下面结合图3更详细地描述可用于实施中央服务器115或提供者服务器130/140中的任何一个或多个的网络设备的一个实施例。然而,简言之,这种网络设备可以包括能够与其他网络设备通信以使网络应用程序或网站能够处理、发送和响应来自客户端设备的请求的任何计算设备,诸如下面结合图2更详细地描述的移动设备130/140。可以作为这些网络设备操作的设备包括个人电脑、台式电脑、多处理器***、基于微处理器或可编程消费电子产品、网络PC、服务器等,或其任何组合。
图1示出了移动设备130/140与中央服务器115进行通信的实施例。移动设备130/140的用户,被称为网络应用程序/PWA的用户/发布者或开发者或提供者,可以使用移动设备130/140将启用服务工作线程或复制工作线程的网络应用程序/PWA生成的代码/组件上传、注册、列出、发布到中央服务器115。中央服务器115可以接收和处理网络应用程序/PWA,注册和列出网络应用程序/PWA 352,以使网络或浏览器或操作***(operating system,OS)的用户能够搜索它们,并使浏览器或网络或OS的用户能够从移动设备130/140搜索、匹配、查看详细信息、从类别目录中选择、下载、安装、更新、升级、安装、卸载网络应用程序/PWA 243。中央服务器115可以使用用户和发布者设备的标识符或地址或者两者。例如,它可以使用用户/发布者或发送者和/或接收者的登录名或电子邮件地址。它可以使用设备的IP地址、MIN或其他标识符。中央服务器115在与浏览器、网络应用程序、PWA、网络应用程序/PWA的发布者或开发者或提供者或发送者和/或接收者设备的用户通信时,可以使用这些标识符或寻址机制中的任何一个或多个。如本文所使用的,除非上下文另有明确指示,否则术语“发送者”和“接收者”可用于指人、设备或人和设备的组合。
说明性客户端设备
图2示出了可以包括在实施本发明的***中的客户端设备200的一个实施例。客户端设备200可以包括比图2中所示的组件多得多或更少的组件。客户端设备可以包括网络应用程序/PWA 23的用户以及网络应用程序和PWA 243的发布者或开发者或提供者。然而,所示的组件足以公开用于实践本发明的说明性实施例。客户端设备200可以表示例如图1的用户客户端设备130/140。
如图所示,客户端设备200包括经由总线224与大容量存储器230通信的处理单元(CPU)222。客户端设备200还包括电源226、一个或多个网络接口250、音频接口252、视频接口259、显示器254、键盘256、照明器258、输入/输出接口260、可选触觉接口262和可选全球定位***(global positioning system,GPS)接收器264。电源226向客户端设备200提供电力。可以使用可再充电或不可再充电的电池来提供电力。电源也可以由外部电源提供,诸如AC适配器或对电池进行补充和/或充电的电动对接支架。
客户端设备200可以可选地与基站(未示出)通信,或者直接与另一计算设备通信。网络接口250包括用于将客户端设备200耦合到一个或多个网络的电路,并且被配置为与一个或多个通信协议和技术一起使用,该通信协议和技术包括但不限于:全球移动通信***(GSM)、通用分组无线服务(GPRS)和GSM演进增强型数据速率(EDGE)、3GPP开发的第三代(3G)UMTS标准,随后是***(4G)高级LTE和第五代5G标准、码分多址(code divisionmultiple access,CDMA)、“宽带CDMA”或W-CDMA,以及TD-CDMA和TD-SCDMA、时分多址(timedivision multiple access,TDMA)、用户数据报协议(user datagram protocol,UDP)、传输控制协议/互联网协议(transmission control protocol/Internet protocol,TCP/IP)、SMS、通用分组无线服务(GPRS)、WAP、超宽带(ultra wide band,UWB)、IEEE 802.16全球微波接入互操作性(Worldwide Interoperability for Microwave Access,WiMax)、SIP/RTP或各种其他无线通信协议中的任何一种。网络接口250有时被称为收发器、收发设备或网络接口卡(network interface card,NIC)。
音频接口252被布置为产生和接收诸如人声的音频信号。例如,音频接口252可以耦合到扬声器和麦克风(未示出),以实现与其他人的通信和/或生成用于某个动作的音频确认。显示器254可以是液晶显示器(liquid crystal display,LCD)、气体等离子体、发光二极管(light emitting diode,LED)或与计算设备一起使用的任何其他类型的显示器。显示器254还可以包括触敏屏幕,该触敏屏幕布置为接收来自对象(诸如手写笔或人手的手指)的输入。
视频接口259被布置为捕获视频图像,诸如静止照片、视频片段、红外视频等。例如,视频接口259可以耦合到数字摄像机、网络摄像机等。视频接口259可以包括镜头、图像传感器和其他电子设备。图像传感器可以包括互补金属氧化物半导体(complementarymetal-oxide-semiconductor,CMOS)集成电路、电荷耦合器件(charge-coupled device,CCD)或用于感测光的任何其他集成电路。
小键盘256可以包括被布置为接收来自用户的输入的任何输入设备。例如,小键盘256可以包括按钮数字拨盘或键盘。小键盘256还可以包括与选择和发送图像相关联的命令按钮。照明器258可以提供状态指示和/或提供光。照明器258可以在特定的时间段内或者响应于事件而保持活动。例如,当照明器258是活动的时,它可以背光小键盘256上的按钮并且在客户端设备被供电时保持开启。此外,当执行特定动作(诸如拨打另一客户端设备)时,照明器258可以以各种模式对这些按钮进行背光。照明器258还可以使位于客户端设备的透明或半透明外壳内的光源响应于动作而照明。
客户端设备200还包括用于与外部设备(诸如头戴式耳机)或图2中未示出的其他输入或输出设备通信的输入/输出接口260。输入/输出接口260可以利用一种或多种通信技术,诸如USB、红外、蓝牙.TM等。可选的触觉接口262被布置为向客户端设备的用户提供触觉反馈。例如,当另一计算设备的用户正在呼叫时,可选的触觉接口可以被使用从而以特定方式振动客户端设备200。
可选的GPS收发器264可以确定客户端设备200在地球表面上的物理坐标,其通常将位置输出为纬度和经度值。GPS收发器264还可以采用其他地理定位机制,包括但不限于三角测量、辅助GPS(assisted GPS,AGPS)、E-OTD、CI、SAI、ETA、BSS等,以进一步确定客户端设备200在地球表面上的物理位置。应当理解的是,在不同的条件下,GPS收发器264可以为客户端设备200确定毫米内的物理位置;而在其他情况下,所确定的物理位置可能不太精确,诸如在一米以内或明显更大的距离内。然而,在一个实施例中,移动设备可以通过其他组件提供可以用于确定设备的物理位置的其他信息,包括例如MAC地址、IP地址等。
大容量存储器230包括RAM 232、ROM 234和其他存储装置。大容量存储器230示出了用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的计算机存储介质的另一示例。大容量存储器230存储用于控制客户端设备200的低级别操作的基本输入/输出***(basic input/output system,“BIOS”)240。大容量存储器还存储用于控制客户端设备200的操作的操作***241。应当理解的是,该组件可以包括诸如UNIX或LINUX.TM的版本的通用操作***,或者诸如Windows Mobile.TM的专用客户端通信操作***,或者塞班.RTM操作***。操作***可以包括Java虚拟机模块或与之接口,该Java虚拟机实现经由Java应用程序控制硬件组件和/或操作***操作。
存储器230还包括一个或多个数据存储器244,此外客户端设备200可以利用数据存储器244来存储应用程序242,该应用程序242包括浏览器245、服务工作线程代码/组件(Service Worker Code/Component)生成器246接口、应用程序和模块(Application&Modules)、复制工作线程/应用程序(客户端)247以及网络应用程序/PWA向导和管理(Wizard&Management)248接口、应用程序和模块。例如,数据存储器244也可以用于存储描述客户端设备200的各种能力的信息。然后,可以基于各种事件中的任何事件将信息提供给另一设备,包括在通信期间作为报头的一部分发送、根据请求发送等等。此外,数据存储器244还可以用于存储发布的、上传的、列出的网络应用程序/PWA(启用服务工作线程/复制工作线程的网络应用程序/PWA)243、用户简档、登录信息、支付信息、联系人和连接140,或者下载、安装、更新、升级的网络应用程序/PWA(启用服务工作线程/复制工作线程的网络应用程序/PWA)243,开发者简档、列出信息、用户信息130等,以及其他信息,该其他信息包括模板、设置、偏好、来自一个或多个源的用户相关数据等。内容/数据的至少一部分也可以存储在客户端设备200内的磁盘驱动器或其他存储介质(未示出)上。
应用程序242可以包括计算机可执行指令,当由客户端设备200执行时,该计算机可执行指令发送、接收和/或以其他方式处理,包括保存、更新、生成自定义服务工作线程代码/组件、安装自定义复制工作线程与每个对应的网络应用程序/PWA相关联的配置文件、安装和创建数据库、创建或打开缓存、检索、获取、缓存、存储资源、内容、文件和数据、存储与用户相关的多种类型的数据和内容。
应用程序242还可以包括浏览器245。浏览器245可以包括各种客户端应用程序中的几乎任何一个,这些客户端应用程序被配置为从网络应用程序或网络应用程序发布者的服务器下载、安装服务工作线程、网络应用程序和相关资源(复制、同步、缓存或存储应用程序外壳或所需文件)243,通过网络接收和/或提供网页和其他内容的通信。浏览器245通常提供各种网页的图形显示,包括部分由另一计算设备通过网络提供的用户界面。浏览器245可以包含各种安全功能和/或其他插件应用程序、模块、小应用程序、脚本等,以实现动画、视频、音频文件播放等的显示。
说明性网络设备环境
图3示出了根据本发明一个实施例的网络设备300的一个实施例。图3中所示的网络设备300的实施例可以用于存储开发者、发布者、提供者(例如服务器135/145)的上传、发布的网络应用程序和PWA 352,或者列出、使得可搜索、发布网络应用程序和PWA(例如服务器115)的细节,以使用户能够选择网络应用程序/PWA或输入统一资源***(URL),并且从托管所述网络应用程序或PWA 352的相关联的服务器或相关联的开发者或发布者的服务器安装所选择或输入的URL相关联的网络应用程序/PWA。网络设备300可以包括比所示出的组件多得多的组件。它也可能比所有显示的都要少。然而,所示的组件足以公开用于实践本发明的说明性实施例。一个或多个网络设备以及与这些设备集成的应用程序可以用于实现本发明的进程,如本文所讨论的图中所示。
在任何情况下,网络设备300包括处理单元312、视频显示适配器314和大容量存储器,所有这些都经由总线322彼此通信。大容量存储器通常包括RAM 316、ROM 332和一个或多个永久大容量存储设备,诸如磁盘驱动器328。大容量存储器存储用于控制网络设备300的操作的操作***320。可以使用任何通用操作***。还提供基本输入/输出***(“BIOS”)318用于控制网络设备300的低级别操作。如图3所示,网络设备300还可以经由网络接口单元310与因特网或一些其他通信网络进行通信,网络接口单元被配置为与包括TCP/IP协议在内的各种通信协议一起使用。网络接口单元310有时被称为收发器、收发设备或网络接口卡(NIC)。
如上所述的大容量存储器示出了另一种类型的计算机可读介质,即计算机存储介质。计算机存储介质可以包括以用于存储信息的任何方法或技术实施的易失性、非易失性的、可移动的和不可移动的介质,所述信息为诸如计算机可读指令、数据结构、程序模块或其他数据。计算机存储介质的示例包括RAM、ROM、EEPROM、闪存或其他存储器技术,或者可以用于存储所需信息并且可以由计算设备访问的任何其他介质。
大容量存储器还存储程序代码和数据。一个或多个应用程序350被加载到大容量存储器中并且在操作***320上运行。
大容量存储器还包括网络服务器356、数据存储器358和应用程序350。应用程序350被示出为包括网络应用程序/PWA包或文件束352、网络应用程序/PWA平台、存储、目录、标识上下文网络应用程序/PWA 354和复制工作线程/应用程序(服务器)355的应用程序。(服务器135/145的)网络服务器356包括被配置为经由HTTP/HTTP协议将网页和其他内容递送到浏览器和其他客户端应用程序的几乎任何应用程序。然而,网络服务器356也可以被配置为向客户端应用程序提供脚本、用户界面、记账界面、编辑器、安全性等。此外,网络服务器356可以采用HTTP之外的各种其他通信协议。例如,网络服务器356可以被配置为管理电子邮件通信协议、SMS协议、IM协议等。此外,网络服务器356可以使用各种脚本、小应用程序、程序等,以实现与客户端应用程序的内容通信。
数据存储器358(例如,服务器115)可以包括多种存储机制中的任何一种,其被配置为存储网络应用程序/渐进式网络应用程序352的细节,以使得网络应用程序和PWA可搜索,使得用户能够查看网络应用程序和PWA的细节,并下载和安装网络应用程序或渐进式网络应用程序243,包括安装服务工作线程,缓存来自网络应用程序/渐进式网络应用程序提供者或发布者或开发者的服务器(例如,服务器135/145)的所需资源、内容、文件和数据。数据存储器358(例如,服务器135/145)可以包括各种存储机制中的任何一种,这些存储机制被配置为存储网络应用程序/渐进式网络应用程序的包或文件352以及内容、脚本、小应用程序等。因此,数据存储器358可以是数据库、文件结构等。数据存储器358可以将内容存储到类别结构中,诸如文件夹、相册、图表、树等。在一个实施例中,数据存储器358可以表示图1中所示并在下面更详细地描述的数据管理服务。
以下结合图4-图21更详细地描述基于可视化工具和用户界面向导生成与特定网络应用程序或PWA相关的清单文件(Manifest File)、服务工作线程代码/组件,并发布所述网络应用程序和PWA352。以下结合图22-图28更详细地描述配置自定义复制工作线程用于文件和数据同步以及配置相关规则和策略。以下结合图29-图37更详细地描述启用服务工作线程或复制工作线程的网络应用程序/渐进式网络应用程序(PWA)平台或存储器354(115)以及用于识别每个用户的上下文网络应用程序或PWA 354的各种类型的逻辑。以下更详细地描述示例用户界面屏幕的各种实施例。
图4-图21示出了服务工作线程代码/组件生成器客户端140应用程序246的图形用户界面,以便开发者用户直观地描述、绘制和准备缓存策略。图4-图21示出或提供了最常见的缓存策略。缓存策略是一种模式,其用于确定服务工作线程在接收到获取事件(fetchevent)后如何生成响应。服务工作线程是用于资源缓存和推送通知的PWA技术的核心。缓存提供了一种存储浏览器中的请求/响应对象对的机制。图4-图21描述了用户准备或绘制的或基于缓存资源模板的一些常见模式。
通过使用图4-图21中讨论的可视化工具(用于开发者用户的服务工作线程代码/组件生成器客户端140应用程序246),用户可以直观地创建、绘制或编辑缓存策略和规则图、流程图或概念图,以实施用于复制的服务工作线程脚本或规则或配置文件如何处理对缓存的更新。它提供了各种各样的内置形状、逻辑块、参数类型、值、文件选择等。可视化工具还提供现成的图表模板。
必须明确请求对缓存中项目的所有更新。项目不会过期,且必须被删除。需要定期清除缓存项。每个浏览器都对给定源可以使用的缓存存储量有严格限制。浏览器尽其所能管理磁盘空间,但可能会删除源的缓存。浏览器通常会删除源的所有数据,或者不删除源的任何数据。需要让用户按名称更新缓存的版本,并仅从他们可以安全操作的脚本版本使用缓存。
图5示出了安装时的缓存文件,其中在服务工作线程的安装事件中缓存站点的静态资源。并在服务工作线程的安装事件中缓存HTML、CSS、JavaScript以及构成应用程序外壳的任何静态文件。当安装事件发生时,任何以前版本的服务工作线程仍在运行和提供页面。
Event.waitUntil承诺定义安装的长度和成功率。如果该承诺被拒绝,安装将被视为失败,并且服务工作线程将被抛弃。如果运行的是旧版本,它将保持原样。Caches.open和Cache.addAll返回了承诺。如果任何资源无法获取,cache.addAll调用将拒绝。有一些方法可以做到这一点,迭代缓存中的键列表,然后删除任何与当前缓存名称不匹配的缓存。
图4示出了图形用户界面,使用户可以使用文件管理器搜索、匹配、排序、过滤、选择特定类别的文件,包括应用程序外壳(App Shell),仅选择新的或更新的文件,选择日期文件,选择文件类型,选择创建的文件或文件夹的组,以及选择文件和文件夹。用户可以选择并添加缓存或用于缓存的文件或文件夹。用户可以输入或键入文件夹的路径或名称空间或统一资源定位符(URL),以添加与文件夹的路径、名称空间或统一资源定位符相关的文件夹的所有文件。在另一实施例中,基于文件的类型、提供的相关指示(例如,应用程序外壳)、文件的大小、文件的名称、监视和跟踪的文件同步的过去行为来自动识别和选择文件或文件的文件夹。用户可以进一步添加文件或从自动识别的文件中删除文件。
用户可以选择生成网络应用程序清单选项430以打开表单或向导(图中未示出)来生成网络应用程序清单,这是一个简单的JSON文件,包含以下信息:名称、缩写名称、描述、不同设备分辨率的图标、start_url、显示模式、应用程序的主题颜色。用户可以经由表单提供、输入或选择与网络应用程序清单相关的字段值。基于已存档的表单(图中未显示),生成网络应用程序清单文件。网络应用程序清单的使用将网络应用程序像本机应用程序一样安装在用户主屏幕中。因此,用户可以像使用本机应用程序一样快速访问并享受全屏显示。
与任何传统的网络应用程序一样,首先,index.html文件加载app.js文件。在app.js文件中,为了注册服务工作线程,开发者编写了一些代码,这些代码存在于一个单独的JavaScript文件中。该代码的目的是让客户端知道sw.js文件是一个JavaScript,但不会立即运行,因为它可以在其他JavaScript文件中完成,而不是在后台注册为服务工作线程。但是,要注册服务工作线程,首先,sw.js中有一个代码,用于检查浏览器是否支持服务工作线程。
服务工作线程的安装进程从在JavaScript中注册开始,JavaScript声明了注册服务工作线程JavaScript文件的浏览器。
用户可以输入或选择默认的服务工作线程脚本文件名422。***自动生成服务工作线程注册码并保存以备日后访问、编辑、打包和发布:
if(′serviceWorker′in navigator){
window.addEventListener(′loa d′,function(){
navigator.serviceWorker.register(′/sw.js′)then(function(registration){
// Regi stration was successful
console.log(′ServiceWorker registration successful with scope:′,registration.scope);
}).catch(function(err){
// registration failed:(
console.log(′ServiceWorker registration failed:′,err);
});});}
代码生成用户,服务工作线程API是否可访问,如果有,则在加载页面时注册/sw.js处的服务工作线程。
一旦注册进程完成,浏览器就开始通过定义安装事件的回调并设置缓存文件的环境来安装服务工作线程。在安装事件期间,服务工作线程缓存静态内容,当缓存成功时,激活进程开始。如果缓存进程失败,那么激活事件将终止,并且服务工作线程将在下一次尝试中安装它。
对于安装时缓存,用户可以定义、配置、使用或更新模板,或者绘制“安装时-作为依赖项”缓存策略,如图6所示详细讨论的。
在一个实施例中,在服务工作线程的安装期间,安装并创建用于快照、合并和事务发布的拉取或推送订阅的本地数据库。
在一个实施例中,使用户或管理员或开发者用户能够创建新的或管理或更新现有发布451(包括快照、合并和事务发布)以及创建新的、管理或更新现有订阅拉取和推送订阅470(如图22-图23中详细讨论的),只有改变而不是订阅数据库2285(将服务器的数据关联数据库与本地关联数据库同步或复制),在这种情况下,将服务器的关联数据库与本地IndexedDB数据库同步。
Indexed Database API或IndexedDB API本身就是一种API,用于浏览器支持客户端侧存储。它是一个由网络浏览器提供的JavaScript应用程序编程接口(applicationprogramming interface,API),用于管理JSON对象的NoSQL数据库。它允许用户在网络不可用时离线工作。IndexedDB是浏览器中的持久数据存储,意味着客户端侧上的数据库。它允许用户在离线和在线两种模式下创建具有丰富查询能力的应用程序。IndexedDB API的核心设计是具有键值表的数据库,这些表被称为ObjectStore。然而,与基本的localStorage(sessionStorage)、缓存和其他类似“键值”的存储API不同,它支持索引(Indexing)、游标(Cursor)、密钥生成器(Key Generator)和事务(Transaction)。
在一个实施例中,用户或管理员或开发者用户可以通过提供或更新参数的值来将离线数据库(IndexedDB)与在线关联数据库同步。***基于提供的参数值生成代码文件,用于使用例如ASP.NET Web API来同步IndexedDB和SQL Server数据库。
图5A示出了服务工作线程和服务工作线程注册进程的生成或编辑代码。服务工作线程基本上用作位于网络应用243、浏览器245和网络(当可用时)120之间的代理服务器。除其他外,它们旨在创建有效的离线体验,拦截网络请求,并根据网络是否可用而采取适当行动,以及更新服务器上的资产。它们还将允许访问推送通知和后台同步API。
服务工作线程是针对源和路径421注册的事件驱动工作线程。它采用JavaScript文件422的形式,如图4-图20所示,由开发者、管理员或用户和/或生成,其可以控制与其相关联的网页/网站,拦截和修改导航和资源请求,并以非常精细的方式缓存资源,以完全控制应用程序在某些情况下的行为(最明显的一种情况是当网络不可用时)。
服务工作线程是在工作线程上下文中运行的:因此它没有DOM访问权限,并且运行在与驱动应用程序的主JavaScript不同的线程上,因此它是非阻塞的。它被设计为完全异步;因此,诸如同步XHR和网络存储的API不能在服务工作线程内部使用。出于安全原因,服务工作线程仅通过HTTPS运行。
首先使用ServiceWorkerContainer.register()方法注册服务工作线程。如果成功,服务工作线程将被下载到客户端,并尝试安装/激活(见下文)用户在整个源内或在网络应用程序、PWA或网站的管理员或开发者用户指定的子集内访问的URL。
当用户首次访问服务工作线程控制的站点/页面时,会立即下载服务工作线程。
之后,当导航到作用域内页面(in-scope page)并且在服务工作线程上触发事件时,会进行更新。当下载的文件(如图6-20中详细讨论的,基于向导或视觉用户界面生成或编辑)被发现是新的(或者不同于现有的服务工作线程(按字节进行比较),或者不同于该页面/站点遇到的第一个服务工作线程)时,尝试安装510工作线程工作线程。
如果这是服务工作线程第一次可用,则尝试安装510,然后在成功安装之后,进行激活515。
如果有一个现有的服务工作线程可用,那么新版本将在后台安装,但尚未激活——此时它被称为等待中的工作线程。只有当不再加载任何仍在使用旧服务工作线程的页面时,它才会被激活。一旦没有更多的页面要加载,新的服务工作线程就会激活(成为活动工作线程)。使用ServiceWorkerGlobalScope.skipWaiting()可以更快地进行激活,并且活动工作线程可以使用Clients.claim()声明现有页面。
可以监听安装事件;一个标准的行动是准备服务工作线程以便在触发时使用,例如,通过使用内置存储API创建缓存,并在其中放置资产以使应用程序离线运行。
还有一个激活事件。此事件触发的时刻通常是清理旧缓存和其他与以前版本的服务工作线程相关联的内容的好时机。
服务工作线程可以使用FetchEvent事件535来响应请求。可以使用FetchEvent.respondWith()方法,以用户或开发者想要的任何方式修改对这些请求的响应。
在安装事件510期间,服务工作线程缓存静态内容,并且当缓存成功时,激活进程开始。如果缓存进程失败,则激活事件在530处终止,并且服务工作线程在下一次尝试中安装它。触发激活事件的成功缓存和安装进程。当用户操纵到不同页面时,激活的515服务工作线程开始接收获取535、推送和同步事件。
图5B示出了服务工作线程是如何注册的。像任何传统的网络应用程序一样,首先,index.html文件540对app.js文件550进行加载545。在app.js文件550中,为了注册服务工作线程,开发者编写一些代码(如图4-图21中详细讨论的生成的/编辑生成的代码),并且该代码存在于单独的JavaScript文件555中。该代码的目的是让客户端知道sw.js文件555是JavaScript,但不会立即运行,因为它可以在其他JavaScript文件555中完成,而不是在后台注册为服务工作线程。然而,为了注册服务工作线程,首先,sw.js 555内部有一个代码,用于检查浏览器是否支持服务工作线程。如果浏览器支持API,则在第一次加载页面时注册sw.js文件555。由于该注册,达到了两个生命周期阶段。首先,服务工作线程将由客户端浏览器安装565,并因此释放安装事件,该安装事件可以调用以执行sw.js文件555内部的一些代码,并且稍后用于缓存静态资源。只有在现有文件中有更新或是首次而不是每次刷新页面时,浏览器才会安装新的服务工作线程。激活570事件是一旦安装565完成就执行的另一事件。但并非立即激活,而是将根据旧版本服务工作线程的可用性进行激活。如果运行的服务工作线程版本不是旧的,则会以其他方式激活它,关闭现有浏览器选项卡并重新打开新选项卡将安装新的服务工作线程。需要关闭现有的浏览器选项卡并重新打开新的选项卡才能激活服务工作线程,因为它不是附加到单个页面,而是附加到整个域或作用域和生命周期,即使在浏览器关闭后也是如此。因此,这样做会触发激活事件。激活服务工作线程后,给定作用域的所有页面都将由服务工作线程控制。
一旦服务工作线程被激活,它就进入空闲模式580,这意味着它基本上处于那里,因为服务工作线程是处理事件的后台进程,如果没有事件发生,它什么也不做。之后,在空闲一段时间后,它将终止575,这并不意味着它被卸载或未注册,而是意味着它处于睡眠模式。睡眠的服务工作线程可以在事件例如,获取事件560和所有其他事件到来时自动唤醒。如果由于HTML文件请求资源或开发者在JavaScript代码中发送获取请求560而发生获取事件560,则服务工作线程被唤醒并触发获取事件560然后回到空闲模式580。
图6-图20示出了图形用户界面(GUI),使用户可以选择缓存策略的类型或缓存策略的模板,例如“安装时-作为依赖项”670。用户可以选择、拖放模块610的一个或多个块或形状,并将其放置在视觉编辑区域670中,以绘制或更新与一种或多种所选类型的缓存策略相关的图表、流程图或概念图。
图6示出,用户可以选择“新建”657来创建可视化缓存策略图或流程图或概念图。在创建新的空白文件后,用户选择“服务工作线程”块615、“安装(事件)”块620、“激活(事件)”块625、“网络”块640、“缓存”块630,在块之间画线以指示连接和顺序,提供所选或显示(建议)参数的值,例如,缓存名称(参数或字段)和用户输入值为“static_appshell_v1”,选择静态内容(参数或字段)和用户输入值是从图4(405)中选择的文件。用户还可以从列表605中选择缓存策略的模板(例如,“安装时-作为依赖项”),这打开示出就绪块、连接和顺序、默认相关选定参数的默认值的模板,并使用户能够添加、删除块、选择或编辑参数和相关值。根据所选参数具体输入或值和所选块的所述图表或流程图的绘制,***自动生成代码,或者在选择“生成代码”按钮的情况下,***自动产生例如以下代码:
用户可以通过选择“验证并测试代码”按钮652来验证和测试代码。***在示例或演示环境中运行代码。例如,***使用演示网络应用程序包(在开发者或发布者或提供者服务器135/145上),并在服务工作线程脚本文件例如,包和安装web应用程序包中的“SW.js”中使用所述代码,并显示缓存的创建和所述选定文件的存储或缓存,并显示向服务工作线程发送页面请求以从所述创建的缓存中获取所述缓存的资源。
用户可以保存生成代码651、编辑生成代码654、删除生成代码655。
在安装事件620期间,服务工作线程615缓存630静态内容618,并且当缓存630成功时,激活进程625开始。如果缓存进程失败,那么激活事件将终止,服务工作线程将在下一次尝试中安装它。
这种策略对CSS、图像、字体、JS、模板等非常有用……基本上是任何你认为是静态的网站或网络应用程序或PWA的“版本”。
应用程序外壳(架构)是构建渐进式网络应用程序(PWA)的基本代表性用户界面所需的最低HTML、CSS和JavaScript。它是提供即时加载、流畅的UI/UX和良好的重复访问性能的主要因素之一。应用程序外壳会立即缓存,这意味着外壳文件会通过网络加载一次,然后保存到本地设备。因此,每当用户使用该应用程序时,外壳文件都会从本地设备的缓存中呈现出来,这样可以快速启动。应用程序外壳模型将应用程序分为外壳和内容。
外壳包括显示内容所需的应用程序的静态部分。它将UI保持在本地,并通过API动态获取所有内容。因此,整个外壳的缓存确保即使没有互联网连接或连接不良,应用程序也至少加载熟悉的UI,并且不会向用户授予裸屏幕或默认连接失败消息。
应用程序外壳与在发布本机应用程序时发布到应用程序商店115的程序或代码352的包或捆绑包相同。它是启动应用程序最必需的组件,但不包含任何数据。内容或动态数据显示在外壳内部。根据应用程序的类型,还可以缓存内容或数据。
图7示出,用户可以选择“新建”757来创建可视化缓存策略图或流程图或概念图。创建新的空白文件后,用户选择“服务工作线程”块715、“安装(事件)”块720、“激活(事件)”块725、“网络”块740、“缓存”块730,在块之间画线以指示连接和顺序,提供所选或显示(建议)参数的值,例如,缓存名称(参数或字段)和用户输入值为“Game_v1”,选择静态内容(参数或字段)和用户输入值是从图4(405)中选择的文件。用户还可以从列表705中选择缓存策略的模板(例如,“安装时-不作为依赖项”),这打开显示就绪块、连接和顺序、默认相关选择参数的默认值的模板,并使用户能够添加、删除块、选择或编辑参数和相关值。根据所选参数具体输入或值和所选块的所述图表或流程图的绘制,***自动生成代码,或者在选择“生成代码”按钮的情况下,***自动生成例如以下代码:
这类似于“安装时-作为依赖项”,但不会延迟安装完成,并且如果缓存失败,也不会导致安装失败。它对不被即刻需要的大型资源很有用,比如游戏后期的资产。
上面的例子没有通过cache.addAll承诺将6–10级恢复到event.waitUntil,所以即使失败,游戏仍然可以离线使用。
图8示出,用户可以选择“新建”857来创建可视化缓存策略图或流程图或概念图。创建新的空白文件后,用户选择“服务工作线程”块815、“安装(事件)”块820、“激活(事件)”块825、“删除”块830、“缓存”块840,在块之间画线以指示连接和顺序,提供所选或显示(建议)参数的值,例如缓存名称(参数或字段)和用户输入值为“cacheName”,选择静态内容(参数或字段)和用户输入值是从图4(405)中选择的文件。用户还可以从列表805中选择缓存策略的模板(例如,“激活时”),这打开显示就绪块、连接和顺序、默认相关选定参数的默认值的模版,并使用户能够添加、删除块、选择或编辑参数和相关值。根据所选参数具体输入或值和所选块的所述图表或流程图的绘制,***自动生成代码,或者在选择“生成代码”按钮的情况下,***自动产生例如以下代码:
一旦安装了新的服务工作线程815并且没有使用以前的版本,新的服务工作线程被激活825,并且获得激活的事件825。因为旧版本已经过时了,所以现在是处理IndexedDB中的模式迁移并移除不用的缓存840的好时机。
激活时(On Active)这一策略对清理和迁移非常有用。在激活进程中,其他事件(诸如获取)会被放入队列中,因此长时间的激活可能会阻止页面加载。需要根据需求保持激活,并且仅用于所需的事情。
图9示出,用户可以选择“新建”957来创建可视化缓存策略图或流程图或概念图。在创建新的空白文件后,用户选择“页面”块915、“点击(事件)”块920、“网络”块925、“缓存”块930,在块之间画线以指示连接和顺序,提供所选或显示(建议)参数的值,例如,缓存名称(参数或字段)和用户输入值为“mysite-article-”,选择静态内容(参数或字段)和用户输入值是从图4(405)中选择的文件。用户还可以从列表905中选择缓存策略的模板(例如,“用户交互时”),这打开示出就绪块、连接和顺序、默认相关选择参数的默认值的模版,并使用户能够添加、删除块、选择或编辑参数和相关值。基于所选参数具体输入或值和所选块的所述图表或流程图的绘制,***自动生成代码,或者在选择“生成代码”按钮的情况下,***自动产生例如以下代码:
当整个网站无法离线,并且需要允许用户选择他们想要的离线内容时,用户交互时这一策略是有用的。例如,YouTube上的视频、***上的文章、Flickr上的特定图库。
例如,当用户点击“稍后读取”或“为离线而保存”按钮时,从网络中获取相关或预定义的内容、资源、文件和数据,并将其放入缓存。
缓存API可以从页面和服务工作线程那里获得,以便将内容添加到缓存中。
图10示出,用户可以选择“新建”1057来创建可视化缓存策略图或流程图或概念图。创建新的空白文件后,用户选择“页面”块1015、“服务工作线程”块1020、“网络”块1025、“缓存”块1030,在块之间画线以指示连接和顺序,提供所选或显示(建议)参数的值,例如,缓存名称(参数或字段)和用户输入值为“mysite-dynamic”,选择静态内容(参数或字段)和用户输入值为从图4(405)中选择的文件。用户还可以从列表1005中选择缓存策略的模板(例如,“网络响应时”),这打开示出就绪块、连接和顺序、默认相关选择参数的默认值的模版,并使用户能够添加、删除块、选择或编辑参数和相关值。根据所选参数具体输入或值和所选块的所述图表或流程图的绘制,***自动生成代码,或者在选择“生成代码”按钮的情况下,***自动产生例如以下代码:
网络响应时这一策略是频繁更新资源(诸如用户收件箱或文章内容)的理想选择。如果请求与缓存中的任何内容都不匹配,则从网络进行获取,将其发送到页面,同时添加到缓存中。
图11示出,用户可以选择“新建”1157来创建可视化缓存策略图或流程图或概念图。在创建新的空白文件后,用户选择“页面”块1115、“服务工作线程”块1120、“网络”块1125、“缓存”块1130,在块之间画线以指示连接和顺序,提供所选或显示(建议)参数的值,例如缓存名称(参数或字段)和用户输入值为“mysite-dynamic”,选择静态内容(参数或字段)和用户输入值为从图4(405)中选择的文件。用户还可以从列表1105中选择缓存策略的模板(例如,“过期-同时-重验”),这打开示出就绪块、连接和顺序、默认相关选择参数的默认值的模板,并使用户能够添加、删除块、选择或编辑参数和相关值。根据所选参数具体输入或值和所选块的所述图表或流程图的绘制,***自动生成代码,或者在选择“生成代码”按钮的情况下,***自动产生例如以下代码:
在最新版本为非必要的情况下,过期-同时-重验这一策略对于频繁更新资源非常有用。头像可以归入这一类。
若有可用的缓存版本,就用它,但要为下次获取更新。
图12示出,用户可以选择“新建”1257来创建可视化缓存策略图或流程图或概念图。在创建新的空白文件后,用户选择“推送消息”块1215、“服务工作线程”块1220、“网络”块1225、“通知”块1230、“缓存”块1240,在块之间画线以指示连接和顺序,提供所选或显示(建议)参数的值,例如缓存名称(参数或字段)和用户输入值为“mysite-dynamic”,选择静态内容(参数或字段)和用户输入值为从图4(405)中选择的文件。用户还可以从列表1205中选择缓存策略的模板(例如“过期-同时-重验”),这打开显示就绪块、连接和顺序、默认相关选择参数的默认值的模板,并使用户能够添加、删除块、选择或编辑参数和相关值。根据所选参数具体输入或值和所选块的所述图表或流程图的绘制,***自动生成代码,或者在选择“生成代码”按钮的情况下,***自动产生例如以下代码:
常见的最终结果是一个通知,当点击该通知时,会打开/聚焦相关页面,但在此之前更新缓存对其来说很重要。用户在收到推送消息时显然是在线的,但当他们最终与通知交互时可能不是在线的,因此使这些内容离线可用很重要。
推送API(Push API)允许唤醒服务工作线程以响应来自OS的消息服务的消息。即使用户没有打开网站的选项卡,也会发生这种情况。仅服务工作线程被唤醒。
推送消息缓存时这一策略适用于与通知相关的内容,诸如聊天消息、突发新闻或电子邮件。以及从即时同步中受益的频繁变化的内容,诸如待办事项列表更新或日历更改。
图13示出,用户可以选择“新建”1357来创建可视化缓存策略图或流程图或概念图。在创建新的空白文件后,用户选择“服务工作线程”块1315、“同步(事件)”块1320、“网络”块1325、“缓存”块1330,在块之间画线以指示连接和顺序,提供选定或显示(建议)参数的值,例如,缓存名称(参数或字段)以及用户输入值为“update-timeline”,选择静态内容(参数或字段)和用户输出值为图4(405)中的选定文件。用户还可以从列表1305中选择缓存策略的模板(例如,“后台-同步时”),这打开示出就绪块、连接和顺序、默认相关选择参数的默认值的模板,并使用户能够添加、删除块、选择或编辑参数和相关值。根据所选参数具体输入或值和所选块的所述图表或流程图的绘制,***自动生成代码,或者在选择“生成代码”按钮的情况下,***自动产生例如以下代码:
后台同步是服务工作线程的一项功能,它允许一次性或间隔地请求后台数据同步。即使用户没有打开网站的选项卡,也会发生这种情况。仅服务工作线程被唤醒。
它对非紧急更新很有用,尤其是那些经常发生的更新,诸如社交时间线或新闻文章,每次更新推送消息对用户而言太频繁。
图14示出,用户可以选择“新建”1457来创建可视化缓存策略图或流程图或概念图。创建新的空白文件后,用户选择“页面”块1415、“服务工作线程”块1420、“缓存”块1425,在块之间画线以指示连接和顺序,提供所选或显示(建议)参数的值,例如缓存名称(参数或字段)以及用户输入值为”Default”,选择静态内容(参数或字段)以及用户输入值是从图4(405)中选择的文件。用户还可以从列表1405中选择缓存策略的模板(例如,“仅缓存”),这打开示出就绪块、连接和顺序、默认相关选定参数的默认值的模板,并且使用户能够添加、删除块、选择或编辑参数和相关值。根据所选参数具体输入或值和所选块的所述图表或流程图的绘制,***自动生成代码,或者在选择“生成代码”按钮的情况下,***自动产生例如以下代码:
self.addEventListener(′fetch′,function(event){
//If a match isn′t found in the cache,the response
//will look like a connection error
event.respondWith(caches.match(event.request));});
仅缓存这一策略对于与网站、网络应用程序或PWA的特定“版本”相关的静态资源非常有用。由于资源已在安装事件中缓存,因此可以进行获取。
图15示出,用户可以选择“新建”1557来创建可视化缓存策略图或流程图或概念图。在创建新的空白文件后,用户选择“页面”块1515、“服务工作线程”块1520、“网络”块1525,在块之间画线以指示连接和顺序,并提供所选或显示(建议的)参数的值。用户还可以从列表1505中选择缓存策略的模板(例如,“仅网络”),这打开示出就绪块、连接和顺序、默认相关选择参数的默认值的模板,并使用户能够添加、删除块、选择或编辑参数和相关值。根据所选参数具体输入或值和所选块的所述图表或流程图的绘制,***自动生成代码,或者在选择“生成代码”按钮的情况下,***自动产生例如以下代码:
仅网络这一策略对没有离线等效功能的情况有用,诸如分析ping、非-GET请求。
图16示出,用户可以选择“新建”1657来创建可视化缓存策略图或流程图或概念图。在创建新的空白文件后,用户选择“页面”块1615、“服务工作线程”块1620、“缓存”块1625、“网络”块1630,在块之间画线以指示连接和顺序,提供所选或显示(建议)参数的值,例如,缓存名称(参数或字段)以及用户输入值为“Default”,选择静态内容(参数或字段以及用户输入值是从图4(405)中选择的文件。用户还可以从列表1605中选择缓存策略的模板(例如,“缓存,回退到网络”),这打开示出就绪块、连接和顺序、默认相关选定参数的默认值的模板,并使用户能够添加、删除块、选择或编辑参数和相关值。根据所选参数具体输入或值和所选块的所述图表或流程图的绘制,***自动生成代码,或者在选择“生成代码”按钮的情况下,***自动产生例如以下代码:
此策略对于构建离线优先非常有用。在这种情况下,这就是处理大多数请求的方式。其他模式是基于传入请求的例外。这为缓存中的内容提供了“仅缓存”行为,为任何未缓存的内容提供“仅网络”行为(包括所有非-GET请求,因为它们无法被缓存)。
图17示出,用户可以选择“新建”1757来创建可视化缓存策略图或流程图或概念图。创建新的空白文件后,用户选择“页面”块1715、“服务工作线程”块1720、“网络”块1725、“缓存”块1730,在块之间画线以指示连接和顺序,提供所选或显示(建议)参数的值,例如缓存名称(参数或字段)以及用户输入值为“myfeed-dynamic”,选择静态内容(参数或字段)以及用户输入值是从图4(405)中选择的文件。用户还可以从列表1705中选择缓存策略的模板(例如,“网络,回退到缓存”),这打开示出就绪块、连接和顺序、默认相关选定参数的默认值的模板,并使用户能够添加、删除块、选择或编辑参数和相关值。根据所选参数具体输入或值和所选块的所述图表或流程图的绘制,***自动生成代码,或者在选择“生成代码”按钮的情况下,***自动产生例如以下代码:
此策略对于快速修复网站“版本”之外频繁更新的资源非常有用。例如,文章、头像、社交媒体时间线和游戏排行榜。
在线用户将获得最新的内容,但离线用户将获得较旧的缓存版本。如果网络请求成功,则可以更新缓存条目。
图18示出,用户可以选择“新建”1857来创建可视化缓存策略图或流程图或概念图。在创建新的空白文件后,用户选择“页面”块1815、“缓存”块1820、“网络”块1825、“服务工作线程”块1830,在块之间画线以指示连接和顺序,提供所选或显示(建议)参数的值,例如,缓存名称(参数或字段)以及用户输入值为“Default”,选择静态内容(参数或字段)以及用户输入值是从图4(405)中选择的文件。用户还可以从列表1805中选择缓存策略的模板(例如,“网络,回退到网络”),这打开示出就绪块、连接和顺序、默认相关选定参数的默认值的模板,并使用户能够添加、删除块、选择或编辑参数和相关值。根据所选参数具体输入或值和所选块的所述图表或流程图的绘制,***自动生成代码,或者在选择“生成代码”按钮的情况下,***自动为页面和服务工作线程生成例如以下代码:
页面中的代码:
服务工作线程中的代码:
应该始终转到网络并在进行时更新缓存。
此策略对于频繁更新的内容非常有用。例如,文章、社交媒体时间表和游戏排行榜。
这需要页面发出两个请求,一个到缓存,另一个到网络,以首先显示缓存的数据,然后在网络数据到达时更新页面。当新数据到达时(例如,游戏排行榜),它会替换当前数据。它将新内容添加到旧内容之上,这样用户就不会受到干扰。它有助于尽快将内容显示在屏幕上,同时在内容到达时立即显示最新内容。
图19示出,用户可以选择“新建”1957来创建可视化缓存策略图或流程图或概念图。在创建新的空白文件后,用户选择“页面”块1915、“缓存”块1920、“网络”块1925、“服务工作线程”块1930,在块之间画线以指示连接和顺序,并提供所选或显示(建议)参数的值。用户还可以从列表1905中选择缓存策略的模板(例如,“通用回退”),这打开示出就绪块、连接和顺序、默认相关选择参数的默认值的模板,并使用户能够添加、删除块、选择或编辑参数和相关值。根据所选参数具体输入或值和所选块的所述图表或流程图的绘制,***自动生成代码,或者在选择“生成代码”按钮的情况下,***自动产生例如以下代码:
/>
如果无法从缓存和/或网络中提供服务,最好提供一个通用回退(genericfallback)。此策略对诸如头像的二次图像、POST请求失败和“离线时不可用”页面有用。如果页面正在发布电子邮件,服务工作线程可以回退至将电子邮件存储在IndexedDB的“发件箱”中,并通过让页面知道发送失败但数据已成功保留来做出响应。
图20示出,用户可以选择“新建”2057来创建可视化缓存策略图或流程图或概念图。创建新的空白文件后,用户选择“页面”块2015、“服务工作线程”块2020、“缓存”块2025、“网络”块2030,在块之间画线以指示连接和顺序,并提供所选或显示(建议)参数的值。用户还可以从列表2005中选择缓存策略的模板(例如,“服务工作线程侧模板”),这打开示出就绪块、连接和顺序、默认相关选择参数的默认值的模板,并使用户能够添加、删除块、选择或编辑参数和相关值。根据所选参数具体输入或值和所选块的所述图表或流程图的绘制,***自动生成代码,或者在选择“生成代码”按钮的情况下,***自动产生例如以下代码:
此策略对于无法缓存服务器响应的页面非常有用。在服务器上呈现页面可以加快速度,但这可能意味着在缓存中包含可能没有意义的状态数据,例如“以…身份登录”。如果页面由服务工作线程控制,改为选择请求JSON数据和模板,然后转而呈现该数据。
图21示出了服务工作线程2120可以根据网络状况从缓存存储2140加载资源,也可以通过在线网络2190获取资源。这些可编程接口显著提高了网络应用程序用户的在线和离线浏览2105体验。缓存站点资产后,服务工作线程可以经由获取事件访问缓存的内容。
服务工作线程是在渲染器(renderer)进程中运行的JavaScript代码。当进行导航时,网络线程会根据注册的服务工作线程范围检查域,如果为该URL注册了服务工作线程,则UI线程会找到渲染器进程以执行服务工作线程代码。服务工作线程可以从缓存加载数据,从而无需从网络请求数据,也可以从网络请求新资源。渲染器程序的核心工作是将HTML、CSS和JavaScript转换为用户可以交互的网页。网站通常使用外部资源,如图像、CSS和JavaScript。这些文件需要从网络或缓存中加载。主线程可以在获取这些资源时逐个地进行请求同时进行解析以构建DOM,但为了加快速度,“预加载扫描程序”是同时运行的。当HTML解析器发现<script>标记时,它会暂停HTML文档的解析,并必须加载、解析和执行JavaScript代码。
在注册服务工作线程2120以控制范围后,每当该范围内的客户端2105从网络2190中的任何地方请求资源时。用于该范围的服务工作线程2120接收请求2115。通过event.respondwidth()并传递响应对象或响应2110,服务工作线程2120可以用由不同来源(网络2190、存储器2165/2170或其自己的代码2120)制成的自定义响应2110来回答客户端2105的请求2115。
每次获取服务工作线程控制的任何资源(包括指定范围内的文档以及这些文档中引用的任何资源)时,都会触发获取事件。
需要将获取事件侦听器附加到服务工作线程,然后对事件调用responsdWith()方法以接收HTTP响应并用代码更新这些响应。在每种情况下,通过使用url与网络请求的url匹配的资源进行响应来启动代码:
caches.match(event.request)允许将从网络请求的每个资源与缓存中可用的等效资源进行匹配(如果有匹配的可用资源)。匹配是经由URL和各种报头来完成的,就像普通的HTTP请求一样。
图22(A)示出了图形用户界面(GUI),该GUI用于使用户能够配置静态内容或文件或资源复制或同步。文件同步是确保两个或多个位置的计算机文件通过特定规则进行更新的进程。用户可以创建新的发布2202,选择包括文件快照发布的发布类型2203,文件快照发布包括拉取或推送/服务器或客户端,其中将文件从服务器复制到客户端或将文件从客户端复制到服务器,请求文件从客户端(拉取(pull))到服务器,请求文件从服务器(拉取(pull))到客户端,将文件从客户端推送到服务器,以及将文件从服务器推送到客户端,单向(更新)发布,其中,在从服务器识别出文件的更新或更改的情况下,将所述更新的文件从服务器复制或替换到客户端,或者在识别出客户端存储器中的文件更新或更改的情况下,将所述更新的文件从客户端复制或替换到服务器。在网络或互联网不可用或质量差的情况下,客户端或服务器将更新的内容或文件或数据保持在队列中,在网络可用的情况下发送或更新来自队列的内容、文件或数据。在快照发布或单向文件同步(也称为镜像)中,更新的文件从源位置(服务器或服务器存储器或服务器数据库或一个或多个源)复制到一个或更多个目标位置或目的地,但不将任何文件复制回至源位置。在合并发布或双向文件同步中,更新后的文件在两个方向上复制,通常目的是保持两个位置彼此相同,其中合并发布包括从客户端或服务器拉取文件订阅(请求更新已更改文件)和推送文件订阅(推送或替换已更新的已更改文件)。
在一个实施例中,用户或管理员可以从文件或内容的列表2205中选择文件。根据文件类型、文件名称、文件相关元数据、根目录或文件夹内文件的路径、文件大小和用户提供的自动识别文件设置、缓存策略、域名、项目路径和相关文件、网页或应用程序页面或界面相关文件和资源,向用户或管理员提供建议的文件列表或自动识别文件,供用户选择或自动选择文件。
在一个实施例中,使得用户或管理员能够基于自动建议的、过去选择的、新的文件、日期和时间、更新的、类别、大小、元数据特定的、包括html、JavaScript、CSS、icon、.jpeg、.png等的文件类型、包括外壳(shell)、可更新的、可下载的、回退、数据及其任何组合的标记的文件类型来过滤2210文件。
在一个实施例中,用户或管理员可以使用文件管理器2213来搜索、匹配、编辑、删除、扩充、创建新的、更新、查看属性、过滤、在文件夹中组织、排序、标记为外壳、可更新的、可下载的、回退、和数据、共享、协作创建、导入、排序、重命名、压缩、解压缩、加密、解密、上传、添加到特定类型或模型的发布或同步,并选择和添加以列出一个或多个文件,用于缓存或存储在用户设备的本地存储中,以便能够在接收请求时进行获取和响应。
然后,管理员或用户或应用程序发布者或开发者可以选择“立即创建快照”2212或“安排快照代理在特定时间运行”,并且选择“下一步”。
在“代理安全性”用户界面或页面2215上,选择“安全性设定”,包括登录信息、帐户和密码。
在“完成向导”用户界面页面2217上,在发布名称框中输入StaticOnoLivMerge,并且选择完成。
创建发布后,选择“关闭”,并且选择“刷新”以查看新的合并复制。
管理员或用户、应用程序发布者或开发者可以在“文件管理应用程序”中“连接”到发布者,选择“文件复制”,然后选择“查看快照代理状态”以确保再继续下一个作业前快照作业已成功。
然后,管理员或用户或应用程序发布者或开发者可以向所创建的合并发布添加订阅,可以设置订阅文件夹的权限,还可以手动生成新订阅的过滤文件快照。
为了对合并发布添加订阅服务器,管理员或用户或应用程序发布者或开发者可以在文件管理应用程序中连接到订阅服务器,并且选择“新建订阅”2218以创建一个或多个新的发布订阅,并指定在何时何地运行同步订阅的代理。
在“发布”用户界面或页面2218上,选择“发布者列表”中的“查找发布者”,或者选择管理员或用户或应用程序发布者或开发者想要创建一个或多个订阅的发布。例如,管理员或用户或应用程序发布者或开发者选择“StaticOnoLivMerge”发布。
在“连接到服务器”对话框中,在服务器名称框中输入发布者实例的名称,并且选择“连接”。
在“合并代理位置”用户界面或页面2220上,在分发服务器(distributor)上运行所有代理(推送订阅),或选择在其订阅服务器(subscriber)上运行每个代理(拉取订阅),然后选择“下一步”。
在“订阅服务器”用户界面或页面2223上,选择订阅服务器数据库服务器的订阅服务器名称或应用程序用户名或实例名称,或者选择所有应用程序(发布者或开发者的PWA或网络应用程序)安装的用户2224。
在“订阅数据库”下,从列表2230中选择现有数据库或“新建数据库”。例如,在“新建数据库”对话框中,在文件夹或存储或缓存名称框中输入例如OnoLiv_Static。选择“确定”,然后选择“下一步”。
在“同步计划表”用户界面或页面2226上,将“代理计划表”设置为仅以需求运行,并且选择“下一步”。
在“初始化订阅”用户界面或页面上,指定是否使用发布文件和元数据的快照来初始化每个订阅,从“初始化时间”列表中选择首次同步。选择“下一步”以进入“订阅类型”用户界面或页面,然后选择例如“客户端”订阅类型。选择订阅类型后,再次选择“下一步”。选择“完成”,订阅即被创建。
管理员或用户或应用程序发布者或开发者可以在订阅服务器上设置服务器权限。
订阅是对发布中文件和相关元数据副本的请求。订阅定义了将接收哪个发布,以及何时何地接收。在计划订阅时,管理员或用户或应用程序发布者或开发者需要考虑他们希望代理处理发生在哪里。管理员或用户或应用程序发布者或开发者选择的订阅类型控制代理的运行位置。对于推送订阅,合并代理或分发代理在分发服务器上运行,而对于拉取订阅,代理在订阅服务器上运行。
通过推送订阅,发布者将更改传播到订阅服务器,而无需订阅服务器的请求。更改可以按需、连续或按计划推送给订阅服务器。分发代理或合并代理在分发服务器上运行。当文件通常会连续同步或按频繁重复的计划表同步时,以及当发布需要接近实时的文件移动时,使用推送订阅。
对于拉取订阅,订阅服务器请求在发布者(publisher)上所做的更改。拉取订阅允许订阅服务器上的用户确定何时同步文件更改。分发代理或合并代理在订阅服务器上运行。
拉取订阅的用途是文件或内容通常会按需或按计划同步,而不是连续同步,发布具有大量订阅服务器,订阅服务器是自主的、断开连接的和/或移动的,订阅服务器将决定何时连接并同步更改。它最常与合并复制一起使用。
所有复制类型都允许推送和拉取订阅。合并复制使用两个附加术语来区分订阅:客户端订阅和服务器订阅。客户端和服务器订阅类型都可以与推送订阅和拉取订阅一起使用。
快照复制用于为事务复制和合并复制提供初始文件集;也可以在适合进行完全刷新文件的时候使用。
为了将订阅同步到合并发布,启动“合并代理”,以使用“文件管理”来初始化订阅。在“文件管理”中连接到订阅服务器,并且选择“查看同步状态”,选择“开始”以初始化订阅。在为合并复制配置了发布者和订阅服务器之后。现在可以在文件文件夹中添加、更新或删除文件,也可以在发布者或订阅服务器上存储或缓存文件。
管理员或用户或网络应用程序发布者或开发者可以经由向导和可视化图形用户界面2232来定义获取、缓存、复制规则和策略。基于定义获取、缓存、复制规则和策略,所述配置的文件复制或同步工作或行为,即,根据定义的规则和策略发送或接收文件,以确定什么、何地、何时、如何以及谁将获取、接收、存储或缓存文件,如图24-图26和图4-图21所详细讨论的。
图22(B)示出了图形用户界面(GUI),该GUI用于使用户或管理员或网络应用程序发布者或开发者能够配置动态数据或文件的数据或内容或文件复制的链接。复制是一组技术,用于将数据和数据库对象从一个数据库复制和分发到另一个数据库,然后在数据库之间进行同步以保持一致性。用户或管理员或服务器管理员可以配置复制,以便通过局域网和广域网、拨号连接、无线连接和因特网将数据分发到不同的位置以及远程或移动用户。
用户或管理员或网络应用程序发布者或开发者准备或配置用于复制的服务器,包括创建用于复制的帐户、准备快照文件夹和配置分发。用户或管理员可以创建复制代理来运行复制代理,包括发布者上的快照代理、发布者上日志读取器代理、发布者和订阅服务器上的分发代理、发布者和订阅服务器上的合并代理。用户或管理员创建和配置用于复制的帐户,提供或配置服务器和服务器数据库或来自一个或多个源的数据库的连接字符串和登录信息。
用户或管理员或网络应用程序发布者或开发者可以配置用于创建和存储发布快照的快照文件夹,或者为快照文件夹创建共享并分配权限。
图22(B)示出了图形用户界面(GUI),该GUI用于使用户或管理员连接到数据库管理应用程序或工具中的发布者并创建新发布2251,然后从数据库列表中选择发布数据库,然后选择发布类型2253,以配置不同类型的复制,包括快照、合并和事务复制。例如,用户或管理员选择合并发布以配置合并复制包括为合并复制配置发布者、为合并发布添加移动订阅服务器以及将订阅同步到合并发布。
合并复制或同步主要针对可能存在数据冲突的移动应用程序或分布式服务器应用程序而设计。常见场景包括:与移动用户交换数据。合并复制是解决中央服务器和仅偶尔连接的移动客户端之间移动数据问题的好方法。通过使用复制向导,用户或管理员可以配置和管理合并复制拓扑,并可以为移动客户端配置复制拓扑。
管理员或网络应用程序发布者或开发者可以使用合并复制将数据从中央数据库发布到一个或多个移动用户,以便每个用户都能获得经过唯一过滤的数据子集。
在“文章”用户界面或页面2255上,管理员或用户可以选择一个或多个“表格”。例如,选择“产品”、“服务”和“配置文件”表格。
在“过滤表行”用户界面或页面2258上,用户或管理员可以选择“添加过滤”,并且在“添加过滤”对话框中,在选择表格用来过滤中选择产品(服装)。选择列,例如StoreLocation列,然后修改WHERE子句。例如WHERE[StoreLocation]="Los Angeles"。从该表中选择一行将转到多个订阅。同样,用户可以通过使用过滤向导过滤表的一个或多个选定列和行,创建结构化查询语言,从而以任何方式和任何组合过滤数据。
然后,管理员或用户或应用程序发布者或开发者可以选择“立即创建快照”2260或“安排快照代理在特定时间运行”2260,并且选择“下一步”。
在“代理安全性”用户界面或页面2262上,选择“安全性设定”,包括登录信息、帐户和密码。
在“完成向导”用户界面页面2264上,在发布名称框中输入OnoLivMerge,并且选择“完成”。
创建发布后,选择“关闭”,并且选择“刷新”以查看新的合并复制。
管理员或用户或应用程序发布者或开发者可以在“数据库管理应用程序”中“连接”到发布者,选择“复制”,然后选择“查看快照代理状态”,以确保再继续下一个作业前快照作业已成功。
然后,管理员或用户或应用程序发布者或开发者可以向所创建的合并发布添加订阅,可以设置订阅数据库的权限,还可以手动生成新订阅的过滤数据快照。
为了对合并发布添加订阅服务器,管理员或用户或应用程序发布者或开发者可以在“数据库管理应用程序”中连接到订阅服务器,并且选择“新建订阅”2270以创建一个或多个新的订阅来发布,并指定在何时何地运行同步订阅的代理。
在“发布”用户界面或网页2272上,选择“发布者”列表中的“查找SQL服务器发布者”,或者选择管理员或用户或应用程序发布者或开发者要为其创建一个或多个订阅的发布。例如,管理员或用户或应用程序发布者或开发者选择“OnoLivMerge”发布。
在“连接到服务器”对话框中,在服务器名称框中输入发布者实例的名称,并且选择“连接”。
在“合并代理位置”用户界面或页面2274上,在分发服务器上运行所有代理(推送订阅),或选择在其订阅服务器上运行每个代理(拉取订阅),然后选择“下一步”。
在“订阅服务器”用户界面或页面2276上,选择订阅服务器数据库服务器的订阅服务器名称或应用程序用户名或实例名称,或选择所有应用程序(发布者或开发者的PWA或网络应用程序)安装的用户2282。
在“订阅数据库”下,从列表2285中选择现有数据库或“新建数据库”。例如,在“新建数据库”对话框中,在数据库名称框中输入OnoLivApp_LocalDB。选择“确定”,然后选择“下一步”。
在“同步计划表”用户界面或页面2280上,将“代理计划”设置为仅按需运行,并且选择“下一步”。
在“初始化订阅”用户界面或页面上,指定是否使用发布数据和发布模式的快照初始化每个订阅,从“初始化时间”列表中选择首次同步。选择“下一步”进入“订阅类型”用户界面或页面,然后选择例如“客户端”订阅类型。选择订阅类型后,再次选择“下一步”。选择“完成”,订阅即被创建。
管理员或用户或应用程序发布者或开发者可以在订阅服务器上设置服务器权限。
订阅是对发布中的数据和数据库对象的副本的请求。订阅定义将接收哪个发布,以及何时何地接收。在计划订阅时,管理员或用户或应用程序发布者或开发者需要考虑他们希望代理处理发生在哪里。管理员或用户或应用程序发布者或开发者选择的订阅类型控制代理的运行位置。对于推送订阅,合并代理或分发代理在分发服务器上运行,而对于拉取订阅,代理在订阅服务器上运行。
通过推送订阅,发布者将更改传播到订阅服务器,而无需订阅服务器的请求。更改可以按需、连续或按计划推送给订阅服务器。分发代理或合并代理在分发服务器上运行。当数据通常会连续同步或按频繁重复的计划表同步时,以及当发布需要接近实时的数据移动时,使用推送订阅。
对于拉取订阅,订阅服务器请求在发布者上所做的更改。拉取订阅允许订阅服务器上的用户确定何时同步数据更改。分发代理或合并代理在订阅服务器上运行。
拉取订阅的用途是数据通常会按需或按计划同步,而不是连续同步,发布具有大量订阅服务器,订阅服务器是自主的、断开连接的和/或移动的,订阅服务器将决定何时连接并同步更改。它最常与合并复制一起使用。
所有复制类型都允许推送订阅和拉取订阅。合并复制使用两个附加术语来区分订阅:客户端订阅和服务器订阅。客户端和服务器订阅类型都可以与推送订阅和拉取订阅一起使用。
快照复制用于为事务复制和合并复制提供初始数据集;可以在适合进行完全刷新数据的时候使用。
事务复制通常用于需要高吞吐量的服务器到服务器场景,包括:提高可扩展性和可用性;数据仓库和报告;整合来自多个站点的数据;整合异构数据;以及卸载批处理。
为了将订阅同步到合并发布,启动“合并代理”,以通过使用“数据库管理”来初始化订阅。在“数据库管理”中连接到订阅服务器,并且选择“查看同步状态”,选择“开始”以初始化订阅。在为合并复制配置了发布者和订阅服务器之后。现在可以在发布者或订阅服务器的表中***、更新或删除数据。
管理员或用户或网络应用程序发布者或开发者可以经由向导和可视化图形用户界面2290定义获取、缓存、复制规则和策略。基于定义获取、缓存、复制规则和策略,所述配置的数据复制工作或行为,即根据定义的规则和策略发送或接收数据,以确定什么、何地、何时、如何以及谁将获取、接收、存储或缓存数据,如图24-图26和图4-图21中详细讨论的。
图23示出了复制模型、架构和拓扑,包括文件/数据的快照复制、文件/数据的合并复制和数据的事务复制。
快照复制按特定时刻出现的方式分发数据,并且不监视数据的更新。发生同步时,将生成整个快照并将其发送到订阅服务器。
当用户安装网络应用程序或渐进式网络应用程序(PWA)、更新已安装的网络应用程序或者渐进式网络应用程序(PWB)或对网络应用程序或渐进式网络应用程序(PWA)进行版本更改时,单独使用文件快照复制是最合适的。也适用于文件(应用程序外壳)或数据更改不频繁、复制少量数据的情况。
数据复制的使用在于数据更改不频繁,对于以下是可接受的:相对于发布者过期一段时间的数据副本、复制少量数据、在短时间内发生大量更改的数据副本。
图23(2310)示出了快照复制的主要组件。快照复制可以由其自身使用,但是快照进程(其创建用于文件同步的所有文件和相关联的元数据的副本或由发布2305指定的用于数据复制的对象和数据)也通常用于提供用于事务发布和合并发布的数据和数据库对象的初始集合。
默认情况下,所有三种类型的复制都使用快照来初始化订阅服务器。快照代理始终生成快照文件,但传递文件的代理因所使用的复制类型而异。快照复制和事务复制使用分发代理2313来传递文件,而合并复制使用合并代理。快照代理2311在分发服务器2306上运行。分发代理2313和合并代理在分发服务器2306上运行用于推送订阅,或在订阅服务器上运行用于拉取订阅。
快照可以在创建订阅2320之后立即生成和应用,也可以根据创建发布时设置的计划表而生成和应用。快照代理2311准备包含用于文件同步/文件模式的文件和相关元数据以及用于数据复制的已发布表和数据库对象的数据的快照文件,将文件存储在发布者2301的快照文件夹2301中,并将跟踪信息记录在分发服务器2306上的分发数据库/文件夹2312中。当配置分发服务器2306时,用户或管理员或发布者或开发者、网络应用程序或渐进式网络应用程序(PWA)指定默认快照文件夹2301,但可以指定替代或补充默认位置的发布的替代位置。
对于快照发布,每次分发代理2313针对发布2305运行时,将新的快照移动到尚未同步、已标记为用于重新初始化或包括新文章的每个订阅服务器2315。
图23(2340)示出了合并复制的主要组件。
与事务复制一样,合并复制通常从用于文件同步的发布文件和相关元数据或用于数据复制的数据库对象和数据的快照开始。使用触发器2321/2322来跟踪在发布者2331和订阅服务器2332上进行的用于文件同步的后续文件更改或用于数据复制的数据更改和模式修改。订阅服务器2332在连接到网络时与发布者2331同步,并且交换自上次同步发生以来在发布者和订阅服务器之间已经改变的用于文件同步的所有文件和用于数据复制的数据行。
合并复制通常用于服务器到客户端环境。合并复制适用于以下任何情况:发布者或开发者的网络应用程序或渐进式网络应用程序(PWA)的多个订阅服务器或用户可能会在不同时间更新相同的数据,并将这些更改传播到发布者和其他订阅服务器或网络应用程序或PWA的用户。订阅服务器需要获取或接收数据、缓存或存储数据、离线进行更改,稍后与发布者同步更改。可能会发生冲突,并且在发生冲突时,需要能够检测和解决这些冲突。网络应用程序或渐进式网络应用程序(PWA)或应用程序需要净数据更改,而不是访问中间数据状态。例如,如果在订阅服务器与发布者同步之前在订阅服务器上文件为文件同步更改了五次,或者数据行(为数据复制)更改了五次,则该行在发布者上将仅更改一次以反映净数据更改(即第五个值)。
合并复制允许各个站点自主工作,并且稍后将更新合并为单个统一的结果。因为更新是在多个节点上进行的,所以发布者和多个订阅服务器可能已经更新了相同的数据。因此,在合并更新时可能会发生冲突,而合并复制提供了许多处理冲突的方法。
合并复制由快照代理和合并代理2333来实施。如果发布未经过滤或使用静态过滤器,则快照代理创建单个快照。如果发布使用参数化过滤器,则快照代理会为每个数据分区创建快照。合并代理2333将初始快照应用于订阅服务器。它还合并在创建初始快照后在发布者2331或订阅服务器2332上发生的增量数据更改,并根据网络应用程序发布者或开发者或管理员或用户配置的规则检测和解决任何冲突。
为了跟踪更改2321/2322,合并复制(以及具有排队更新订阅的事务复制)必须能够唯一地识别每个已发布文件中的每个文件以进行文件同步,或者能够唯一地标识每个已发布表中的每一行以进行数据复制。为了完成此合并复制,为文件同步添加文件GUID或将列rowguid添加到每个表,除非该表已经具有数据类型uniqueidentifier且设置了ROWGUIDCOL属性的列(在这种情况下,将使用此列)。如果将表从发布中删除,则会移除rowguid列;如果使用现有列进行跟踪,则不移除该列。过滤器不得包含复制用于标识行的rowguidcol。
图23(2370)示出了事务复制的主要组件。
事务复制通常从用于文件同步的发布文件或用于数据复制的数据库对象和数据的快照开始。一旦拍摄了初始快照,在发布者上进行的文件同步中的后续文件更改或数据复制中的数据更改和模式修改通常会在发生时(近乎实时)传递到订阅服务器。文件同步中的文件更改或数据复制中的数据更改以其在发布者上发生时相同的顺序和在相同事务边界内应用于订阅服务器;因此,在发布中,事务一致性得到了保证。
事务复制用于在增量更改发生时将其传播到订阅服务器,网络应用程序或PWA或应用程序在发布者上进行时间更改和更改到达订阅服务器之间需要较低的延迟,网络应用程序或PWA或应用程序需要访问中间文件或数据状态。例如,如果文件同步中的文件更改或数据复制中的行更改了五次,则事务复制允许网络应用程序或PWA或应用程序响应每一次更改(诸如触发触发器),而不仅仅是文件同步中文件的更改或数据复制中行的净数据更改,发布者在文件同步中有大量的新文件、文件更新和文件删除,或者在数据复制中有大量***、更新和删除活动。
默认情况下,事务发布的订阅服务器2352应被视为只读,因为更改不会传播回至发布者。然而,事务复制确实提供了允许在订阅服务器2352上进行更新的选项。
事务复制由快照代理、日志读取器代理2345和分发代理2347实施。快照代理准备包含文件同步或模式中的文件以及数据复制中发布的表和数据库对象的数据的快照文件,将文件存储在快照文件夹中,并将同步作业记录在分发服务器2344上的分发数据库2346或文件夹中。
日志读取器代理2345监视在文件同步中被配置为事务复制的每个文件文件夹的事务日志2343或在数据复制中被配置为事务复制的每个数据库的事务日志2343,并将标记用于复制的事务从事务日志2345复制到分发数据库2346中,分发数据库用作可靠的存储和转发队列。分发代理2347将来自快照文件夹的初始快照文件和保存在分发数据库表或文件2346的文件夹中的事务复制到订阅服务器2352。
根据分发代理2347的调度,在发布者2342处进行的增量更改流到订阅服务器2352,该分发代理可以以最小的延迟连续运行,或者以预定的间隔连续运行。因为必须在发布者2342上对文件同步中的文件或数据复制中的数据进行更改(当使用事务复制而没有立即更新或排队更新选项时),所以可以避免更新冲突。最终,所有订阅服务器将实现与发布者相同的值。如果即时更新或排队更新选项与事务复制一起使用,则可以在订阅服务器上进行更新,而与排队更新一起使用,可能会发生冲突。
图24示出了图形用户界面(GUI),该GUI用于使用户或网络应用程序或网站或PWA的管理员或开发者能够通过基于图22-图23中详细讨论的不同类型的复制模型创建不同类型的发布来配置无程序缓存规则和策略。在其他实施例中,使得用户或网络应用程序或网站或PWA的管理员或开发者能够基于即用缓存策略模板来配置无程序缓存规则和策略,并且使得用户能够编辑或配置,包括为所选缓存策略提供所选参数的值。图6-图20示出了使用户能够执行以下操作的可视化工具:选择缓存策略模板或绘制与复制工作线程247或服务工作线程246相关的缓存策略,选择与所选缓存策略相关联的所选块相关联的参数,并提供包括缓存名称、添加的文件或文件夹或路径相关联的文件、包括或排除文件夹、文件组、自动识别的文件和更新的文件中的过滤文件的值。用户或管理员或开发者用户可以为复制工作线程247或在另一实施例中为服务工作线程246保存所选择或更新或创建的缓存策略的无程序配置文件695。
用户或管理员或开发者用户可以创建或选择或编辑或配置文件同步(如图22A/2310所详示)和数据复制(如图22B/2310所详示),用于缓存静态内容、资源、应用程序外壳相关文件和数据(如有),这在触发安装事件时执行。在另一实施例中,用户或管理员或开发者用户可以直观地选择“安装时-作为依赖项”模板(如图6所详示),并可以配置安装时缓存策略,包括提供缓存名称636,并选择或选择所选或添加的文件或文件夹、命名空间或路径特定的文件或文件夹或命名的文件组或文件夹组(如图4(401)中所详示)。
用户可以从列表605中选择缓存策略的模板(例如,“安装时-作为依赖项”),这打开示出就绪块、连接和顺序、默认相关选定参数的默认值的模板,并使用户能够添加、删除块、选择或编辑参数和相关值。图6示出,用户可以选择“新建”657来创建可视化缓存策略图或流程图或概念图。在创建新的空白文件后,用户选择“复制工作线程”块615、“安装(事件)”块620、“激活(事件)”块625、“网络”块640,“缓存”块630,在块之间画线以指示连接和顺序,提供选定或显示(建议)参数的值,例如缓存名称(参数或字段)以及用户输入值为“static_appshell_v1”,选择静态内容(参数或字段)以及用户输入值为图4(405)/图22(2205)中的选定文件。基于所选参数具体的输入或值和所述所选块的图表或流程图的绘制,***自动生成并更新配置文件695。
在一个实施例中,复制工作线程2620的安装进程开始于其在JavaScript中的注册,该注册声明了注册复制工作线程2620、配置文件247或JavaScript文件247(包含描述文件和数据复制的配置)的浏览器。一旦注册进程完成,浏览器245就开始通过定义安装事件的回调并设置缓存文件2660的环境来安装复制工作线程2620。
在安装事件期间,服务工作线程通过执行预定义的文件同步来缓存静态内容,该文件同步包括复制文件、文件夹、应用程序包的资源(来自开发者或发行者或提供者服务器135/145或网络应用程序/PWA平台或网络应用商店服务器115)和根据配置文件的数据复制,该配置文件包括安装数据库、基于数据结构创建数据库和复制数据(如图22-图23中所详示)或根据配置文件695中定义的“安装时”缓存策略执行,当缓存2660成功时,激活进程开始。如果缓存进程失败,那么激活事件将被终止,服务工作线程将在下一次尝试中安装它。
复制工作线程的2620“安装”事件2710是缓存静态资产2665的战略时间。在安装2710/2765时缓存应用程序外壳2665确保复制工作线程2620能够访问所有外壳资产2665。在激活2770复制工作线程或应用程序或组件、或基于复制的服务工作线程或应用程序服务2620之后,给定范围2401的所有页面将由复制工作线程、应用程序或组件、或基于复制的服务工作线程、或应用程序服务2620控制。
触发激活2770/2715事件的成功缓存和安装进程。当用户操纵到不同页面2605时,激活的复制工作线程2620(247)开始接收获取、推送和同步事件2735/2760。
用户或管理员或开发者用户可以准备文件、文件夹、包和相关联的复制工作线程配置文件352,该文件包括用于新版本的应用程序或网络应用程序或网站或PWA的文件同步和数据复制配置设置。在选择复选框2420以指示新版本的可用性的情况下,注册的复制或同步工作线程在重新加载时得到更新。浏览器245仅在现有文件中存在更新或者是首次而不是每次页面刷新的情况下才安装新的复制或同步工作线程。
激活事件是另一事件,在安装完成后立即执行。但并非立即激活,而是将根据旧版本的复制或同步工作线程的可用性进行激活。如果运行的服务工作线程版本不是旧的,则会以其他方式激活它,关闭现有的浏览器选项卡并重新打开新的选项卡将安装新的复制或同步工作线程。需要关闭现有浏览器选项卡并重新打开新选项卡才能激活复制或同步工作线程,因为它不是附加到单个页面,而是附加到整个域或范围和生命周期,即使在浏览器关闭之后也是如此。因此,这样做会触发激活事件。激活复制或同步工作线程后,给定范围的所有页面都将由复制或同步工作线程控制。
用户或管理员或开发者用户可以为新版本定义文件和数据复制2425(如图22和23(2310)中所详示)。
用户可以从列表805中选择缓存策略的模板(例如,“激活时”),这打开示出就绪块、连接和顺序、默认相关选定参数的默认值的模板,并使用户能够添加、删除块、选择或编辑参数和相关值。图8示出,用户可以选择“新建”857来创建可视化缓存策略图或流程图或概念图。创建新的空白文件后,用户选择“服务工作线程”块815、“安装(事件)”块820、“激活(事件)”块825、“删除”块830、“缓存”块840,在块之间划线以指示连接和顺序,提供所选或显示(建议)参数的值,例如,缓存名称(参数或字段)和用户输入值为“cacheName”,选择静态内容(参数或字段)和用户输入值是从图4(405)/图22(2205)中选择的文件。基于所选参数具体的输入或值和所述所选块的图表或流程图的绘制,***自动生成配置文件695。一旦安装了新的复制工作线程815并且未在使用以前的版本,新的复制工作线程激活825,并获得激活事件825。因为旧版本已经过时了,所以现在是处理模式迁移并移除未使用的缓存840的好时机。
在另一实施例中,用户或管理员或开发者用户可以合并文件和数据复制-推送订阅(如图22和图23(2340)中所详示),以更新客户端缓存2660或存储器2665或数据库2670中的文件和数据。
在一个实施例中,用户可以在文件管理器2205中将添加的文件标记为外壳或仅缓存2216,以提供指示或定义仅缓存策略,其中在获取事件2615上总是从缓存2660进行应答2610。在另一能够定义合并文件和数据复制的实施例中——推送订阅(如图22和图23(2340)中所详示),以更新客户端缓存2660或存储器2665或数据库2670中的文件和数据,并且在标记为外壳或仅缓存的文件发生变化的情况下,更新客户端缓存2660或存储器2665或数据库2670中所述更改的文件和数据。
在一个实施例中,使得用户或管理员或开发者用户能够为网络或缓存策略设置预设持续时间2452。
用户还可以从列表1405中选择缓存策略的模板(例如,“仅缓存”),这打开示出就绪块、连接和顺序、默认相关选定参数的默认值的模板,并且使用户能够添加、删除块、选择或编辑参数和相关值。图14示出,用户可以选择“新建”1457来创建可视化缓存策略图或流程图或概念图。创建新的空白文件后,用户选择“页面”块1415、“服务工作线程”块1420、“缓存”块1425,在块之间画线以指示连接和顺序,提供所选或显示(建议)参数的值,例如缓存名称(参数或字段)和用户输入值为“Default”,选择静态内容(参数或字段)和用户输出值为图4(405)中的选定文件。基于所选参数具体的输入或值和所述所选块的图表或流程图的绘制,***自动生成并更新配置文件1495。
在实施例中使用户或管理员或开发者用户能够提供通用回退内容2458。
用户还可以从列表1905中选择缓存策略的模板(例如,“通用回退”),这打开示出就绪块、连接和顺序、默认相关选择参数的默认值的模板,并使用户能够添加、删除块、选择或编辑参数和相关值。图19示出,用户可以选择“新建”1957来创建可视化缓存策略图或流程图或概念图。在创建新的空白文件后,用户选择“页面”块1915、“缓存”块1920、“网络”块1925、“服务工作线程”块1930,在块之间画线以指示连接和顺序,并提供所选或显示(建议的)参数的值。基于所选参数具体的输入或值和所述所选块的图表或流程图的绘制,***自动生成代码,或者在选择“生成代码”按钮的情况下,***自动产生配置文件1495。
在一个实施例中,用户或管理员或开发者用户在此策略2460下检查和定义内容。复制工作线程2620(247)根据该策略自动地工作,即,从缓存2660提供所述定义的内容,并且还执行网络请求2625以获得新的内容或数据以更新缓存条目2660,从而确保用户下次访问页面2605时,他们将看到最新的内容。在另一实施例中,用户或管理员或开发者用户可以创建或选择或编辑图22和图23(2340)中详细讨论的定义文件/数据合并发布/按需拉取订阅或推送订阅(如果有任何更新),并且在识别出该策略下的内容请求的情况下,自动执行或启动该策略下所述定义内容的所述定义拉取订阅。
在另一实施例中,用户或管理员或开发者用户可以从列表1105中选择缓存策略的模板(例如,“过期-同时-重验”),这打开示出就绪块、连接和顺序、默认相关选择参数的默认值的模板,并使用户能够添加、删除块、选择或编辑参数和相关值。图11示出,用户可以选择“新建”1157来创建可视化缓存策略图或流程图或概念图。在创建新的空白文件后,用户选择“页面”块1115、“复制工作线程”块1120、“网络”块1125、“缓存”块1130,在块之间画线以指示连接和顺序,提供所选或显示(建议)参数的值,例如,缓存名称(参数或字段)和用户输入值为“mysite-dynamic”,选择静态内容(参数或字段)和用户输入值为从图4(405)中选择的文件。基于所选参数具体的输入或值和所述所选块的图或流程图的绘制,***自动生成并更新配置文件1195。
在一个实施例中,用户或管理员或开发者用户在此策略2470下检查和定义内容。复制工作线程2620(247)根据该策略自动地行为,即,从缓存2660提供所述定义的内容,但是同时执行网络请求2625以更新缓存条目2660,并且向UI/页面2605通知新的最新内容。
在另一实施例中,用户或管理员或开发者用户可以创建或选择或编辑图22和图23(2340)中详细讨论的定义文件/数据合并发布/按需拉取订阅或推送订阅(如果有任何更新),并且在识别出该策略下的内容请求的情况下,自动执行或启动该策略下所述定义内容的所述定义拉取订阅。
在另一实施例中,用户或管理员或开发者用户可以从列表1005中选择缓存策略的模板(例如,“网络响应时”),这打开示出就绪块、连接和顺序、默认相关选择参数的默认值的模板,并使用户能够添加、删除块、选择或编辑参数和相关值。图10示出,用户可以选择“新建”1057来创建可视化缓存策略图或流程图或概念图。创建新的空白文件后,用户选择“页面”块1015、“服务工作线程”块1020、“网络”块1025、“缓存”块1030,在块之间画线以指示连接和顺序,提供所选或显示(建议)参数的值,例如,缓存名称(参数或字段)和用户输入值为“mysite-dynamic”,选择静态内容(参数或字段)和用户输入值为从图4(405)中选择的文件。基于所选参数具体的输入或值和所述所选块的图表或流程图的绘制,***自动生成并更新配置文件1095。
在一个实施例中,用户或管理员或开发者用户可以定义用户交互时这一策略2505,并定义这样的内容,该内容允许用户选择他们想要离线可用的内容。例如,YouTube上的视频、***上的文章、Flickr上的特定图库。例如,用户可以点击页面2605中的“稍后阅读”或“离线保存”按钮,当点击该按钮时,复制工作线程2620(247)接收到从网络2625获取所述点击的按钮相关内容并将其存储在缓存2660中的请求。
在一个实施例中,用户或管理员或开发者用户还可以从列表905中选择缓存策略的模板(例如,“用户交互时”),这打开示出就绪块、连接和顺序、默认相关选择参数的默认值的模板,并使用户能够添加、删除块、选择或编辑参数和相关值。图9示出,用户可以选择“新建”957来创建可视化缓存策略图或流程图或概念图。在创建新的空白文件后,用户选择“页面”块915、“点击(事件)”块920、“网络”块925、“缓存”块930,在块之间画线以指示连接和顺序,提供所选或显示(建议)参数的值,例如,缓存名称(参数或字段)和用户输入值为“mysite-article-”,选择静态内容(参数或字段)和用户输入值是从图4(405)中选择的文件。基于所选参数特定的输入或值和所述所选块的图表或流程图的绘制,***自动生成并更新配置文件995。
在一个实施例中,用户或管理员或开发者用户可以选择或定义或创建基于参数的单向服务器到客户端文件同步2507,以下载点击按钮相关联的定义的统一资源***(URL),例如936相关联的识别文件或内容。
在一个实施例中,用户或管理员或开发者用户可以创建或选择或编辑合并复制(合并发布/推送订阅)2510,用于接收或获取和存储或缓存订阅的推送通知和相关联的内容。
通知是用户设备上弹出的消息。它可以由打开的应用程序在本地触发,也可以在应用程序处于空闲状态时从服务器推送。推送通知提供了用户选择加入的内容和数据的及时更新。它在重新吸引用户并让他们重复使用应用程序方面发挥着重要作用。推送通知包括:通知API和推送API。通知API允许网页、复制工作线程或服务工作线程创建和控制***通知的显示。通知显示在设备的UI上(浏览器外部),并且因此存在于任何选项卡或浏览器窗口的上下文之外。由于它们独立于任何选项卡或浏览器窗口,因此即使在用户离开网站后也可以被创建。通知API允许用户向用户显示通知。需要用户的权限才能显示通知。推送API允许处理通过浏览器使用的推送服务从服务器推送到客户端的消息。当复制工作线程或服务工作线程被推送服务注册时,它在复制工作进程或者服务工作进程内给予推送事件。在此事件中,复制工作线程或服务工作线程获取需要在通知中显示的数据,并使用通知API显示通知。
在一个实施例中,用户或管理员或开发者用户可以选择缓存,回退到网络2515以指示缓存2660中的内容的“仅缓存”行为和未被缓存的内容的“仅网络”2625行为。
在一个实施例中,用户或管理员或开发者用户可以从列表1605中选择缓存策略的模板(例如,“缓存,回退到网络”),这打开示出就绪块、连接和顺序、默认相关选择参数的默认值的模板,并且使用户能够添加、删除块、选择或编辑参数和相关值。图16示出,用户可以选择“新建”1657来创建可视化缓存策略图或流程图或概念图。创建新的空白文件后,用户选择“页面”块1615、“服务工作线程”块1620、“缓存”块1625、“网络”块1630,在块之间画线以指示连接和排序,提供选定或显示(建议)参数的值,例如,缓存名称(参数或字段)和用户输入值为“Default”,选择静态内容(参数或字段)和用户输出值为图4(405)中的选定文件。基于所选参数具体的输入或值和所述所选块的图表或流程图的绘制,***自动生成并更新配置文件1695。
在一个实施例中,用户或管理员或开发者用户可以选择网络回退到缓存2520,以指示从网络获取定义的内容。此策略对于网站“版本”之外频繁更新的资源非常有用。例如,文章、头像、社交媒体时间线和游戏排行榜,为在线用户提供最新的内容,但离线用户获得较旧的缓存版本。如果网络请求成功,则可以更新缓存条目。然而,如果用户的连接时断时续或速度缓慢,他们将不得不在网络故障中等待,然后才能在设备上获得完全可接受的内容。所以,先缓存后网络策略是一个更好的解决方案。
在一个实施例中,用户或管理员或开发者用户可以为该策略的定义内容创建或选择或编辑合并复制(合并发布/推送订阅)2522。在识别定义的资源、内容、文件和数据中的更新内容的情况下,服务器侧复制应用程序或模块2650自动运行或启动所述定义的文件同步和/或数据复制,以从网络推送更新的内容。在另一实施例中,用户还可以配置拉取订阅,以根据请求从网络获取更新的内容。
在一个实施例中,用户或管理员或开发者用户可以从列表1805中选择缓存策略的模板(例如,“网络,回退到网络”),这打开示出就绪块、连接和顺序、默认相关选择参数的默认值的模板,并使用户能够添加、删除块、选择或编辑参数和相关值。图18示出,用户可以选择“新建”1857来创建可视化缓存策略图或流程图或概念图。在创建新的空白文件后,用户选择“页面”块1815、“缓存”块1820、“网络”块1825、“服务工作线程”块1830,在块之间画线以指示连接和顺序,提供所选或显示(建议)参数的值,例如,缓存名称(参数或字段)和用户输入值为“Default”,选择静态内容(参数或字段)和用户输入值是从图4(405)中选择的文件。基于所选参数具体的输入或值和所述所选块的图表或流程图的绘制,***自动生成并更新配置文件1895。
在一个实施例中,用户或管理员或开发者用户可以选择缓存然后网络2525来启用该策略,其中,这需要页面2605做出两个请求,一个到缓存2660,另一个到网络2625,用于预定义的内容、文件、数据。其想法是首先显示缓存的数据,然后在网络数据到达时更新页面。有时,当新数据到达时,它需要替换当前数据(例如,游戏排行榜)。
在一个实施例中,用户或管理员或开发者用户可以为该策略的定义内容创建或选择或编辑合并复制(合并发布/拉取订阅)2530。在接收到来自客户端的请求并识别所定义的资源、内容、文件和数据中的更新内容的情况下,服务器侧复制应用程序或模块2650自动运行或启动所述所定义的文件同步和/或数据复制,以从网络获得最新的内容。
在一个实施例中,用户或管理员或开发者用户可以对不具有服务器响应缓存的页面使用模板策略2540。如果页面由服务工作线程控制,选择请求已定义的JSON数据以及已定义或选择的模板,然后转而进行呈现。
在一个实施例中,用户或管理员或开发者用户可以选择此策略2545并定义后台同步2550(如图22-图23中所详示),它允许请求后台数据同步。即使用户没有打开网站、网络应用程序或PWA的选项卡,也发生这种情况。仅服务工作线程被唤醒。这种策略对非紧急更新很有用,尤其是那些经常发生的更新,例如社交时间线或新闻文章,每次更新的推送消息对用户来说过于频繁。
在另一实施例中,用户可以定义从客户端/缓存2660到服务器2625(2635)或从服务器2625(2635)到客户端2660的单向文件和/或数据同步2555。
另一重要实施例自动同步与网站或网络应用程序或渐进式网站应用程序(PWA)相关的文件和数据。用户或管理员或开发者用户需要提供域名或统一资源***(URL)或服务器和客户端上的命名网络应用程序包的文件夹和相关文件(静态内容)的路径,以及已识别的命名服务器和客户端数据库。最初或在安装网络应用程序或PWA时,自动从服务器复制或同步文件(从服务器单向到客户端)以及与网络应用程序相关的全部部分数据(快照复制)。之后,根据客户端的页面请求、事件标识(包括获取、推送和同步事件)、客户端或服务器中文件和数据的更新监控和跟踪、网络状况或质量、文件和数据类型、记录的请求历史、用户交互、响应和访问、数据存储可用性、最常用的页面或功能或应用程序的一部分、按钮的类型或名称(例如离线保存、稍后查看)、频繁更新内容的标识、文件名称、文件大小、文件等级或内容、与文件相关的元数据(包括标记的文件和数据(外壳、可更新、重要、可下载、可更新的、回退、需要、书签、收藏夹、点赞、最常用))、新版本的标识,用户隐私设置和偏好,发生了自动进行快照(如果是新版本)、合并(文件/数据中的更新)发布以及拉取和推送(订阅)、单向或双向、规则和计划表基础文件同步和数据复制。基于包括获取、推送和同步在内的事件的请求或触发,复制工作线程(247)自动使用来自本地存储器和数据库的本地缓存的资源或内容或文件,或者从包括服务器存储器或数据库的网络获取所需或不可用或更新的资源、内容、文件和数据。例如,当用户安装微博或社交网络或新闻网络应用程序或PWA时,在安装进程中复制网络应用程序包文件或所需文件或应用程序外壳文件(来自开发者或发行者或提供者服务器135/145或网络应用程序/PWA存储或平台服务器115),因此只需要来自服务器的更新文件和动态内容或数据。在注册、安装和激活复制工作线程(247)之后,复制工作线程(247)监视和跟踪传入请求、当前网络状况、缓存中资源的不可用性。在接收到请求或触发获取事件的情况下,复制工作线程(247)首先检查缓存,如果网络可用,则服务器侧更新(如果有),如果更新,则自动运行文件和数据复制(服务器到客户端),并复制或合并更新的文件和数据。如果网络不可用,则显示缓存中的内容或数据。在接收请求时,如果网络不可用,则稍后检查并更新(如果有更新)与所述请求相关联的来自服务器的更新内容和数据,以供下次使用。如果特定于请求的缓存内容不可用,并且网络也不可用,则显示预定义的通用回退内容。如果应用程序未打开并且网络可用,则在后台根据合并发布以及拉取和推送订阅同步文件和数据。在检测到新版本的情况下,自动移除旧版本或替换为新版本相关文件和数据。在网络质量不符合所要求阈值的情况下,则使用缓存的数据并识别更新数据的标志,如果为未更新则好,如果为更新则按级别或优先级或要求或请求或偏好或特定更新的文件、内容、资源和数据(例如产品的更新价格)进行同步或通知用户文件或数据(价格、新闻、提要、电子邮件、消息)已更新,但由于网络状况不佳,目前显示旧版本或早期版本的数据或文件,在检测到良好或要求的网络状况的情况下,则后台同步更新的文件和数据,并将良好的网络状况、新文件、内容和数据的到达或可用性通知给用户,并且根据通知或打开应用程序的选择自动显示更新的文件或数据,或自动打开应用程序并自动显示更新的文件和数据。根据用户设置,在后台应用推送订阅以更新更新的文件和数据,或应用按需拉取或请求或偏好特定的更新文件、内容、资源和数据。根据为网络应用程序缓存存储器分配的存储,***自动分配优先级和等级,并根据分配的优先级和等级自动同步更新的文件和数据,其中自动将优先级和等级分配给一个或多个或标记的文件、文件夹、数据、统一资源***(URL)或功能是基于请求、记录的数据,包括用户对页面的访问、用户操作、活动、交互、与访问的页面或功能的事务处理/其内/其上的事务处理、网络状况、“缓存内容、文件和数据的可用性”、“内容、文件、数据更新的标识”、用户偏好和设置、由已识别的排名联系人或连接发送或发布的内容或消息或电子邮件、跟踪或订阅的来源或来源、付费内容、***或应用程序所需的文件或数据(例如,应用程序外壳中的更新)、喜欢或反应的内容、购买或喜欢的产品和服务、用户档案,最多浏览或最受欢迎的内容(基于浏览量或收听量或阅读量以及反应量,包括最喜欢或评论的内容)、当前位置、QR码扫描、语音命令、关键词、用户相关数据、全局偏好和设置(兴趣、交互实体数据、链接***中的用户相关数据,已识别的关键词、事务处理、反应、操作、状态、位置、共享、参与)。在另一实施例中,基于存储的不可用性(特定网络应用程序或PWA的***和用户分配的存储)或存储更高优先级或等级的特定内容、文件和数据的标识,来自用户的选定(搜索、匹配、过滤和选择)内容、文件以及数据指令的手动删除,从缓存(来自数据库的本地数据和文件的本地存储)自动移除内容、文件数据,自动替换更新的内容、文件、数据,移除旧版本或卸载网络应用程序,在网络应用程序中更新或升级用户设置,用于自动删除某些类型的内容,包括删除每日新闻,移除已阅读的消息或新闻或内容或电子邮件或通知,所选应用程序在特定时间段后删除(对于非频繁请求应用程序,按需求使用网络应用程序),在特定的预定义时间段内移除未访问的内容、文件和数据(即移除较少使用或较少请求的内容、文件和数据)。
在一个实施例中,使用户或管理员或开发者用户能够针对没有离线等价物的事物(诸如分析ping、非-GET请求)选择仅网络策略2570。
在配置缓存策略之后,用户或管理员或开发者用户可以保存与特定网站或网络应用程序或渐进式网络应用程序(PWA)相关的配置文件2581,在测试或演示或示例项目环境2582中测试一个或多个策略,编排或排序不同的配置策略,用户可以选择和编辑配置文件2584,移除文件2585,并基于提供所选缓存策略相关参数的值来可视地绘制、定义、编辑缓存策略。
图26显示了复制工作线程或应用程序或组件或基于复制的服务工作线程或应用程序服务的获取和缓存策略。
在渐进式网络应用程序(PWA)上下文中的另一实施例中,当今的网络是丰富和有用的,但是当用户访问网络应用程序时;当他们连接不良或失去连接时,会看到“无互联网连接”的页面。网络应用程序的离线状态无法向用户提供任何有用的信息。但是,同步组件或工作线程或基于复制模型的服务工作线程的引入已经将此错误转变为可以被优雅的处理。复制工作线程或同步或静态内容或文件和动态内容或数据复制模型或基于拓扑结构的服务工作线程是一个事件驱动的组件,其在与网页分离的后台运行,对事件做出反应,并通过服务器和资源拦截应用程序或网站的网络请求。它充当网络和浏览器之间的代理。它甚至可以在应用程序关闭时运行,因此即使在站点关闭时也可以触发事件。它还支持推送通知和后台同步,周期性同步。由于它可以拦截请求、修改内容,甚至用新的响应完全替换,因此只有通过安全连接(HTTPS)提供服务的页面才能注册复制工作线程或复制应用程序或模块或组件(247)。
如图26所示,复制工作线程或复制应用程序或模块或组件2620位于(247)网络应用程序/PWA/应用程序(243)2605/2660和网络2625之间,并决定何时应从缓存2660获取内容以及何时从网络2625获取内容(120)。
当连接丢失或质量差时,在没有服务工作线程或复制工作线程或应用程序或组件或基于复制的服务工作线程或应用程序服务的情况下编写的简单的新闻网络应用程序,将显示标准的“您离线了”消息。然而,具有正在运行的复制工作线程或应用程序或组件或基于复制的服务工作线程或应用服务2620的应用程序可以显示缓存的GUI,运行脚本,甚至可以显示来自先前访问的用户缓存的内容2660。它还可以记录发送到服务器的数据,并在互联网连接可用时经由同步事件进行调度,并经由推送事件从服务器接收推送通知,如图22-图26所示。它便于缓存应用程序外壳2665,允许其在没有网络2625的情况下加载。当应用程序通过网络加载时,复制工作线程或应用程序或组件或基于复制的服务工作线程或应用服务2620缓存应用程序外壳和内容2665,并在用户连接不良或脱离网络时将其显示给用户。
由于复制工作线程或应用程序或组件或基于复制的服务工作线程或应用服务2620是事件驱动的组件或应用程序或者执行的指令集,所以它用事件唤醒并且仅在需要处理事件时才运行。通过它的开发者可以将网络视为增强,以适当的方式控制缓存资源。对缓存资源的控制在开发离线应用程序中起着重要作用,这是渐进式网络应用程序(PWA)的关键功能之一。经由复制工作线程或应用程序或组件或基于复制的服务工作线程或应用服务2620,网页2605即使离线也可用,并且具有缓存数据2660的网页2605甚至在脆弱或缓慢且不稳定的网络2625上加载得更快。它具有与网页2605完全分离的生命周期。
如图27A所示,复制工作线程或应用程序或组件或基于复制的服务工作线程或应用程序服务2620安装进程2710以在JavaScript中注册时开始,JavaScript声明了注册复制工作线程或应用程序或组件或基于复制的服务工作线程和应用程序服务2622配置文件2622的浏览器。
它使得用户,复制工作线程或应用程序或组件或基于复制的服务工作线程或应用程序服务API是否可访问,并且如果存在,则当加载页面2605时,注册配置文件2622处的复制工作线程或应用程序或组件或基于复制的工作线程或应用程序服务2620。
一旦注册进程完成,浏览器245就开始通过定义安装事件2710的回调来安装2710复制工作线程或应用程序或组件或基于复制的服务工作线程或应用程序服务2620(247),并设置用于缓存文件2660的环境。在安装事件2710期间,复制工作线程或应用程序或组件或基于复制的服务工作线程或应用程序服务2620基于配置的文件2622快照发布或途中发布以及拉取或推送订阅(如图22-图23和图24(2415/2422)中所详示)来缓存静态内容或缓存静态内容2660,并且当缓存成功时,激活进程2715开始。如果缓存进程失败,则激活事件2715被终止2730,并且复制工作线程或应用程序或组件或基于复制的服务工作线程或应用程序服务2620在下一次尝试中安装。
触发激活事件的成功缓存和安装进程。当用户导航或交互或操纵到不同页面2605时,激活的2715复制工作线程或应用程序或组件或基于复制的服务工作线程或应用程序服务2620开始接收获取、推送和同步事件或请求2615。
复制工作线程或应用程序或组件或基于复制的服务工作线程或应用程序服务2620响应于获取、推送和同步事件或请求2615。如前所述,复制工作线程或应用程序或组件或基于复制的服务工作线程或应用程序服务2620是事件驱动的,并且具有与网页2605完全分离的生命周期,这可以根据需要进行操作。复制工作线程或应用程序或组件或基于复制的服务工作线程或应用程序服务2605可以被终止2730以节省内存或执行其控制事件、获取和消息2735的下一步骤。
图26显示了从缓存数据2665中提取布局、样式和静态内容,而从网络2625中获取动态内容2645,这提高了网络应用程序2605的加载速度和性能。
应用程序外壳(架构)是构建渐进式网络应用程序(PWA)的基本代表性用户界面2605所需的最低HTML、CSS和JavaScript。它是提供即时加载、流畅的UI/UX和良好的重复访问性能的主要因素之一。立即缓存2665应用程序外壳,这意味着外壳文件通过网络2625加载一次,然后保存到本地设备2665。因此,每当用户使用应用程序2605时,外壳文件2665都是从本地设备的缓存2605呈现的,这给予了快速的启动时间。应用程序外壳模型将应用程序划分为外壳2665和内容2645(网络/在线)/2670(离线/缓存)。
外壳包括显示内容所需的应用程序2605的静态部分2665。它将UI保持在本地,并通过API动态获取所有内容。因此,整个外壳2665的缓存确保即使没有互联网连接或连接不良,应用程序也至少加载熟悉的UI,并且用户不会被授予裸屏幕或默认连接失败消息。
应用程序外壳与发布原生应用程序时发布到应用程序商店的程序包或代码包相同。它是启动应用程序最必需的组件,但不包含任何数据。内容或动态数据2670被呈现在外壳2665/2605内。根据应用程序类型,内容或数据也可以被缓存2670。
用户可以定义应用程序外壳架构来提高速度、性能、即时加载和更新。存在若干模型、模式、规则和约束用于设计应用程序外壳架构。应用程序外壳至少应该包括应用程序外壳所需的资源、UI插件和组件,如图像、样式、JavaScript。
如图26所示,复制工作线程或应用程序或组件或基于复制的服务工作线程或应用程序服务2605可以根据网络状况从缓存存储器2660加载资源,或者通过在线网络2625获取资源。这些可编程接口极大地改善了网络应用程序用户的在线和离线浏览体验。
获取事件是由客户端或页面2605相关的JavaScript/配置文件2622发起的HTTP请求事件2615。此外,复制工作线程或应用程序或组件或基于复制的服务工作线程或应用程序服务2620从服务器2630接收网络推送通知,并且用户与所显示的通知交互。此外,例如当恢复互联网连接时,复制工作线程或应用程序或组件或基于复制的服务工作线程或应用程序服务2620接收后台同步事件。最后,复制工作线程2620具有事件,该事件变更复制工作线程或应用程序或组件或基于复制的服务工作线程或应用程序服务2620的生命周期。
图27A示出了复制工作线程注册进程。复制工作线程247基本上用作位于网络应用程序243、浏览器245和网络(当可用时)120之间的代理服务器。除其他外,它们旨在创建有效的离线体验,拦截网络请求,并根据网络是否可用采取适当行动,以及更新存在于服务器上的资产。它们还将允许根据相关规则和定义的策略、推送通知和后台同步API来访问文件和数据复制。
复制工作线程是针对源和路径2401注册的事件驱动的工作线程。它采用配置文件2402的形式,如图22-图25所示,由开发者、管理员或用户配置或设置,可以控制与其相关联的网页/网站,拦截和修改导航和资源请求,并以非常精细的方式缓存资源,以完全控制应用程序在某些情况下的行为(最明显的一种是当网络不可用时)。
复制工作线程是在工作线程上下文中运行的:因此它没有DOM访问权限,并且运行在与驱动应用程序的主JavaScript不同的线程上,因此它是非阻塞的。它被设计为完全异步;因此,诸如同步XHR和网络存储之类的API不能在复制工作线程内部使用。出于安全原因,复制工作线程仅通过HTTPS运行。
首先使用API方法注册复制工作线程。如果成功,服务工作线程将被下载到客户端,并尝试安装/激活(参见下文)用户在整个源内或在由网络应用程序或PWA或网站的管理员或开发者用户指定的子集2401内访问的URL。
当用户首次访问由复制工作线程控制的站点/页面/网络应用程序/PWA时,会立即下载复制工作线程。
之后,当导航到作用域内页面并且在复制工作线程上触发事件时,会进行更新。当下载的文件(配置文件(图22-图25)或如图6-图20中详细讨论的基于向导或视觉用户界面生成或编辑的文件)被发现是新的(或者不同于现有的复制工作线程(按字节进行比较),或者不同于此页面/站点/网页应用程序遇到的第一个复制工作线程)时,尝试安装2710。
如果这是第一次使复制工作线程可用,则尝试安装2710,然后在成功安装之后,进行激活2715。
如果有一个现有的复制工作线程可用,则新版本将在后台安装,但尚未激活——此时它被称为等待中的工作线程。只有当不再加载任何仍在使用旧复制工作线程的页面时,它才会被激活。一旦没有更多的页面要加载,新的复制工作线程就会激活(成为活动工作线程)。
可以监听安装事件;标准行动是准备复制工作线程以便在触发时使用,例如,通过使用内置存储API创建缓存,并在其中放置资产以便在触发时使用以便离线运行应用程序。
还有一个激活的事件。此事件触发的点通常是清理旧缓存和与以前版本的复制工作线程相关联的其他内容的时间。
复制工作线程可以使用获取事件2735来响应请求。可以使用API的获取事件响应方法,以用户或开发者希望的任何方式修改对这些请求的响应。
在安装事件2710期间,复制工作线程缓存静态内容,并且当缓存成功时,激活进程开始。如果缓存进程失败,则激活事件在2730处终止,并且复制工作线程在下一次尝试中进行安装。触发激活事件的成功缓存和安装进程。当用户操纵到不同的页面时,激活的2715复制工作线程开始接收获取2735、推送和同步事件。
图27B示出,在与任何传统网络应用程序类似的实施例中,首先,index.html文件2740加载app.js文件2750。在app.js文件2750中,为了注册复制工作线程或应用程序或组件或基于复制的服务工作线程或应用程序服务2620,开发者配置复制(如图22-图23中所详示)以及相关的缓存和获取规则(如图24-图25和图6-图20中所详示),并且配置设置存在于单独的文件2622/2402中。
在激活2770复制工作线程或应用程序或组件或基于复制的服务工作线程或应用程序服务2620之后,给定作用域2401的所有页面将由复制工作线程、应用程序或组件或基于复制的服务工作线程、或应用程序服务2610控制。
复制工作线程或应用程序或组件或基于复制的服务工作线程或应用程序服务2620,一旦事件进入,例如获取事件2615/2735和所有其他事件2615/2735,就自动激活2770。如果由于HTML文件2605请求资源2615或开发者在JavaScript代码中发送获取请求而发生获取事件2615/2735,则复制工作线程或应用程序或组件或基于复制的服务工作线程或应用程序服务2620被激活2770并触发获取事件2760,然后回到空闲模式2780。当存在连接时将数据存储为键值对(键:请求;值:响应)2665,并在应用程序离线时获取它们。取代网络请求2625,可以检索缓存数据2665。
在一个实施例中,复制工作线程2620可以由许多主线程(在不同的浏览器选项卡中运行)同时访问。在一个实施例中,在浏览器上的每个作用域(即,定义或提供URL路径)2401仅允许一个复制工作线程2620。
网络工作线程和与主线程耦合的网络工作线程不同,一旦复制工作线程2620由主线程启动,即使该线程死亡或浏览器关闭,它也不会被终止。在一个实施例中,来自主线程的网络请求2675经过复制工作线程2620。因此,复制工作线程2620的行为就像位于中间的人,其有权转换网络请求和响应2675。通过使用复制工作线程,可以缓存网页和/或网络资产2660并将该缓存的数据2610返回,而不是通过网络2675发送请求。
复制工作线程2620是一种网络工作线程。它本质上是一个复制和缓存规则配置文件2622(2233/2291/2292),与主浏览器线程分开运行,拦截网络请求2115,从缓存2660缓存或检索资源,并传递推送消息。因为工作线程与主线程分开运行,所以复制工作线程2620独立于它们所关联的应用程序2605。复制工作线程2620以异步模式工作。当应用程序不是活动的2605时,复制工作线程2620可以从服务器2630接收推送消息。这允许应用程序2605向用户显示推送通知,即使它在浏览器2605中没有打开。
复制工作线程2620使应用程序2605能够控制网络请求2675,缓存2660那些请求以提高性能,并提供对缓存内容2660的离线访问。复制工作线程依赖获取(一种从网络检索内容的方式)2615,包括配置的文件和数据复制模型(如图22-图23所详示)以及定义的规则和策略(如图24-图25所详示)和缓存(用于应用程序数据的持久内容存储)2660。该缓存2660是持久的并且独立于浏览器缓存或网络状态。
缓存资源2660将使得在大多数网络状况下内容加载更快。有关缓存策略、规则、模式、模型、拓扑和架构的列表,请参见图22-图25和图4-图20。
使用复制工作线程2620内的获取,截取网络请求2615,然后用所请求的资源以外的内容修改响应2610。因此,当用户离线时,可以使用该技术来提供来自缓存2660的资源2610。
复制工作线程的“安装”事件2710是缓存静态资产的战略时间。在安装2710/2765时缓存应用程序外壳确保复制工作线程2620能够访问所有外壳资产2665(如果任何资产未能缓存,则中止2720复制工作线程安装)。
获取事件2735***拦截所有请求2615。复制工作线程2620接收所述请求2615,并创建对请求2615的自定义响应2610或用自定义响应2610对请求2615进行响应。用户可以使用缓存策略,包括缓存回退到网络策略:首先根据接收到的统一资源***(URL)或链接相关的匹配资源、值、内容、文件和数据,检查用于请求的资源的缓存,如果失败,则将请求发送到网络。
除了通过使用复制工作线程/应用程序/模型来缓存预定文件外,还可以通过使用复制工作线程/应用程序/模型将文件按请求动态添加到缓存中。
复制工作线程的作用域决定了复制工作线程控制哪些文件,换句话说,服务工作线程将从哪个路径拦截请求。默认作用域是复制工作线程文件的位置,并扩展到下面的所有目录。因此,如果复制工作线程和规则配置文件位于根目录中,则复制工作线程将控制来自该域中所有文件的请求。在一个实施例中,用户还可以通过在注册时传入附加参数或经由复制工作线程和规则配置文件来设置任意作用域。
一旦激活,复制工作线程就会控制其作用域内加载的所有页面,并开始监听这些页面中的事件。
通过使用缓存和存储技术,复制工作线程启用了网络应用程序,并可以预缓存网络应用程序的部分内容,以便在用户下次打开它时立即加载。使用复制工作线程使网络应用程序能够拦截和处理网络请求,包括管理多个缓存、最小化数据流量,以及将离线用户生成的数据保存直至再次上线。这种缓存使开发者能够专注于速度,给予网络应用程序与本机应用程序相同的即时加载和定期更新。
在应用程序外壳模型中,其包含网络应用程序加载用户界面骨架所需的本地资源,以便离线时工作并使用JavaScript填充其内容。该功能的外壳被加载并显示给用户(并可能由服务工作线程缓存,以便可以离线访问),然后在用户浏览应用程序时动态加载页面内容。
图28示出了描述存储第一应用程序和经由网络2895(2890)下载的其他应用程序的存储介质的框图。在操作***中执行所述第一应用程序。第一应用程序的执行为其他应用程序提供了运行环境。此外,在由第一应用程序的执行所提供的运行环境中执行第二应用程序。第二应用程序的执行启动复制逻辑进程2860和对应于第二应用程序的第一视图页面2815的第一视图进程2810。复制逻辑进程2860和第一视图进程2815分别与由第一应用程序的执行提供的运行环境对接。复制逻辑进程2860基于第一视图页面2815的第一复制逻辑配置设置2860、获取和缓存的或选通的资源、内容、文件和数据2850来生成初始第一页面数据。然后,经由运行环境将初始第一页面数据2820从复制逻辑进程2860传输到第一视图进程。此外,在第一视图进程中,根据第一视图页面2815的初始第一页面数据来呈现第一视图页面2805。
在一些实施例中,经由运行环境将第一视图页面2615的一部分的更新数据从复制逻辑进程2860传输到第一视图进程2810。然后,在第一视图进程2810中,根据第一视图页面2815/2805的部分的更新数据2850来重新呈现第一视图页面2805的部分。
在一些实施例中,在运行环境中,第二应用程序的全局复制配置设置是基于第二应用程的程序标识符的父应用程序。在运行环境中,根据第二应用程序的全局复制配置设置启动复制逻辑进程和第一视图进程。此外,在复制逻辑进程中,当第二应用程序的复制逻辑进程开始时,第一视图页面的第一复制配置设置。在复制逻辑进程中,在完成第一视图进程中的初始化后,根据第一复制配置设置,获取第一视图页面的初始第一页面数据,并经由运行环境将第一视图页面的初始第一页面的数据从复制逻辑进程发送到第一视图页面对应的第一视图进程。
在一些实施例中,在运行环境中,根据第二应用程序的全局复制配置设置中的全局配置逻辑启动复制逻辑进程,并根据由第二应用程序的全局复制配置设置中的全局页面配置设置定义的第一视图页面的全局特征来启动第一视图进程。全局页面配置设置定义第二应用程序的视图页面的全局特征。
在一些实施例中,父应用程序在操作***上运行,该父应用程序为子应用程序复制逻辑层单元2860和第一子应用程序视图层单元2815/2810提供运行环境,通过子应用程序逻辑层单元2860获取初始页面数据2825,并通过第一子应用程序视图层单元2815实施第一页面2815的呈现2810。因此,当父应用程序正在运行时,可以执行属于子应用程序的页面。此外,当第一个页面发生更改时,只需要呈现更新的部分。此外,子应用程序逻辑层单元2860和第一子应用程序视图层单元2815分离应用程序的视图层2815和逻辑层2860。
父应用程序是提供用于执行包括页面或应用程序页面或接口的子应用程序的环境的应用程序(图中未示出),其中一个或多个或组或每个页面或应用程序页面或接口包括逻辑层2860和视图层/渲染器2810。父应用程序是原生应用程序。原生应用程序是可以直接在操作***上运行的应用程序。子应用程序是可以在父应用程序提供的环境中执行的应用程序。子应用程序包括电子商务应用程序、预订应用程序、订购应用程序、表格预订应用程序、漏勺(colander)应用程序或任何类型的应用程序。
子应用程序逻辑层单元2860和对应的子应用程序视图层单元2810被配置为实施子应用程序的示例。一个子应用程序可以由一个子应用程序逻辑层单元2860和至少一个子应用程序视图层单元2810来实施。子应用程序视图层单元2810可以与子应用程序页面2815一一对应。第一子应用程序视图层单元2810是至少一个子应用程序视图层单元2810中的一个,对应于第一页面2815,并且被配置为组织第一页面2811的视图并呈现第一页面2810。
子应用程序视图层单元2810被配置为组织和呈现子应用程序的视图2805。子应用程序逻辑层单元2810被配置为处理相应子应用程序页面2815的子应用程序和数据处理逻辑2860。该单元可以具体地是进程或线程,子应用程序视图层单元(渲染器)2810例如是子应用程序查看层线程,并且子应用程序逻辑层单元2860例如是子应用程序逻辑层线程(例如服务工作线程/复制工作线程以及与呈现层或视图层或渲染器线程相关联的独立或单独的线程)。子应用程序逻辑层单元2860可以在虚拟机中运行。子应用程序视图层单元2810和子应用程序逻辑层单元2860可以通过父应用程序原生单元进行缓存、获取、传输和通信,父应用程序原生单元是用于在父应用程序和子应用程序之间进行通信的接口,并且父应用程序原生单元可以是父应用程序的线程或进程。
每个子应用程序页面2815的逻辑代码2860包括第一页面2815和第二页面2815中的逻辑代码(例如,如图4-图21中详细讨论的服务工作线程代码或生成的代码,或者如图22-图27中详细论述的复制工作线程和复制工作线程配置设置文件),并且可以在安装网路应用程序/迷你应用程序和服务工作线程时注册,或者可以在启动时由子应用程序逻辑层单元2860注册。第一页面2815可以是子应用程序的主页,使得子应用程序逻辑层单元2860可以在被启动之后直接从应用程序数据/缓存2850或者从第一页面2815的网络(例如服务器135/145)获取2855初始页面数据,并且将第一页面2815的初始页面数据2825发送到与第一页面2815相对应的第一子应用程序视图层单元2810。第一页面2815也可以是父应用程序指定的子应用程序页面,使得子应用程序逻辑层单元2860可以在父应用程序指定第一页面2815之后获取2855第一页面2815的初始页面数据2850,并将初始页面数据2825发送到与第一页面2815相对应的第一子应用程序视图层单元2810以用于呈现2805。
图29-图31示出了示例性的用户提供的、更新的、与用户相关的多种类型的数据,包括与用户有关的关键字、类别、子类别、偏好和兴趣2910。用户能够搜索2923并添加关键字2925。用户可以选择自动识别的用户相关关键词2905,其中自动识别用户相关关键词是基于监控和跟踪的用户相关活动、动作、事务处理、参与、通信、共享、反应、来自一个或多个源的状态、链接的***和数据库、用户的语音、QR码或对象的扫描、搜索、采取调用操作、接收或查看或发送或发布的消息、SMS、电话、电子邮件、反应、帖子、位置相关关键词。用户可以保存更改2950,并在向导或用户界面中选择下一步2952。图30-图31示出,用户能够提供不同类型的档案信息,包括个人、企业、工作、兴趣档案,如姓名、年龄、性别、学校、学院、技能、活动、联系信息、联系方式、家庭和办公室位置、关于互动实体和相关关系的信息、使用的、点赞、购买、订阅、互动和当前使用的品牌、产品和服务的列表等。此外,***自动监控、跟踪和记录来自一个或多个源的用户相关活动、动作、事务处理、状态、通信、参与、调用操作、位置、地点和相关详细信息,这些源包括链接或连接或访问的第三方***、数据库、网络、应用程序、设备。
在从多个源收集、存储、更新、分析、识别多种类型的用户相关数据之后,***应用一种或多种类型的规则、触发条件和策略来识别匹配的和上下文相关的网站和应用程序,包括网路应用程序和渐进式网络应用程序(PWA)。
图32示出了建议的网络应用程序和渐进式网络应用程序(PWA)3210(248)的显示,其中建议的网络适用程序和渐进型网络应用程序(PWA)基于多个因素(354),包括来自一个或多个源的所述用户相关数据,包括用户提供的、用户接收的、自动监控和跟踪的一个或更多源,包括链接、连接或访问的***、数据库、网络、设备、应用程序、网站、服务器。在一个实施例中,使用户能够选择或设置自动安装选项3201以自动安装建议的网络应用程序/PWA3210。在另一实施例中,使得用户能够从网络应用程序/PWA 3210的建议列表中选择网络应用程序/PWA,并安装所有选择的网络应用程序/PWA 3202。
在另一实施例中,基于来自一个或多个源的与用户相关的更新数据,包括用户提供的、由用户接收的、来自第三方的链接、连接或访问的***、数据库、网络、设备、应用程序、网站、服务器的用户相关数据,自动识别、建议和显示网络应用程序/PWA 3215的更新列表。在另一实施例中,使得用户能够基于搜索查询3224搜索网络应用程序/PWA 3202并且从搜索结果中选择一个或多个网络应用程序/PWA并且安装所选择的网络应用程序/PWA3225。
在另一实施例中,使用户能够查看并打开已安装的网络应用程序/PWA 3250的列表。在另一实施例中,使用户能够选择自动卸载选项3251来自动卸载网络应用程序/PWA,其中基于以下来自动卸载网络应用程序/PWA:特定持续时间段内未使用的网络应用程序/PWA的标识、用户设备存储短缺的标识、由于用户设备存储不足,需要安装优先级更高的网络应用程序/PWA、来自服务器的指示、用户的反应。
在另一实施例中,使用户能够选择用于自动命令3252网络应用程序/PWA的选项,其中基于用户的频率或打开网络应用程序/PWA的频率、当前位置、使用的最近时间、包括动作的事件的触发、状态、推送通知或消息或SMS或电话或电子邮件的接收、事务处理的识别、当前活动或动作、连接用户使用的、监控和跟踪的用户行为、应用程序的打开日期和时间、服务器或用户的应用程序等级或自动识别的等级、会员资格、付费应用程序、订阅、接收新内容、新闻、帖子、消息、电子邮件、对发布内容的反应、到期提醒或日历条目或闹钟来自动命令网络应用程序。在另一实施例中,使用户能够手动命令3254网络应用程序/PWA。在另一实施例中,使得用户能够向一个或多个所选择的网络应用程序/PWA提供等级3253。
在另一实施例中,用户可以从一种或多种类型的自动创建的列表或目录3210/3215(包括建议的或更新的网络应用程序/PWA的列表)中选择一个或多个网络应用程序或渐进式网络应用程序(PWA)(启用服务工作线程或复制工作线程),并且可以添加到一个或多个列表,包括***提供的或用户创建的网络应用程序/PWA的列表,以在稍后或在选择时或要求3204时安装添加的网络应用程序/PWA,其中,列表包括书签、点赞、活动类型、任务类型、家庭、办公室、工作、商业、当前、使用的品牌、喜欢的品牌、健康、旅行、新闻、临时、联系人、社交网络、通信等。在选择一个或多个网络应用程序/PWA的名称或图标或链接、控件或列表项的情况下,安装网络应用程序/PWA并打开已安装的网络应用程序/PWA。在实施例中,用户可以选择已安装的网络应用程序或添加的网络应用程序,并卸载3260已安装的所选网络应用程序或从列表中删除3260添加的网络应用程序。在实施例中,用户可以通过一个或多个共享应用程序、通信界面或介质或渠道(包括电子邮件、SMS、电话或语音呼叫、电子邮件、即时消息、社交网络应用程序3262)共享网络应用程序的统一资源定位符(URL)。在另一实施例中,用户可以查看网络应用程序商店中列出的网络应用程序的列表或目录,并搜索网络应用程序、查看详细信息、安装、打开、添加到用户创建的列表、分类、排序、排名、卸载、共享网络应用程序。
在另一实施例中,图33示出了显示网络应用程序/PWA或网络应用程序/PWA的功能或操作的列表,或者自动安装和打开或调用当前识别的监听到和跟踪到的位置或位置关联的地方或活动类型关联的地点、用户设备周围识别的人(包括用户的连接的用户)、识别的当前数字活动、操作、任务、特定工作、识别的语音或声音、物体、面部、特定QR码、当前搜索查询、当前特定要求、访问过的网站、听过的音乐或声音、阅读过的内容、观看的视频、在特定地点关联的剧院观看的电影、参与的事件、购买的产品或订阅的服务(基于监听和跟踪的当前位置、链接或连接的***或数据库或应用程序、用户扫描、语音、用户操作、记录的活动、操作、事务、状态、位置、通信、参与)关联的网络应用程序/PWA或网络应用程序/PWA的功能或操作。图33(3320)显示启用了服务工作线程或复制工作线程的网络应用或PWA的用户创建或***提供的列表,其中,用户可以打开选择的已安装网络应用程序,或者在首次选择网络应用程序(未安装)的情况下,自动安装并打开网络应用程序。
图34(A)示出了用于描述每个用户相关应用程序(包括网络应用程序/PWA)的大规模安装的流程图。
在步骤3405中,从一个或多个源识别来自包括连接的或链接的数据库在内的识别的或监听的和跟踪的数据库或更新的数据库(数据库354)中的移动电话号码,其中数据库包括客户、客户端、客人、联系人和连接、患者、学生、观众、会员、员工、订阅者、旅行者、听众、读者、访客、与命名/识别的实体相关的参与者的数据库记录,实体包括品牌、公司、学校、学院、商店、事务所、银行、组织、产品和服务、个人、商业、按需服务提供者、网站/应用程序用户或订阅者或访客。在步骤3410,识别包括与识别的实体相关的网络应用程序/PWA在内的应用程序。在步骤3415,基于识别的移动电话号码识别用户。在步骤3420,针对每个识别的用户,准备或生成包括网络应用程序/PWA在内的识别的应用程序列表。在步骤3425,显示包括网络应用程序/PWA在内的其中详细信息包括名称和图标的应用程序列表3210(248)。在步骤3430,接收用于打开列表中的包括网络应用程序/渐进式网络应用程序(PWA)在内的所选应用程序的请求。在步骤3435,自动下载、安装和打开所选应用程序/网络应用程序/PWA(安装启用了服务工作线程的网络应用程序和安装启用了复制工作线程的网络应用程序,在整个说明书中详细进行了讨论)。
图34(B)示出了用于描述每个用户相关应用程序(包括网络应用程序/PWA)的大规模安装的流程图。
在步骤3455中,通过用户相关数据或更新数据,监听、跟踪、更新并识别包括品牌、公司、学校、学院、商店、事务所、组织、产品、服务、人员在内的命名实体,用户相关数据或更新数据包括用户配置文件、用户相关关键字、记录的用户活动、操作、事务、状态、共享、通信、参与和位置、来自链接的或连接的或识别的***、数据库、服务器、网络、设备的用户相关数据。在步骤3460,识别包括与识别的实体相关的网络应用程序在内的应用程序。在步骤3465,针对用户准备或生成包括网络应用程序/PWA在内的识别的应用程序列表。在步骤3470,显示包括网络应用程序在内的其中详细信息包括名称和图标的应用程序列表。在步骤3475,接收用于打开列表中的包括网络应用程序/PWA在内的所选应用程序的请求。在步骤3480,自动下载、安装和打开所选应用程序/网络应用程序/PWA(安装启用了服务工作线程的网络应用程序和安装启用了复制工作线程的网络应用程序,在整个说明书中详细进行了讨论)。
在一实施例中,以黑盒方式(不公开数据)将用户的移动电话号码与识别的数据库中的移动电话号进行匹配。
在一实施例中,基于识别较少使用的应用程序,自动卸载应用程序/网络应用程序。在另一实施例中,由于识别存储要求,卸载包括网络应用程序/PWA在内的最低级别的应用程序。在一实施例中,使用户能够为包括网络应用程序/PWA在内的应用程序分配存储空间,并且基于所分配的存储空间,手动或自动匹配、识别、下载、安装和管理,包括更新和卸载网络应用程序/PWA。
在一实施例中,基于接收到用于打开包括网络应用程序/PWA在内的应用程序、包括网络应用程序/PWA在内的最常用的应用程序的指令,自动更新包括网络应用程序/PWA在内的应用程序。
在一些实施例中,自动地提供基于规则的预设许可,该规则包括具有特定类型证书的包括网络应用程序/PWA在内的应用程序、排序、包括网络应用程序/PWA在内的应用程序的所选名称。
图35(A)示出了用于描述安装本机应用程序关联的或网络应用程序或渐进式网络应用程序(PWA),或者启用了服务工作线程或复制工作线程的网络应用程序或渐进式网络应用程序(PWA)的流程图。在步骤3505,识别安装的或打开的本机应用程序关联的网络应用程序/PWA。在步骤3510,自动/并发地下载和安装本机应用程序关联的网络应用程序/PWA。
图35(B)示出了用于描述安装本机应用程序关联的或网络应用程序或渐进式网络应用程序(PWA),或者启用了服务工作线程或复制工作线程的网络应用程序或渐进式网络应用程序(PWA)的流程图。在步骤3605,接收本机应用程序安装指令。在步骤3610,安装本机应用程序/识别本机应用程序关联的网络应用程序/PWA。在步骤3615,自动/并发地下载和安装本机应用程序关联的网络应用程序/PWA。
图35(C)示出了用于描述安装包括启用了服务工作线程或复制工作线程的网络应用程序或渐进式网络应用程序(PWA)在内的上下文网站关联的应用程序的流程图,。在步骤3530,基于识别到用户在网站或域的访问、在网站上花费的特定时间、执行的事务、执行的调用操作(包括购买、阅读文章、注册、登录或成为会员),识别该网站/域名,其中,识别网站或域关联的用户活动、操作、调用操作、通过链接的或连接的或集成的***、组件、插件和服务的事务。在步骤3535,识别网站关联的网络应用程序/PWA。在步骤3540,自动下载并安装网站关联的网络应用程序/PWA。
图35(D)示出了用于描述基于一种或多种类型的触发器或规则的触发,安装包括启用了服务工作线程或复制工作线程的网络应用程序或渐进式网络应用程序(PWA)在内的应用程序的流程图。在步骤3555,监听、跟踪和识别网络或互联网数据状况或强度、速度或状态。在步骤3560,在识别出网络状况或强度或速度的特定阈值的情况下,自动打开所选本机应用程序关联的网络应用程序/PWA,或者下载、安装并打开本机应用程序关联的网络应用程序/PWA。
图35(E)示出了用于识别包括启用了服务工作线程或复制工作线程的网络应用程序或渐进式网络应用程序(PWA)在内的上下文应用程序的流程图。在步骤3565,识别电话号码、传入通信,包括电话、SMS、消息、电子邮件关联的实体(包括商业)。在步骤3570,识别每个实体,包括商业关联的网络应用程序/PWA。在步骤3575,自动下载并安装识别的网络应用程序/PWA。
图35(F)示出了用于安装卸载的本机应用程序关联的启用了服务工作线程或复制工作线程的网络应用程序或渐进式网络应用程序(PWA)的流程图。在步骤3580,接收本机应用程序卸载指令。在步骤3585,识别卸载的本机应用程序关联的网络应用程序/PWA。在步骤3590,自动下载并安装本机应用程序关联的网络应用程序/PWA。
图36(A)示出了用于描述向卸载本机应用程序的用户发送生成的用于安装启用了服务工作线程或复制工作线程的网络应用程序或渐进式网络应用程序(PWA)的消息的流程图。在步骤3605,接收本机应用程序卸载指令。在步骤3610,识别每个卸载本机应用程序的用户的移动电话号码。在步骤3615,生成包括用于安装的网络应用程序/PWA的统一资源定位符(URL)或链接的消息。在步骤3620,发送包括用于安装的网络应用程序/PWA的统一资源定位符(URL)或链接的消息。
图36(B)示出了用于描述以下操作的流程图:识别内容、数据、媒体、网页、文档、文件、视频、音频、语音、统一资源定位符(URL)、图像、消息、帖子和文件夹中的唯一命名实体,以及识别关联的启用了服务工作线程或复制工作线程的网络应用程序或渐进式网络应用程序(PWA)以及嵌入或链接统一资源定位符(URL)或识别出的带有识别的关键字(包括命名实体)的启用了服务工作线程或复制工作线程的网络应用程序或渐进式网络应用程序(PWA)的链接,并使查看用户能够选择关键字或关键字关联的嵌入的URL或链接,以下载、安装和打开启用了服务工作线程或复制工作线程的网络应用程序或渐进式网络应用程序(PWA)。在步骤3625,识别实体的名称,该实体包括内容内的商业、场所、品牌、产品、服务、学校、学院、商店、服务提供者、个人、事务所、组织、卖家,该内容包括新闻、文章、博客、网页、文档、视频语音、视频文本、图像、统一资源定位符(URL)、音频、文件、文档、社交网络帖子、消息。在步骤3630,识别包括与识别的实体相关的网络应用程序在内的应用程序。在步骤3635,生成网络应用程序/PWA的统一资源定位符(URL)或链接。在步骤3640,将网络应用程序/PWA的URL或链接与内容内识别的实体名称或关键字或句子相关联、链接、嵌入或集成。在步骤3645,在选择统一资源定位符(URL)/链接的情况下,自动下载并安装关联的网络应用程序/PWA。
图36(C)示出了用于描述显示特定于搜索查询的搜索结果以及显示特定于搜索查询的启用了服务工作线程或复制工作线程的网络应用程序或渐进式网络应用程序(PWA)结果的流程图。在步骤3655,从包括互联网/数据库/网页/文档/本地存储的一个或多个源接收用于搜索内容/网页/数据/一种或多种类型的媒体的搜索查询或搜索关键字。在步骤3660,显示特定于搜索查询的第一搜索结果,并在第二搜索结果中显示特定于搜索查询的网络应用程序/PWA。在实施例中,使得搜索或查看用户能够从搜索结果中选择一个或多个网络应用程序/PWA。
图36(D)示出了用于描述安装用户操作或调用操作关联的启用了服务工作线程或复制工作线程的网络应用程序或渐进式网络应用程序(PWA)的流程图。在步骤3665,从一个或多个源监听、跟踪和接收用户的操作指示,一个或多个源包括网站、网页、应用程序、搜索结果、消息、推送通知、帖子、一种或多种类型的内容或媒体,其中,操作包括拍照、列出音乐、视频观看、内容阅读、网页、博客、文档和消息,接收和发送通信,包括电话或语音呼叫、消息、SMS和电子邮件,执行事务,包括购买、订购、预订、订阅、保留表格、获得预约、注册、成为会员、登录、关注、对帖子或内容做出反应(赞、踩、评论)、访问场所、查看地图上场所的详细信息、消费按需服务、扫描对象或QR码,根据搜索查询进行搜索(需求、任务、事务意向–购买、订购、预订、订阅产品/服务/品牌/公司/事务所/学校/学院,操作或活动意向–查看、阅读、聆听、吃饭、玩耍、学习、参与、购物、参观场所)。在步骤3670,识别操作或调用操作关联的网络应用程序/PWA。在步骤3675,手动或自动下载和安装识别的网络应用程序。
图36(E)示出了用于描述在一种或多种类型的智能设备(包括智能手机、个人电脑、平板电脑、笔记本电脑、数字手表)中大规模安装(预安装)启用了服务工作线程或复制工作线程的网络应用程序或渐进式网络应用程序(PWA)的情况的流程图。在步骤3680,基于一个或多个源的多种类型的用户关联数据、规则以及多个因素和上下文(如图34所述),识别用于在设备中预安装的网络应用程序。在步骤3680,在智能设备中自动拷贝和安装识别的网络应用程序/PWA,包括启用了服务工作线程或复制工作线程的网络应用程序或渐进式网络应用程序(PWA)。
图36(F)示出了用于描述在接收到应用程序安装指令的情况下,基于多个规则、因素和触发器,识别本机应用程序或启用了服务工作线程或复制工作线程的网络应用程序或渐进式网络应用程序(PWA)或两者的安装的流程图。在步骤3690,接收特定应用程序安装指令。在步骤3695,基于用户设备类型、存储、网络数据强度或计划或速度,安装本机应用程序或安装启用了服务工作线程或复制工作线程的网络应用程序或渐进式网络应用程序(PWA)或两者。
图37示出了应用程序浏览器或表格界面或应用程序或用户界面或应用程序或父应用程序,其中,用户可以从包括搜索结果的一种或多种类型的列表中搜索、匹配、选择建议的、添加书签的、点赞的、经常使用的、排名最高的或最受欢迎的或挑选的或有用的、赞助的、由联系人或连接使用的、访问地点关联的、使用过的或喜欢使用的品牌、产品和服务,交互的或点赞的实体关联的、访问地点关联的任务、特定于活动的应用程序,从类别目录中选择渐进式网络应用程序(PWA)或可安装的网络应用程序或启用了服务工作线程或复制工作线程的网络应用程序或渐进式网络应用程序或者网络应用程序的操作或功能或应用程序页面的特定页面或网络应用程序的界面,以及自动下载、安装和打开启用了服务工作线程或复制工作线程的网络应用程序或渐进式网络应用程序(PWA)。
在实施例中,用户可以打开一个或多个启用了服务工作线程或复制工作线程的网络应用程序或渐进式网络应用程序(PWA)3707/3708,选择特定的(例如,第一)启用了服务工作线程或复制工作线程的网络应用程序或渐进式网络应用程序(PWA),并导航单个选项卡中所选的第一网络应用程序3707的不同功能3701/3702/3703。用户可以选择其他选项卡中与启用了服务工作线程或复制工作线程的第二网络应用程序或渐进式网络应用程序(PWA)相关的启用了服务工作线程或复制工作线程的第二网络应用程序或渐进式网络应用程序(PWA)3708,并访问与启用了服务工作线程或复制工作线程的第二网络应用程序或渐进式网络应用程序(PWA)相关的功能或应用程序页面或网页。在实施例中,在在启用了服务工作线程或复制工作线程的网络应用程序或渐进式网络应用程序(PWA)浏览器或者应用程序或用户界面中输入网络应用程序统一资源定位符(URL)3705的情况下,在选项卡中自动下载、安装和打开关联选项卡3707/3708中与所述的输入的统一资源定位符(URL)3705相关的网络应用程序3707/3708。
在另一实施例中,使开发者能够准备与启用了服务工作线程或复制工作线程的网络应用程序或渐进式网络应用程序(PWA)相关的单个包或不同包或捆绑的一个或多个功能,以使用户能够安装网络应用程序的部分或特定或一个或多个功能或操作或调用操作或页面或界面或应用程序页面。
在另一实施例中,基于监听和跟踪的用户设备的当前位置、识别的当前位置关联的识别地点、识别的当前位置关联的识别地点关联的识别的活动或操作类型、识别地点关联的识别的记录的过去活动或操作、事务类型(购买、订阅、预订、预约、预订)和关联的排名、识别的任务、搜索查询、语音搜索查询、基于一个或多个源的用户相关数据的需求,包括来自一个或多个链接的或连接的***、服务器、设备、应用程序、网站和数据库的用户提供的或更新的以及用户相关数据,自动安装启用了服务工作线程或复制工作线程的网络应用程序或渐进式网络应用程序(PWA)的一个或多个功能或操作或调用操作或页面或界面或应用程序页面。在另一实施例中,在应用程序浏览器3740的选项卡中自动安装并打开一个或多个安装的网络应用程序或网络应用程序3741/3742/3743的功能。
在实施例中,在在启用了服务工作线程或复制工作线程的网络应用程序或渐进式网络应用程序(PWA)浏览器或应用程序或用户界面3740中输入网络应用程序统一资源定位符(URL)3750的情况下,在选项卡中自动下载、安装和打开关联选项卡3741/3742/3743中网络应用程序3741/3742/3743的与所述的输入的统一资源定位符(URL)3750相关的特定功能或操作或调用操作或页面或界面或应用程序页面。
在另一实施例中,使启用了服务工作线程或复制工作线程的网络应用程序或渐进式网络应用程序(PWA)的开发者能够通过URL链接或通过API集成一个或多个网络应用程序以及一个或多个网络应用程序的一个或多个功能或操作或界面或页面,用于与特定项目、计划、商业相关的工作流、任务、活动、项目、协作或系列任务。例如,出租车服务提供者,当通勤者到达目的地时,自动提供目的地地点或位置相关的一个或多个应用程序的一个或多个功能,包括预订酒店、订购食物、付款、提供独立反馈或评论、在出租车上购买产品以及在/从目的地相关的特定商店接客人、预订票、保留餐桌。在另一实施例中,用户可以手动查看、查看应用程序列表详细信息或应用程序配置文件,选择、打开(3795)、关闭、最小化、最大化、排序、分类、过滤、排名、导入、共享URL或链接、安装的类别3762/376/3766/3768(3790),或从搜索结果、目录、列表中搜索和选择,查看详细信息,从一个或多个源通过一个或多个介质选择、下载、安装、卸载或者删除、更新、升级一个或多个一个或多个网络应用程序以及一个或多个网络应用程序(启用了服务工作线程/复制工作线程)的一个或多个功能或操作或界面或页面。在实施例中,安装网络应用程序/PWA后,自动打开网络应用程序/PWA。
本发明实施例的上述描述是为了说明目的而提出的;其并不旨在详尽无遗或将本发明限制在所公开的精确形式上。相关领域技术人员可以理解,鉴于上述公开,许多修改和变化是可能的。本说明书的某些部分在算法和符号表示信息操作方面描述了本发明的实施例。这些算法描述和表示通常被数据处理领域的技术人员使用,以有效地将其工作的实质传达给本领域其他技术人员。这些操作虽然在功能上、计算上或逻辑上进行了描述,但被理解为由计算机程序或等效电路、微代码等实现。此外,有时也证明,在不损失通用性的情况下,将这些操作安排称为模块是很方便的。所描述的操作及其关联的模块可以体现在软件、固件、硬件或其任何组合中。本文中描述的任何步骤、操作或进程都可以单独或与其它设备组合使用一个或多个硬件或软件模块来执行或实现。在一个实施例中,软件模块与计算机程序产品一起实现,该计算机程序产品包括包含计算机程序代码的计算机可读介质,该计算机程序代码可由计算机处理器执行以执行所描述的任何或所有步骤、操作或进程。本发明的实施例还可以涉及用于执行本文中的操作的装置。该装置可以是专门为所需目的而构造的,和/或它可以包括由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算设备。这种计算机程序可以存储在有形的计算机可读存储介质或任何类型的介质中,并适合于存储电子指令,并耦合到计算机***总线。此外,说明书中提及的任何计算***都可以包括单个处理器,或者可以是采用多个处理器设计的架构,以提高计算能力。

Claims (37)

1.一种信息处理方法,包括:
a)在运行环境中执行应用程序,所述应用程序的所述执行启动复制逻辑进程和对应于所述应用程序的第一视图界面的第一呈现进程;
b)所述复制逻辑进程接收用于访问第一视图界面关联内容、文件和资源的统一资源定位符URL或链接的请求,或者接收用于访问数据的请求;
c)所述复制逻辑进程基于所述第一视图界面的第一复制逻辑配置设置,从本地存储或服务器或一个或多个源检索包括第一视图界面关联数据、内容和资源的URL或链接在内的请求的URL或链接或者匹配的URL或链接关联数据、内容和资源,或者请求的数据;
d)所述复制逻辑进程基于所述第一视图界面的第一复制逻辑配置设置,存储或更新从服务器或一个或多个源检索到的包括第一视图界面关联数据、内容和资源的URL或链接在内的请求的URL或链接或者匹配的URL或链接关联数据、内容和资源,或者请求的数据;
e)在所述复制逻辑进程中获取所述第一视图界面的第一界面数据;
f)通过所述运行环境将所述第一视图界面的初始第一界面数据从所述复制逻辑进程传输到所述第一呈现进程,所述复制逻辑进程基于所述第一视图界面的第一复制逻辑配置设置生成所述初始第一界面数据,其中,还包括:通过所述运行环境将一部分所述第一视图界面的更新数据从所述复制逻辑进程传输到所述第一呈现进程;和
g)在所述第一呈现进程中,根据所述第一视图界面的初始第一界面数据渲染所述第一视图界面,其中,还包括:在所述第一呈现进程中,根据所述一部分所述第一视图界面的更新数据重新渲染所述一部分所述第一视图界面。
2.根据权利要求1所述的方法,还包括:
a)在所述复制逻辑进程中获取触发从所述第一视图界面切换到第二视图界面的事件;
b)所述复制逻辑进程接收用于访问包括第二视图界面关联数据、内容和资源的URL或链接在内的URL或链接的请求,或者接收用于访问数据的请求;
c)所述复制逻辑进程基于所述第二视图界面的第二复制逻辑配置设置,从本地存储或服务器或一个或多个源检索包括第二视图界面关联数据、内容和资源的URL或链接在内的请求的URL或链接或者匹配的URL或链接关联数据、内容和资源,或者请求的数据;
d)所述复制逻辑进程基于所述第二视图界面的第二复制逻辑配置设置,存储或更新从服务器或一个或多个源检索到的包括第二视图界面关联数据、内容和资源的URL或链接在内的请求的URL或链接或者匹配的URL或链接关联数据、内容和资源,或者请求的数据;
e)在所述复制逻辑进程中获取所述第二视图界面的第二界面数据;
f)通过所述运行环境,将所述第二视图界面的第二界面数据从所述复制逻辑进程传输到对应于所述第二视图界面的第二呈现进程,所述应用程序在所述运行环境中的执行,在所述第一呈现进程开始后启动所述第二呈现进程;和
g)在所述第二呈现进程中,根据所述第二视图界面的第二界面数据渲染所述第二视图界面。
3.根据权利要求1所述的方法,还包括:在所述运行环境中,基于所述应用程序的程序标识符获取所述应用程序的生成的全局复制逻辑配置设置;在所述运行环境中,根据所述应用程序的生成的全局复制逻辑配置设置,启动所述逻辑进程和第一视图进程;在所述逻辑进程中,当所述应用程序的逻辑进程启动时,注册第一视图页面的第一生成的复制逻辑配置设置;在所述逻辑进程中,根据生成的所述第一复制逻辑配置设置,在所述第一视图进程中完成初始化后,获取所述第一视图页面的初始第一页面数据;并通过所述运行环境,将所述第一视图页面的初始第一页面数据从所述逻辑进程发送到与所述第一视图页面对应的第一视图进程。
4.根据权利要求3所述的方法,还包括:在所述运行环境中,根据所述应用程序的生成的全局复制逻辑配置设置,启动所述逻辑进程;并且,在由所述应用程序的所述执行提供的运行环境中,根据所述第一视图页面的全局特征启动所述第一视图进程,所述全局特征由所述应用程序的生成的全局页面复制逻辑配置设置所定义,所述生成的全局页面复制逻辑配置设置定义所述应用程序的视图页面的全局特征。
5.所述方法包括:
a)识别域或网站统一资源定位符URL特定的静态内容和动态数据;
b)应用配置的一种或多种类型的文件和数据复制和同步模型以及与静态内容和动态数据相关的关联规则;
c)以键(请求)和值(响应)形式接收并存储静态内容和动态数据;
d)客户端组件接收用于访问统一资源定位符URL或链接特定网页的请求;
e)所述客户端组件识别请求的URL或链接特定的静态内容和动态数据;
f)基于请求的URL或识别出的链接特定的静态内容和动态数据生成网页;和
g)渲染网页。
6.代码生成方法包括生成服务工作线程的代码,包括:
a)识别任何类型的数字内容或数据,包括与网络应用程序相关的供获取和缓存的所选或自动识别的静态内容和动态数据;
b)访问包括参数关联的值和数据复制模型相关的配置设置在内的定义的与可视化程序相关的获取和缓存策略、规则、模式;
c)基于包括参数关联的值和数据复制模型相关的配置设置在内的定义的与可视化程序相关的获取和缓存策略、规则、模式,生成代码;和
d)基于生成或编辑的代码生成文件,包括服务工作线程JavaScript文件。
7.根据权利要求6所述的方法,其中,启用编辑和合并不同生成代码,所述不同生成代码与包括参数关联的值和数据复制模型相关的配置设置在内的可视化程序相关的不同定义的获取和缓存策略、规则、模式相关。
8.根据权利要求6所述的方法,其中,注册服务工作线程;在安装服务工作线程的情况下,执行所述文件关联的代码;基于执行的代码,从客户端、服务器或其它一个或多个源访问或检索缓存的静态内容和动态数据或者获取和缓存静态内容和动态数据。
9.一种信息处理方法,包括:
a)从可视化图形用户界面接收内容和数据规则、设置和所选参数关联值的缓存和获取的配置;
b)基于接收到的内容和数据规则、设置和所选参数关联值的缓存和获取的配置,生成程序逻辑进程的代码;
c)在运行环境中执行应用程序,所述应用程序的所述执行启动程序逻辑进程和对应于所述应用程序的第一视图界面的第一呈现进程;
d)所述程序逻辑进程接收用于访问包括第一视图界面关联数据、内容和资源的URL或链接在内的URL或链接的请求,或者接收用于访问数据的请求;
e)所述程序逻辑进程基于所述第一视图界面的第一程序逻辑代码,从本地存储或服务器或一个或多个源检索包括第一视图界面关联数据、内容和资源的URL或链接在内的请求的URL或链接或者匹配的URL或链接关联数据、内容和资源,或者请求的数据;
f)所述程序逻辑进程基于所述第一视图界面的第一程序逻辑代码,存储或更新从服务器或一个或多个源检索到的包括第一视图界面关联数据、内容和资源的URL或链接在内的请求的URL或链接或者匹配的URL或链接关联数据、内容和资源,或者请求的数据;
g)在所述程序逻辑进程中获取所述第一视图界面的第一界面数据;
h)通过所述运行环境将所述第一视图界面的初始第一界面数据从所述程序逻辑进程传输到所述第一呈现进程,所述程序逻辑进程基于所述第一视图界面的第一程序逻辑代码生成所述初始第一界面数据,其中,还包括:通过所述运行环境将一部分所述第一视图界面的更新数据从所述程序逻辑进程传输到所述第一呈现进程;和
i)在所述第一呈现进程中,根据所述第一视图界面的初始第一界面数据渲染所述第一视图界面,其中,还包括:在所述第一呈现进程中,根据所述一部分所述第一视图界面的更新数据重新渲染所述一部分所述第一视图界面。
10.根据权利要求9所述的方法,还包括:
a)从可视化图形用户界面接收内容和数据规则、设置和所选参数关联值的缓存和获取的配置;
b)基于接收到的内容和数据规则、设置和所选参数关联值的缓存和获取的配置,生成程序逻辑进程的代码;
c)在所述程序逻辑进程中获取触发从所述第一视图界面切换到第二视图界面的事件;
d)所述程序逻辑进程接收用于访问包括第二视图界面关联数据、内容和资源的URL或链接在内的URL或链接的请求,或者接收用于访问数据的请求;
e)所述程序逻辑进程基于所述第二视图界面的第二程序逻辑代码,从本地存储或服务器或一个或多个源检索包括第二视图界面关联数据、内容和资源的URL或链接在内的请求的URL或链接或者匹配的URL或链接关联数据、内容和资源,或者请求的数据;
f)所述程序逻辑进程基于所述第二视图界面的第二程序逻辑代码,存储或更新从服务器或一个或多个源检索到的包括第二视图界面关联数据、内容和资源的URL或链接在内的请求的URL或链接或者匹配的URL或链接关联数据、内容和资源,或者请求的数据;
g)在所述程序逻辑进程中获取所述第二视图界面的第二界面数据;
h)通过所述运行环境,将所述第二视图界面的第二界面数据从所述程序逻辑进程传输到对应于所述第二视图界面的第二呈现进程,所述应用程序在所述运行环境中的执行,在所述第一呈现进程启动后启动所述第二呈现进程;和
i)在所述第二呈现进程中,根据所述第二视图界面的第二界面数据渲染所述第二视图界面。
11.根据权利要求9所述的方法,还包括:在所述运行环境中,基于所述应用程序的程序标识符获取所述应用程序的生成的全局配置代码;在所述运行环境中,根据所述生成的所述应用程序的全局配置代码,启动所述逻辑进程和第一视图进程;在所述逻辑进程中,当所述应用程序的所述逻辑进程启动时,注册第一视图页面的第一生成逻辑代码;在所述逻辑进程中,根据所述第一生成逻辑代码,在所述第一视图进程中的初始化完成后,获取所述第一视图页面的初始第一页面数据;并通过所述运行环境,将所述第一视图页面的初始第一页面数据从所述逻辑进程发送到对应于所述第一视图页面的所述第一视图进程。
12.根据权利要求11所述的方法,还包括:在所述运行环境中,根据所述应用程序的所述生成的全局配置代码中生成的全局逻辑代码,启动所述逻辑进程;并且,在由所述应用程序的执行提供的所述运行环境中,根据所述第一视图页面的全局特征启动所述第一视图进程,所述第一视图页面的全局特征由所述应用程序的所述生成的全局配置代码中生成的全局页面配置代码定义,所述生成的全局页面配置代码定义所述应用程序视图页面的全局特征。
13.复制工作线程的复制配置文件或组件的生成方法,包括:
a)识别任何类型的数字内容或数据,包括与网络应用程序相关的供获取和缓存的所选或自动识别的静态内容和动态数据;
b)访问包括参数关联的值的获取和缓存策略、规则、模式、可视化程序配置设置,以及获取和缓存策略和规则或可视化程序关联的定义的文件和数据复制模型;
c)基于包括参数关联的值的获取和缓存策略、规则、模式、可视化程序配置设置,以及获取和缓存策略和规则或可视化程序关联的定义的文件和数据复制模型,生成配置文件。
14.所述方法包括:
a)监听、跟踪和访问用户提供的或来自连接或链接源的多种类型的用户相关数据;
b)基于网络应用程序相关数据从用户相关数据中识别关键字,并识别来自一个或多个源的用户操作,所述源包括连接或链接源;
c)识别识别到的关键字和用户操作相关的网络应用程序;
d)显示识别到的网络应用程序;
e)启用从显示出的网络应用程序中选择和添加网络应用程序;和
f)在识别出网络应用程序的调用或从添加的网络应用程序中选择网络应用程序的情况下,自动安装和打开来自一个或多个源的网络应用程序。
15.所述方法包括:在识别出接收选择、关键字、网络应用程序搜索查询或网络应用程序功能或触发触发器或接收事件或执行规则或识别用户操作的情况下,显示相关的网络应用程序以进行安装,或者从一个或多个源自动安装和打开启用了服务工作线程或启用了复制工作线程的网络应用程序,所述用户操作包括调用操作、事务、通信、共享、参与、位置或地点、语音、扫描代码或对象或识别状态。
16.所述方法包括:在识别出触发用于指示卸载网络应用程序的触发器或事件的情况下,自动卸载或删除网络应用程序,其中,触发器包括根据设定的存储阈值检测存储需求或存储时间短,在预设时长内不打开网络应用程序,识别预设的使用次数,识别不适当的、报告的或垃圾邮件的网络应用程序。
17.根据权利要求16所述的方法,其中,在选择网络应用程序的情况下,自动安装网络应用程序,在关闭网络应用程序的情况下,自动卸载网络应用程序。
18.一种信息处理***,包括:
a)在运行环境中执行应用程序,所述应用程序的所述执行启动复制逻辑进程和对应于所述应用程序的第一视图界面的第一呈现进程;
b)所述复制逻辑进程接收用于访问第一视图界面关联内容、文件和资源的统一资源定位符URL或链接的请求,或者接收用于访问数据的请求;
c)所述复制逻辑进程基于所述第一视图界面的第一复制逻辑配置设置,从本地存储或服务器或一个或多个源检索包括第一视图界面关联数据、内容和资源的URL或链接在内的请求的URL或链接或者匹配的URL或链接关联数据、内容和资源,或者请求的数据;
d)所述复制逻辑进程基于所述第一视图界面的第一复制逻辑配置设置,存储或更新从服务器或一个或多个源检索到的包括第一视图界面关联数据、内容和资源的URL或链接在内的请求的URL或链接或者匹配的URL或链接关联数据、内容和资源,或者请求的数据;
e)在所述复制逻辑进程中获取所述第一视图界面的第一界面数据;
f)通过所述运行环境将所述第一视图界面的初始第一界面数据从所述复制逻辑进程传输到所述第一呈现进程,所述复制逻辑进程基于所述第一视图界面的第一复制逻辑配置设置生成所述初始第一界面数据,其中,还包括:通过所述运行环境将一部分所述第一视图界面的更新数据从所述复制逻辑进程传输到所述第一呈现进程;和
g)在所述第一呈现进程中,根据所述第一视图界面的初始第一界面数据渲染所述第一视图界面,其中,还包括:在所述第一呈现进程中,根据所述一部分所述第一视图界面的更新数据重新渲染所述一部分所述第一视图界面。
19.根据权利要求18所述的***,还包括:
a)在所述复制逻辑进程中获取触发从所述第一视图界面切换到第二视图界面的事件;
b)所述复制逻辑进程接收用于访问包括第二视图界面关联数据、内容和资源的URL或链接在内的URL或链接的请求,或者接收用于访问数据的请求;
c)所述复制逻辑进程基于所述第二视图界面的第二复制逻辑配置设置,从本地存储或服务器或一个或多个源检索包括第二视图界面关联数据、内容和资源的URL或链接在内的请求的URL或链接或者匹配的URL或链接关联数据、内容和资源,或者请求的数据;
d)所述复制逻辑进程基于所述第二视图界面的第二复制逻辑配置设置,存储或更新从服务器或一个或多个源检索到的包括第二视图界面关联数据、内容和资源的URL或链接在内的请求的URL或链接或者匹配的URL或链接关联数据、内容和资源,或者请求的数据;
e)在所述复制逻辑进程中获取所述第二视图界面的第二界面数据;
f)通过所述运行环境,将所述第二视图界面的第二界面数据从所述复制逻辑进程传输到对应于所述第二视图界面的第二呈现进程,所述应用程序在所述运行环境中的执行,在所述第一呈现进程开始后启动所述第二呈现进程;和
g)在所述第二呈现进程中,根据所述第二视图界面的第二界面数据渲染所述第二视图界面。
20.根据权利要求19所述的***,还包括:在所述运行环境中,基于所述应用程序的程序标识符获取所述应用程序的生成的全局复制逻辑配置设置;在所述运行环境中,根据所述应用程序的生成的全局复制逻辑配置设置,启动所述逻辑进程和第一视图进程;在所述逻辑进程中,当所述应用程序的逻辑进程启动时,注册第一视图页面的第一生成的复制逻辑配置设置;在所述逻辑进程中,根据生成的所述第一复制逻辑配置设置,在所述第一视图进程中完成初始化后,获取所述第一视图页面的初始第一页面数据;并通过所述运行环境,将所述第一视图页面的初始第一页面数据从所述逻辑进程发送到与所述第一视图页面对应的第一视图进程。
21.根据权利要求20所述的***,还包括:在所述运行环境中,根据所述应用程序的生成的全局复制逻辑配置设置,启动所述逻辑进程;并且,在由所述应用程序的所述执行提供的运行环境中,根据所述第一视图页面的全局特征启动所述第一视图进程,所述全局特征由所述应用程序的生成的全局页面复制逻辑配置设置所定义,所述生成的全局页面复制逻辑配置设置定义所述应用程序的视图页面的全局特征。
22.所述***包括:
a)识别域或网站统一资源定位符URL特定的静态内容和动态数据;
b)应用配置的一种或多种类型的文件和数据复制和同步模型以及与静态内容和动态数据相关的关联规则;
c)以键(请求)和值(响应)形式接收并存储静态内容和动态数据;
d)客户端组件接收用于访问统一资源定位符URL或链接特定网页的请求;
e)所述客户端组件识别请求的URL或链接特定的静态内容和动态数据;
f)基于请求的URL或识别出的链接特定的静态内容和动态数据生成网页;和
g)渲染网页。
23.代码生成***包括生成服务工作线程的代码,包括:
a)识别任何类型的数字内容或数据,包括与网络应用程序相关的供获取和缓存的所选或自动识别的静态内容和动态数据;
b)访问包括参数关联的值和数据复制模型相关的配置设置在内的定义的与可视化程序相关的获取和缓存策略、规则、模式;
c)基于包括参数关联的值和数据复制模型相关的配置设置在内的定义的与可视化程序相关的获取和缓存策略、规则、模式,生成代码;和
d)基于生成或编辑的代码生成文件,包括服务工作线程JavaScript文件。
24.根据权利要求23所述的***,其中,启用编辑和合并不同生成代码,所述不同生成代码与包括参数关联的值和数据复制模型相关的配置设置在内的可视化程序相关的不同定义的获取和缓存策略、规则、模式相关。
25.根据权利要求23所述的***,其中,注册服务工作线程;在安装服务工作线程的情况下,执行所述文件关联的代码;基于执行的代码,从客户端、服务器或其它一个或多个源访问或检索缓存的静态内容和动态数据或者获取和缓存静态内容和动态数据。
26.一种信息处理***,包括:
a)从可视化图形用户界面接收内容和数据规则、设置和所选参数关联值的缓存和获取的配置;
b)基于接收到的内容和数据规则、设置和所选参数关联值的缓存和获取的配置,生成程序逻辑进程的代码;
c)在运行环境中执行应用程序,所述应用程序的所述执行启动程序逻辑进程和对应于所述应用程序的第一视图界面的第一呈现进程;
d)所述程序逻辑进程接收用于访问包括第一视图界面关联数据、内容和资源的URL或链接在内的URL或链接的请求,或者接收用于访问数据的请求;
e)所述程序逻辑进程基于所述第一视图界面的第一程序逻辑代码,从本地存储或服务器或一个或多个源检索包括第一视图界面关联数据、内容和资源的URL或链接在内的请求的URL或链接或者匹配的URL或链接关联数据、内容和资源,或者请求的数据;
f)所述程序逻辑进程基于所述第一视图界面的第一程序逻辑代码,存储或更新从服务器或一个或多个源检索到的包括第一视图界面关联数据、内容和资源的URL或链接在内的请求的URL或链接或者匹配的URL或链接关联数据、内容和资源,或者请求的数据;
g)在所述程序逻辑进程中获取所述第一视图界面的第一界面数据;
h)通过所述运行环境将所述第一视图界面的初始第一界面数据从所述程序逻辑进程传输到所述第一呈现进程,所述程序逻辑进程基于所述第一视图界面的第一程序逻辑代码生成所述初始第一界面数据,其中,还包括:通过所述运行环境将一部分所述第一视图界面的更新数据从所述程序逻辑进程传输到所述第一呈现进程;和
i)在所述第一呈现进程中,根据所述第一视图界面的初始第一界面数据渲染所述第一视图界面,其中,还包括:在所述第一呈现进程中,根据所述一部分所述第一视图界面的更新数据重新渲染所述一部分所述第一视图界面。
27.根据权利要求26所述的***,还包括:
a)从可视化图形用户界面接收内容和数据规则、设置和所选参数关联值的缓存和获取的配置;
b)基于接收到的内容和数据规则、设置和所选参数关联值的缓存和获取的配置,生成程序逻辑进程的代码;
c)在所述程序逻辑进程中获取触发从所述第一视图界面切换到第二视图界面的事件;
d)所述程序逻辑进程接收用于访问包括第二视图界面关联数据、内容和资源的URL或链接在内的URL或链接的请求,或者接收用于访问数据的请求;
e)所述程序逻辑进程基于所述第二视图界面的第二程序逻辑代码,从本地存储或服务器或一个或多个源检索包括第二视图界面关联数据、内容和资源的URL或链接在内的请求的URL或链接或者匹配的URL或链接关联数据、内容和资源,或者请求的数据;
f)所述程序逻辑进程基于所述第二视图界面的第二程序逻辑代码,存储或更新从服务器或一个或多个源检索到的包括第二视图界面关联数据、内容和资源的URL或链接在内的请求的URL或链接或者匹配的URL或链接关联数据、内容和资源,或者请求的数据;
g)在所述程序逻辑进程中获取所述第二视图界面的第二界面数据;
h)通过所述运行环境,将所述第二视图界面的第二界面数据从所述程序逻辑进程传输到对应于所述第二视图界面的第二呈现进程,所述应用程序在所述运行环境中的执行,在所述第一呈现进程启动后启动所述第二呈现进程;和
i)在所述第二呈现进程中,根据所述第二视图界面的第二界面数据渲染所述第二视图界面。
28.根据权利要求26所述的***,还包括:在所述运行环境中,基于所述应用程序的程序标识符获取所述应用程序的生成的全局配置代码;在所述运行环境中,根据所述生成的所述应用程序的全局配置代码,启动所述逻辑进程和第一视图进程;在所述逻辑进程中,当所述应用程序的所述逻辑进程启动时,注册第一视图页面的第一生成逻辑代码;在所述逻辑进程中,根据所述第一生成逻辑代码,在所述第一视图进程中的初始化完成后,获取所述第一视图页面的初始第一页面数据;并通过所述运行环境,将所述第一视图页面的初始第一页面数据从所述逻辑进程发送到对应于所述第一视图页面的所述第一视图进程。
29.根据权利要求28所述的***,还包括:在所述运行环境中,根据所述应用程序的所述生成的全局逻辑代码,启动所述逻辑进程;并且,在由所述应用程序的执行提供的所述运行环境中,根据所述第一视图页面的全局特征启动所述第一视图进程,所述第一视图页面的全局特征由所述应用程序的所述生成的全局页面配置代码定义,所述生成的全局页面配置代码定义所述应用程序视图页面的全局特征。
30.复制工作线程的复制配置文件或组件的生成***,包括:
a)识别任何类型的数字内容或数据,包括与网络应用程序相关的供获取和缓存的所选或自动识别的静态内容和动态数据;
b)访问包括参数关联的值的获取和缓存策略、规则、模式、可视化程序配置设置,以及获取和缓存策略和规则或可视化程序关联的定义的文件和数据复制模型;
c)基于包括参数关联的值的获取和缓存策略、规则、模式、可视化程序配置设置,以及获取和缓存策略和规则或可视化程序关联的定义的文件和数据复制模型,生成配置文件。
31.所述***包括:
a)监听、跟踪和访问用户提供的或来自连接或链接源的多种类型的用户相关数据;
b)基于网络应用程序相关数据从用户相关数据中识别关键字,并识别来自一个或多个源的用户操作,所述源包括连接或链接源;
c)识别识别到的关键字和用户操作相关的网络应用程序;
d)显示识别到的网络应用程序;
e)启用从显示出的网络应用程序中选择和添加网络应用程序;和
f)在识别出网络应用程序的调用或从添加的网络应用程序中选择网络应用程序的情况下,自动安装和打开来自一个或多个源的网络应用程序。
32.所述***包括:在识别出接收选择、关键字、网络应用程序搜索查询或网络应用程序功能或触发触发器或接收事件或执行规则或识别用户操作的情况下,显示相关的网络应用程序以进行安装,或者从一个或多个源自动安装和打开启用了服务工作线程或启用了复制工作线程的网络应用程序,所述用户操作包括调用操作、事务、通信、共享、参与、位置或地点、语音、扫描代码或对象或识别状态。
33.所述***包括:在识别出触发用于指示卸载网络应用程序的触发器或事件的情况下,自动卸载或删除网络应用程序,其中,触发器包括根据设定的存储阈值检测存储需求或存储时间短,在预设时长内不打开网络应用程序,识别预设的使用次数,识别不适当的、报告的或垃圾邮件的网络应用程序。
34.根据权利要求33所述的***,其中,在选择网络应用程序的情况下,自动安装网络应用程序,在关闭网络应用程序的情况下,自动卸载网络应用程序。
35.一种图形用户界面GUI包括:
a)在第一选项卡中加载第一打开的网络应用程序,并在第二选项卡中加载第二打开的网络应用程序;
b)在选择第一选项卡的情况下,显示第一选项卡关联的第一应用程序;
c)在第一选项卡中加载第一网络应用程序的第一功能,并在第二选项卡中加载第一网络应用程序的第二功能;在选择第一选项卡的情况下,显示第一应用程序的第一选项卡关联功能,在选择第二选项卡的情况下,显示第一应用程序的第二选项卡关联功能;
d)在选择第二选项卡的情况下,显示第二选项卡关联的第二应用程序;在第一选项卡中加载第二网络应用程序的第二功能,并在第二选项卡中加载第二网络应用程序的第二功能;在选择第一选项卡的情况下,显示第二应用程序的第一选项卡关联功能,在选择第二选项卡的情况下,显示第二应用程序的第二选项卡关联功能;和
e)在选择名称、图标或列表项或一种或多种类型的控件或者输入或选择统一资源定位符URL或网络地址的情况下,在父应用程序的关联选项卡或应用程序浏览器中加载、打开或调用关联的网络应用程序。
36.一种图形用户界面GUI包括:
a)在第一选项卡中加载第一网络应用程序的第一打开或识别的功能,并在第二选项卡中加载第二网络应用程序的第二打开或识别的功能;
b)在选择第一选项卡的情况下,显示第一应用程序的第一选项卡关联的第一功能,在选择第二选项卡的情况下,显示第二应用程序的第二选项卡关联的第二功能。
37.一种图形用户界面(GUI)包括:
a)在选择第一应用程序或第一应用程序的第一功能的情况下,在父界面中加载和显示第一应用程序或第一应用程序的第一功能;
b)在选择第二应用程序或第二应用程序的第二功能的情况下,卸载当前显示的第一应用程序或第一应用程序的第一功能,并在父界面中加载所选的第二应用程序或第二应用程序的第二功能;和
c)在选择第一应用程序或第一应用程序的第一功能的情况下,卸载当前显示的第二应用程序或第二应用程序的第二功能,并在父界面中加载和显示第一应用程序或第一应用程序的第一功能。
CN202280075622.3A 2021-09-12 2022-09-11 渐进式网络应用程序(pwa)的服务工作线程的自动工作或自动生成代码 Pending CN118251656A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
IBPCT/IB2021/058281 2021-09-12
IB2021058281 2021-09-12
PCT/IB2022/058544 WO2023037325A2 (en) 2021-09-12 2022-09-11 Make automatically workable or generating code for service worker, replication and rules based web app and suggesting, installing, invoking & managing progressive web apps (pwas)

Publications (1)

Publication Number Publication Date
CN118251656A true CN118251656A (zh) 2024-06-25

Family

ID=85506339

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280075622.3A Pending CN118251656A (zh) 2021-09-12 2022-09-11 渐进式网络应用程序(pwa)的服务工作线程的自动工作或自动生成代码

Country Status (2)

Country Link
CN (1) CN118251656A (zh)
WO (1) WO2023037325A2 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117826659B (zh) * 2024-03-06 2024-04-30 三一重型装备有限公司 控制逻辑配置***、方法及电子设备

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7614003B2 (en) * 2006-10-23 2009-11-03 Adobe Systems Incorporated Rendering hypertext markup language content
US8881056B2 (en) * 2010-08-30 2014-11-04 Sap Se Dynamic view computation and display

Also Published As

Publication number Publication date
WO2023037325A2 (en) 2023-03-16
WO2023037325A3 (en) 2023-04-20

Similar Documents

Publication Publication Date Title
US11681654B2 (en) Context-based file selection
US11003630B2 (en) Remote access of metadata for collaborative documents
JP6797290B2 (ja) メッセージングサービス向けのコンテンツ管理機能
US9866508B2 (en) Aggregating and presenting recent activities for synchronized online content management systems
US9367646B2 (en) Document and user metadata storage
US8543972B2 (en) Gateway data distribution engine
US9298747B2 (en) Deployable, consistent, and extensible computing environment platform
US10067652B2 (en) Providing access to a cloud based content management system on a mobile device
JP7079397B2 (ja) グループベース通信システムの自動生成データを利用して処理アクションを開始するためのシステムおよび方法
Ghiani et al. Push and pull of web user interfaces in multi-device environments
JP2020074096A (ja) ユーザインタフェース拡張器
JP2006501558A (ja) ウェブ・アプリケーション用のウェブ・ページのセッションをユーザに表示する装置と方法
US20140279896A1 (en) Cloud-based document suggestion service
US11822433B2 (en) Qualification parameters for captain selection in a search head cluster
US20150365497A1 (en) Providing access to information across multiple computing devices
US10452757B2 (en) Persistent user personalization
CN118251656A (zh) 渐进式网络应用程序(pwa)的服务工作线程的自动工作或自动生成代码
WO2016201547A1 (en) A computer-implemented method of aggregating and presenting digital photos from numerous sources
Hardaha et al. Data Mashup for Improving the Performance of Global Network
Coventry Exploring Microsoft Sharepoint 2013: new features & functions

Legal Events

Date Code Title Description
PB01 Publication