ES3058727T3 - Editing a database during preview of a virtual web page - Google Patents

Editing a database during preview of a virtual web page

Info

Publication number
ES3058727T3
ES3058727T3 ES23180890T ES23180890T ES3058727T3 ES 3058727 T3 ES3058727 T3 ES 3058727T3 ES 23180890 T ES23180890 T ES 23180890T ES 23180890 T ES23180890 T ES 23180890T ES 3058727 T3 ES3058727 T3 ES 3058727T3
Authority
ES
Spain
Prior art keywords
website
data
code
user
web page
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.)
Active
Application number
ES23180890T
Other languages
English (en)
Inventor
Uval A Blumenfeld
Amit Kaufman
Shay Weiner
Yoav Abrahami
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.)
Wix com Ltd
Original Assignee
Wix com Ltd
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 Wix com Ltd filed Critical Wix com Ltd
Application granted granted Critical
Publication of ES3058727T3 publication Critical patent/ES3058727T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00—Handling natural language data
    • G06F40/10—Text processing
    • G06F40/12—Use of codes for handling textual entities
    • G06F40/14—Tree-structured documents
    • G06F40/143—Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25—Integrating or interfacing systems involving database management systems
    • G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90—Details of database functions independent of the retrieved data types
    • G06F16/95—Retrieval from the web
    • G06F16/951—Indexing; Web crawling techniques
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90—Details of database functions independent of the retrieved data types
    • G06F16/95—Retrieval from the web
    • G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90—Details of database functions independent of the retrieved data types
    • G06F16/95—Retrieval from the web
    • G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • G06F16/9558—Details of hyperlinks; Management of linked annotations
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90—Details of database functions independent of the retrieved data types
    • G06F16/95—Retrieval from the web
    • G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90—Details of database functions independent of the retrieved data types
    • G06F16/95—Retrieval from the web
    • G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • G06F16/972—Access to data in other repository systems, e.g. legacy data or dynamic Web page generation
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12—Protecting executable software
    • G06F21/121—Restricting unauthorised execution of programs
    • G06F21/128—Restricting unauthorised execution of programs involving web programs, i.e. using technology especially used in internet, generally interacting with a web browser, e.g. hypertext markup language [HTML], applets, java
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/0486—Drag-and-drop
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00—Handling natural language data
    • G06F40/10—Text processing
    • G06F40/103—Formatting, i.e. changing of presentation of documents
    • G06F40/106—Display of layout of documents; Previewing
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00—Handling natural language data
    • G06F40/10—Text processing
    • G06F40/166—Editing, e.g. inserting or deleting
    • G06F40/186—Templates
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00—Arrangements for software engineering
    • G06F8/30—Creation or generation of source code
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00—Arrangements for software engineering
    • G06F8/30—Creation or generation of source code
    • G06F8/33—Intelligent editors
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00—Arrangements for software engineering
    • G06F8/30—Creation or generation of source code
    • G06F8/34—Graphical or visual programming
    • G—PHYSICS
    • G06—COMPUTING OR CALCULATING; COUNTING
    • G06F—ELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00—Arrangements for program control, e.g. control units
    • G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
    • G06F9/445—Program loading or initiating
    • G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526—Plug-ins; Add-ons
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00—Network arrangements or protocols for supporting network services or applications
    • H04L67/01—Protocols
    • H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00—Network arrangements or protocols for supporting network services or applications
    • H04L67/50—Network services
    • H04L67/535—Tracking the activity of the user
    • H—ELECTRICITY
    • H04—ELECTRIC COMMUNICATION TECHNIQUE
    • H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00—Network arrangements or protocols for supporting network services or applications
    • H04L67/50—Network services
    • H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63—Routing a service request depending on the request content or context

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)
  • User Interface Of Digital Computer (AREA)
  • Processing Or Creating Images (AREA)

Abstract

Las realizaciones descritas se refieren a la actualización de una base de datos back-end que contiene conjuntos de datos que alimentan varias páginas web de un sitio web. Las operaciones incluyen la recepción, a través de una interfaz de usuario, de varios elementos de datos; el almacenamiento de grupos de al menos un elemento de datos en una base de datos; la generación de varias páginas web virtuales, donde cada página virtual es una vista previa de la página web real correspondiente antes de su publicación; la visualización de cada grupo de al menos un elemento de datos en una página web virtual independiente de la pluralidad de páginas web virtuales; la visualización de una herramienta de edición que permite al usuario editar una página web virtual de entre las páginas web virtuales; la conversión de las modificaciones en la página web virtual en actualizaciones para la base de datos; el almacenamiento de las actualizaciones en la base de datos; y la visualización de las actualizaciones en la página web real correspondiente. (Traducción automática con Google Translate, sin valor legal)

Description

[0001] DESCRIPCIÓN
[0002] Edición de una base de datos durante la previsualización de una página web virtual
[0003] Antecedentes
[0004] La presente divulgación se relaciona con sistemas de creación de sitios web para crear sitios web indexables y aplicaciones web que integran funcionalidad de extremo trasero personalizada que se ejecuta en un sistema totalmente gestionado por un tercero. Por ejemplo, las realizaciones incluyen el desarrollo de funcionalidad de extremo trasero personalizada que puede ejecutarse en un entorno de servidor sin estado (tal como contenedores, código sin servidor o máquinas virtuales) cuando se activa un evento programable asociado con un componente de extremo delantero o una actividad del sistema sin que el usuario del sistema tenga que involucrarse en la gestión de la interacción cliente-servidor.
[0005] Además, la presente divulgación se refiere al alojamiento y gestión de la carga de un sitio web proporcionando instancias de ejecución bajo demanda del sitio web o de páginas web individuales de forma instantánea. En algunas realizaciones, las instancias pueden generarse como máquinas virtuales, contenedores o elementos de código sin servidor. Más concretamente, esta divulgación se relaciona con sistemas y procedimientos para monitorizar la carga y la actividad de sitios web alojados con el fin de añadir y eliminar automáticamente instancias que sirvan sitios web alojados en el sistema sin retrasos significativos en la respuesta a una solicitud para servir un sitio web. Además, los sitios web alojados pueden estar compuestos por una combinación de código genérico y específico del sitio web. Aún más, la divulgación se relaciona con visualizar y probar sitios web con acceso en tiempo real a los datos generados en un entorno de producción para y por el usuario final del sitio web y los datos vinculados al sitio web. Más concretamente, esta divulgación se relaciona con proporcionar acceso a los datos que normalmente ve un usuario final de un sitio web para probar la funcionalidad y la experiencia de un sitio web por parte de un desarrollador o diseñador del sitio web.
[0006] Además, la presente divulgación se relaciona con la edición de una base de datos durante la previsualización de una página web virtual. Por ejemplo, los usuarios pueden almacenar grupos de elementos de datos (por ejemplo, texto, gráficos, vídeos, etc.) en una base de datos, y se pueden generar una o más páginas web virtuales para mostrar una vista previa de las páginas web. Durante la visualización de las páginas web virtuales, puede permitirse a los usuarios editar la página web virtual, y sus ediciones pueden traducirse en actualizaciones para la base de datos. Además, durante la visualización en directo de una página web real correspondiente a la página web virtual, las actualizaciones de la base de datos pueden reflejarse en la visualización en directo.
[0007] Los sistemas de construcción de sitios web, tal como se desvelan en la presente memoria descriptiva, se utilizan para permitir que personas con experiencia limitada en el desarrollo de software y/o recursos limitados desarrollen y alojen un sitio web personalizado. Los sistemas convencionales de desarrollo de sitios web, por su parte, ofrecen una interfaz de usuario de extremo delantero sin control de extremo trasero o con control limitado mediante llamadas a servicios externos o fragmentos de código incrustados que llaman al código del lado del servidor, lo que limita el sistema a páginas web sin opciones o con opciones mínimas para la manipulación de datos u otras funcionalidades personalizadas. Otros sistemas esperan participar plenamente en la configuración de las interacciones cliente-servidor para acceder al control total del extremo trasero.
[0008] Los sistemas convencionales de desarrollo de sitios web carecen de la capacidad de crear diseños de páginas web que se rellenen con datos para crear múltiples páginas dinámicas que puedan indexarse. Además, los sistemas convencionales carecen de la capacidad de integrar enrutadores basados en software para páginas web, lo que puede permitir que las páginas web contengan contenidos diferentes o funcionen de forma distinta en función de cómo un usuario haya llegado a las páginas web o interactúe con ellas. Los sistemas convencionales también carecen de la capacidad de supervisar la interacción de un usuario del sitio web y mostrar salidas resultantes basadas en la funcionalidad registrada previamente asociada a esas interacciones.
[0009] Los sistemas de alojamiento de sitios web gestionados convencionales se utilizan para servir peticiones a un sitio web bien utilizando servidores dedicados, que cuestan dinero y recursos significativos mantener listos y operativos, o bien utilizando un arranque en frío de nuevas instancias cuando se solicita un nuevo sitio web o la carga de un sitio web concreto supera un determinado umbral de retraso en la respuesta a una petición. Este proceso de arranque en frío de nuevas instancias de un sitio o páginas web conlleva un retraso sustancial en el procesamiento y la consiguiente latencia en la experiencia del usuario.
[0010] Los sistemas convencionales de desarrollo de sitios web también están limitados en cuanto a su capacidad para permitir a los usuarios editar dinámicamente las vistas previas de las páginas. Estos sistemas tampoco pueden recibir ediciones de una página previsualizada y traducirlas en actualizaciones de una base de datos en la que se basan todas o parte de las páginas. Como resultado, el uso de estos sistemas convencionales implica más acciones por parte del usuario, más ancho de banda y operaciones más engorrosas.
[0011] Los sistemas de prueba de sitios web, tal como se desvelan en la presente memoria descriptiva, pueden configurarse para crear una experiencia realista de uso del sitio web por parte de un usuario final sin interrumpir la experiencia del usuario final. Los sistemas convencionales de prueba de sitios web, sin embargo, ofrecen una interfaz de vista previa limitada para revisar el sitio de la forma en que un usuario final experimentaría el sitio web, pero no tienen una forma de proporcionar acceso en tiempo real a los datos generados en el sitio web que se está probando. Los sistemas convencionales también carecen de la capacidad de añadir nuevos datos y eliminar los generados para el sitio sin que ello repercuta en la experiencia del usuario final.
[0012] Los sistemas convencionales de alojamiento de sitios web también son vulnerables a los complementos (por ejemplo, software que puede integrarse en el extremo delantero o extremo trasero un sitio web) que contienen código malicioso (por ejemplo, malware). Cuando dicho código es cargado por el propietario o usuario de un sitio web, puede propagarse a través del sistema de alojamiento de sitios web y afectar a los sitios web de otros propietarios o usuarios. Los sistemas convencionales de alojamiento de sitios web carecen de capacidad para aislar los complementos cargados y evitar que infecten otros sitios web alojados habitualmente en el sistema.
[0013] En consecuencia, existe una necesidad de soluciones tecnológicas para nuevos sistemas de desarrollo de sitios web para gestionar la funcionalidad de extremo trasero, para proporcionar la libertad de tener más personalización del sitio web, y sin involucrar a un usuario en la configuración del servidor, aprovisionamiento, o interacciones servidor-cliente. Además, es necesario proporcionar herramientas tecnológicas a los usuarios para crear sitios web personalizados, incluso con capacidades de codificación personalizadas, sin necesidad de que los usuarios tengan que codificar sitios web enteros desde cero.
[0014] Además, existe la necesidad de soluciones tecnológicas para un nuevo sistema bajo demanda que gestione las peticiones a los sitios web sin retrasos significativos. Estas soluciones tecnológicas deben utilizar recursos informáticos virtuales, tales como máquinas virtuales, contenedores, código sin servidor, etc. Además, tales soluciones deberían permitir sitios web altamente personalizados, incluyendo tanto características comunes a muchas páginas o sitios, tales como características exclusivas de páginas o sitios concretos.
[0015] Aún más allá, también existe la necesidad de soluciones tecnológicas para un nuevo sistema de pruebas de sitios web con acceso a datos en tiempo real a lo que está disponible en producción.
[0016] Además, se necesitan soluciones tecnológicas para aislar los complementos cargados, y evitar que infecten sitios web co-alojados. Dichas técnicas deben ser capaces de aislar tanto los complementos del extremo delantero como los del extremo trasero, permitiendo al mismo tiempo que tales complementos sean cargados y utilizados por los propietarios y usuarios del sitio web.
[0017] El documento WO 2017/035306 A1 desvela sistemas y procedimientos para editar el contenido de una página web. . El documento US 2014/245257 A1 desvela un procedimiento implementado por ordenador para cambiar una aplicación de un modo de usuario a un modo de desarrollador en un dispositivo de visualización. El documento WO 2014/141122 A1 desvela un sistema de construcción de sitios web para construir, producir, editar y generar un sitio web.
[0018] Sumario
[0019] La invención se expone en el conjunto de reivindicaciones adjunto. Ciertas realizaciones de la presente divulgación se relacionan con un sistema para construir un sitio web. El sistema puede incluir un sistema de creación de sitios web en línea configurado para permitir a los creadores de sitios web añadir funcionalidad de extremo trasero a un sitio web alojado centralmente, el sitio web alojado centralmente incluye una o más páginas web indexables por un motor de búsqueda. El sistema en línea puede permitir que la edición y la previsualización dinámica de páginas utilicen una base de datos en línea común, a la que diseñadores y usuarios pueden acceder simultáneamente. El sistema puede comprender una base de datos en línea configurada para almacenar una biblioteca de elementos de construcción de sitios web para configurar un extremo delantero de una página web indexable, así como al menos un procesador configurado para realizar determinadas operaciones. Las operaciones pueden incluir la transmisión de primeras instrucciones a un navegador web remoto de un usuario, las primeras instrucciones permiten al usuario acceder remotamente a la biblioteca almacenada a través de una interfaz unificada visualizable por el navegador web remoto, y permitir al usuario utilizar una selección de los elementos de construcción para construir el extremo delantero de la página web indexable, en el que la interfaz unificada proporciona al usuario acceso tanto a los elementos de construcción como a la funcionalidad de extremo trasero personalizada asociada con la página web indexable; permitir, a través de la interfaz unificada desplegable por el navegador web remoto, que el usuario configure un evento programable para activar código editable por el usuario que proporcione funcionalidad de extremo trasero personalizada asociada con la página web indexable; recibir, a través de la interfaz unificada, ediciones del usuario al código editable por el usuario para implementar la funcionalidad de extremo trasero personalizada asociada con el evento programable; almacenar el código editable por el usuario editado en un sistema de almacenamiento de código en comunicación con la base de datos en línea; y en respuesta a un activador asociado con el evento programable, ejecutar el código editable por el usuario editado para implementar la funcionalidad de extremo trasero personalizada. En algunas realizaciones, el sistema incluye la ejecución del código editable por el usuario editado para implementar la funcionalidad de extremo trasero personalizada basada en un gancho que provoca la ejecución del código editable por el usuario editado.
[0020] Además, en algunas realizaciones, el gancho es un gancho web, un gancho de datos o un gancho de enrutador de enlace de datos.
[0021] Aún más, en algunas realizaciones, el al menos un procesador está configurado además para generar automáticamente, basándose en reglas almacenadas en la base de datos en línea, código esqueleto asociado con un elemento de construcción de sitio web seleccionado por el usuario, y para transmitir el código esqueleto al navegador web remoto para habilitar el código esqueleto.
[0022] Además, en algunas realizaciones, el sistema incluye una función asociada con el elemento de construcción del sitio web seleccionado por el usuario y un fragmento de código asociado con la función como parte del código esqueleto generado automáticamente.
[0023] Además, en algunas realizaciones, el sistema incluye una interfaz unificada desplegable por un navegador web remoto que a su vez incluye una ventana de edición de sitio web de extremo delantero y una ventana de edición de extremo trasero personalizada.
[0024] Además, en algunas realizaciones, el sistema incluye un activador para la actividad de datos que implica un conjunto de datos particular que está asociado con la funcionalidad de extremo trasero personalizada.
[0025] Aún más, en algunas realizaciones, el sistema incluye un activador para una actualización introducida en la página web indexable.
[0026] Además, en algunas realizaciones, el sistema incluye un activador para una transición de página en la página web indexable.
[0027] Además, en algunas realizaciones, el sistema incluye un activador para una interacción definida entre el usuario y la página web indexable.
[0028] Además, en algunas realizaciones, el al menos un procesador está configurado además para ejecutar el código editable por el usuario editado para implementar una pluralidad de funcionalidades de extremo trasero personalizadas en respuesta al activador asociado con el evento programable.
[0029] Aún más de acuerdo con algunas realizaciones, el al menos un procesador está configurado además para ejecutar el código editable por el usuario editado para implementar una funcionalidad de extremo trasero personalizada en respuesta a una pluralidad de disparadores asociados con una pluralidad de eventos programables.
[0030] Adicionalmente, de acuerdo con algunas realizaciones, el sistema incluye un sistema de almacenamiento de código configurado para almacenar código para un enrutador basado en software que gestiona las peticiones entrantes del cliente a la página web indexable.
[0031] Además, en algunas realizaciones, el sistema incluye un sistema de almacenamiento que es tanto una base de datos en línea como un sistema de almacenamiento de código.
[0032] Ciertas realizaciones se relacionan con un procedimiento implementado por ordenador para construir un sitio web utilizando funcionalidad de extremo trasero personalizada. El procedimiento puede incluir mantener una base de datos en línea configurada para almacenar una biblioteca de elementos de construcción de sitio web para configurar un extremo delantero de una página web indexable; transmitir las primeras instrucciones a un navegador web remoto de un usuario, las primeras instrucciones permiten al usuario acceder a la biblioteca almacenada de forma remota a través de una interfaz unificada transmitida por el navegador web remoto, y para permitir al usuario utilizar una selección de elementos de construcción para construir el extremo delantero de la página web indexable, en la que la interfaz unificada proporciona al usuario acceso a tanto los elementos de construcción como la funcionalidad de extremo trasero personalizada asociada con la página web indexable; recibir, a través de la interfaz unificada transmitida por el navegador web remoto, especificaciones del usuario para configurar un evento programable para activar el código editable por el usuario proporcionando la funcionalidad de extremo trasero personalizada asociada con la página web indexable; recibir, a través de la interfaz unificada, ediciones de usuario al código editable por el usuario para implementar la funcionalidad de extremo trasero personalizada asociada con el evento programable; almacenar el código editable por el usuario editado un sistema de almacenamiento de códigos en comunicación con la base de datos en línea; y en respuesta a una activación asociada con el evento programable, ejecutar el código editable por el usuario editado para implementar la funcionalidad de extremo trasero personalizada.
[0033] Además, en algunas realizaciones, el procedimiento incluye obtener datos externos a la base de datos en línea y externos al navegador web remoto para utilizar en la ejecución del código editable por el usuario editado para implementar la funcionalidad de extremo trasero personalizada en respuesta al activador.
[0034] Además, de acuerdo con algunas realizaciones, el procedimiento incluye proporcionar al usuario acceso a al menos algunas porciones del código editable por el usuario para su edición en forma de segmentos de código seleccionables.
[0035] Aún más, de acuerdo con algunas realizaciones, el procedimiento incluye la ejecución del código editable por el usuario editado para implementar la funcionalidad de extremo trasero personalizada basada en un gancho que provoca la ejecución del código editable por el usuario editado.
[0036] Además, de acuerdo con algunas realizaciones, el procedimiento incluye un gancho que es un gancho de red, o un gancho de datos, o un gancho de enrutador de enlace de datos.
[0037] Además, de acuerdo con algunas realizaciones, el procedimiento incluye la generación de código esqueleto asociado con un elemento de construcción de sitio web seleccionado por el usuario por al menos un procesador basado en reglas almacenadas en la base de datos en línea y la transmisión del código esqueleto al navegador web remoto para habilitar el código esqueleto.
[0038] Además, de acuerdo con algunas realizaciones, el código esqueleto generado automáticamente incluye una función asociada con un elemento de construcción seleccionado por el usuario y un fragmento de código asociado con la función.
[0039] Además, en algunas realizaciones, el procedimiento incluye proporcionar una interfaz unificada desplegable por un navegador web remoto que incluye una ventana de edición de sitio web de extremo delantero y una ventana de edición de extremo trasero personalizada.
[0040] Aún más, en algunas realizaciones, el procedimiento incluye un desencadenante de actividad de datos que implica un conjunto de datos particular que está asociado con la funcionalidad de extremo trasero personalizada.
[0041] Además, en algunas realizaciones, el procedimiento incluye un activador para una actualización introducida en la página web indexable.
[0042] Además, en algunas realizaciones, el procedimiento incluye un activador para la interacción definida entre el usuario y la página web indexable.
[0043] Ciertas realizaciones se relacionan con un sistema para la asignación bajo demanda de una instancia de ejecución de servidor web para un servidor de sitio web. El sistema puede incluir al menos una primera ubicación de memoria que almacene código genérico de servidor de sitios web para alojar una pluralidad de sitios web, y al menos una segunda ubicación de memoria que almacene, de forma segregada de la primera ubicación de memoria, código específico de sitio web único para cada uno de la pluralidad de sitios web. El sistema puede incluir además al menos un procesador configurado para realizar operaciones que incluyen controlar una pluralidad de instancias de ejecución de servidor web, al menos algunas de las instancias que ejecutan código específico de sitio web único para al menos uno de la pluralidad de sitios web, y al menos otras de las instancias de ejecución de servidor web que ejecutan el código de servidor de sitio web genérico desprovisto del código único específico para cualquier sitio web; recibir una solicitud de acceso a un sitio web específico, habiendo sido construido el sitio web específico sobre una plataforma que incluye el código genérico de servidor de sitio web; determinar si el sitio web específico ya está alojado en una de la pluralidad de instancias de ejecución de servidor web; y cuando se determine que el sitio web específico solicitado no está ya alojado en una de la pluralidad de instancias de ejecución de servidor web dirigir la solicitud a una primera de la pluralidad de instancias de ejecución de servidor web que ejecuta el código de servidor web genérico; inyectar en la primera de la pluralidad de instancias de ejecución de servidor web que ejecuta el código de servidor web genérico, código específico de sitio web adicional único para el sitio web solicitado desde la al menos una segunda ubicación de memoria; y responder a la solicitud, a través de la primera de la pluralidad de instancias de ejecución de servidor web, mediante una combinación tanto del código de servidor web genérico como del código específico de sitio web inyectado único para el sitio web solicitado.
[0044] En algunas realizaciones, el sistema puede incluir una pluralidad de instancias de ejecución de servidor web que entonces pueden incluir uno o más contenedores, máquinas virtuales o procesos de máquina física.
[0045] Además, en algunas realizaciones, la solicitud es una solicitud HTTP y el sistema incluye una operación para responder a la solicitud que se realiza antes de que se agote el tiempo de espera de la solicitud.
[0046] Aún más, en algunas realizaciones, el sistema incluye una operación para responder a la solicitud que se realiza dentro de los 100 ms siguientes a la recepción de la solicitud.
[0047] Adicionalmente, en algunas realizaciones, el sistema incluye un servidor proxy para gestionar peticiones HTTP, incluyendo las operaciones de recibir y determinar.
[0048] Además, en algunas realizaciones, la operación de determinar comprende además consultar a un gestor de instancias de ejecución de servidor web si el sitio web específico ya está alojado en una de la pluralidad de instancias de ejecución de servidor web.
[0049] Además, en algunas realizaciones, la operación para determinar incluye además reenviar la solicitud a un gestor de instancia de ejecución de servidor web y, si la solicitud falla, determinar a partir de la misma que el sitio web específico solicitado no está alojado actualmente por una de la pluralidad de instancias de ejecución de servidor web.
[0050] Aún más, en algunas realizaciones, la operación de determinar incluye determinar, basándose en una tabla de estado, que el sitio web específico ya está alojado por una de la pluralidad de instancias de ejecución de servidor web. Además, en algunas realizaciones, el sistema incluye una tabla de estado mantenida en un servidor proxy e identifica una lista de sitios web ya alojados por una de la pluralidad de instancias de ejecución de servidor web.
[0051] Además, en algunas realizaciones, el sistema incluye operaciones para actualizar la tabla de estado para eliminar un sitio web inactivo de la lista basándose en un periodo predeterminado de inactividad de las solicitudes asociadas con el sitio web inactivo.
[0052] Además, en algunas realizaciones, el código específico de sitio web adicional único para el sitio web solicitado incluye código de extremo trasero único para el sitio web solicitado.
[0053] Aún más, en algunas realizaciones, el código específico de sitio web adicional único para el sitio web solicitado incluye código asociado con un complemento referenciado por el sitio web solicitado.
[0054] Adicionalmente, en algunas realizaciones, las operaciones comprenden además monitorizar un conjunto de instancias de ejecución de servidor web que no alojan ya un sitio web específico, y cuando el tamaño del conjunto de instancias de ejecución de servidor web es menor que un umbral, instruir a un gestor de instancias de ejecución de servidor web para que haga girar instancias de ejecución de servidor web adicionales.
[0055] Además, en algunas realizaciones, las operaciones comprenden además monitorizar un conjunto de instancias de ejecución de servidor web que no alojan ya un sitio web específico, y cuando el tamaño del conjunto de instancias de ejecución de servidor web es mayor que un umbral, instruir a un gestor de instancias de ejecución de servidor web para que cierre al menos una instancia de ejecución de servidor web.
[0056] Ciertas realizaciones de la presente divulgación se relacionan con un procedimiento implementado por ordenador para la asignación bajo demanda de una instancia de ejecución de servidor web para un servidor de sitio web. El procedimiento puede incluir almacenar, en una primera ubicación de memoria, código de servidor de sitio web genérico para alojar una pluralidad de sitios web; almacenar, en una segunda ubicación de memoria que está separada de la primera ubicación de memoria, código específico de sitio web único para cada uno de la pluralidad de sitios web; controlar una pluralidad de instancias de ejecución de servidor web, al menos algunas de las instancias que ejecutan código específico de sitio web único para al menos uno de la pluralidad de sitios web, y al menos otras de las instancias de ejecución de servidor web que ejecutan el código de servidor de sitio web genérico desprovisto del código único específico para cualquier sitio web; recibir una solicitud de acceso a un sitio web específico, habiendo sido construido el sitio web específico sobre una plataforma que incluye el código genérico de servidor de sitio web; determinar si el sitio web específico ya está alojado en una de la pluralidad de instancias de ejecución de servidor web; y cuando se determina que el sitio web específico solicitado no está ya alojado en una de la pluralidad de instancias de ejecución de servidor web dirigir la solicitud a una primera de la pluralidad de instancias de ejecución de servidor web que ejecuta el código de servidor web genérico; inyectar en la primera de la pluralidad de instancias de ejecución de servidor web que ejecuta el código de servidor web genérico, código específico de sitio web adicional único para el sitio web solicitado desde la al menos una segunda ubicación de memoria; y responder a la solicitud, a través de la primera de la pluralidad de instancias de ejecución de servidor web, mediante una combinación tanto del código de servidor web genérico como del código específico de sitio web inyectado único para el sitio web solicitado.
[0057] Deacuerdo con algunas realizaciones, la pluralidad de instancias de ejecución de servidor web puede incluir uno o más de contenedores, máquinas virtuales, o proceso de máquina física.
[0058] Además, de acuerdo con algunas realizaciones, la solicitud es una solicitud HTTP y el procedimiento incluye la Etapa de responder a la solicitud antes de que la solicitud agote el tiempo de espera.
[0059] Aún más, de acuerdo con algunas realizaciones, el procedimiento incluye la Etapa de responder a la solicitud que se realiza dentro de los 100 ms de recibir la solicitud.
[0060] Ciertas realizaciones de la presente divulgación se relacionan con un sistema para la asignación bajo demanda de una instancia de ejecución de servidor web para un servidor de sitio web. El sistema puede comprender al menos un dispositivo de memoria que almacene código genérico de servidor de sitios web para alojar una pluralidad de sitios web y código específico de sitio web único para cada uno de la pluralidad de sitios web; y al menos un procesador configurado para realizar operaciones. Las operaciones pueden incluir controlar una pluralidad de instancias de ejecución de servidor web, al menos algunas de las instancias ejecutando código específico de sitio web único para al menos uno de la pluralidad de sitios web, y al menos otras de las instancias de ejecución de servidor web ejecutando el código genérico de servidor de sitio web desprovisto del código único específico para cualquier sitio web; recibir una solicitud de acceso a un sitio web específico, habiendo sido construido el sitio web específico sobre una plataforma que incluye el código genérico de servidor de sitio web; determinar si el sitio web específico ya está alojado en una de la pluralidad de instancias de ejecución de servidor web; cuando se determine que el sitio web específico solicitado no está ya alojado en una de la pluralidad de instancias de ejecución de servidor web dirigir la solicitud a una primera de la pluralidad de instancias de ejecución de servidor web que ejecuta el código de servidor de sitio web genérico, la solicitud solicitando a la primera de la pluralidad de instancias de ejecución de servidor web que ejecuta el código de servidor de sitio web genérico que obtenga código específico de sitio web adicional único para el sitio web solicitado desde el al menos un dispositivo de memoria; y responder a la solicitud, a través de la primera de la pluralidad de instancias de ejecución de servidor web, mediante una combinación tanto del código de servidor de sitio web genérico como del código específico de sitio web inyectado único para el sitio web solicitado.
[0061] Deacuerdo con algunas realizaciones, la primera de la pluralidad de instancias de ejecución de servidor web que ejecuta el código de servidor de sitio web genérico está configurada para obtener el código específico de sitio web adicional único para el sitio web solicitado desde el al menos un dispositivo de memoria basándose al menos en un identificador del sitio web solicitado incluido en la solicitud.
[0062] Ciertas realizaciones se relacionan con un sistema para ejecutar simultáneamente datos en vivo de un sitio web en un entorno de despliegue de sitio web mientras se ejecutan también datos de prueba del sitio web en un entorno de prueba de sitio web no público. El sistema puede incluir al menos una base de datos común que almacene tanto los datos en tiempo real del sitio web como los datos de prueba del sitio web, en la que los datos de prueba se asocian en la al menos una base de datos común con los datos en tiempo real; y al menos un procesador configurado para realizar operaciones. Las operaciones pueden realizar funciones que incluyen acceder a los datos en vivo almacenados en la al menos una base de datos común; utilizar los datos en vivo accedidos para renderizar el sitio web en el entorno de despliegue del sitio web; recibir una solicitud para realizar pruebas en el sitio web mientras el sitio web está en vivo en el entorno de despliegue del sitio web; acceder, en la al menos una base de datos común, a un conjunto de datos de prueba en respuesta a la solicitud, el conjunto de datos de prueba incluyendo uno o más elementos de datos de prueba correspondientes a los respectivos elementos de datos en tiempo real, en el que el conjunto de datos de prueba no es accesible en el entorno de despliegue del sitio web; y mientras el sitio web está funcionando en el entorno de despliegue del sitio web, probar el sitio web en paralelo en el entorno de prueba del sitio web no público de tal manera que tanto el conjunto de datos de prueba como los datos en tiempo real son utilizados simultáneamente por el sitio web en el entorno de prueba del sitio web no público.
[0063] De acuerdo con algunas realizaciones, los datos de prueba se asocian con los datos en vivo utilizando marcadores configurados para provocar, durante la prueba, que elementos de datos de prueba específicos sustituyan a elementos de datos en vivo específicos.
[0064] Además, de acuerdo con algunas realizaciones, los marcadores están configurados para ser borrados después de la prueba.
[0065] Además, de acuerdo con algunas realizaciones, los marcadores son indicativos de instrucciones para ignorar datos en vivo específicos durante la prueba.
[0066] Además, de acuerdo con algunas realizaciones, el sistema es un entorno de alojamiento de sitios web para alojar una pluralidad de sitios web generados por una pluralidad de usuarios.
[0067] Además, de acuerdo con algunas realizaciones, al menos una base de datos común es una base de datos en línea centralizada configurada para almacenar datos en vivo asociados con la pluralidad de sitios web generados por la pluralidad de usuarios.
[0068] Aún más, de acuerdo con algunas realizaciones, los datos de prueba incluyen datos recién añadidos no asociados previamente con los datos en vivo del sitio web.
[0069] Además, de acuerdo con algunas realizaciones, los datos de prueba se ocultan del entorno de despliegue del sitio web.
[0070] Además, de acuerdo con algunas realizaciones, el sistema incluye datos de prueba que responden a una solicitud para añadir datos en el entorno de prueba del sitio web no público.
[0071] Además, de acuerdo con algunas realizaciones, los datos de prueba se crean en un área de la al menos una base de datos común oculta del entorno de despliegue del sitio web.
[0072] Aún más, de acuerdo con algunas realizaciones, el sistema incluye elementos de datos de prueba correspondientes a los respectivos elementos de datos en vivo incluyen elementos de datos indicativos de una alteración solicitada realizada en un duplicado de los respectivos elementos de datos en vivo.
[0073] Adicionalmente, de acuerdo con algunas realizaciones, el sistema incluye la determinación de elementos de datos de prueba correspondientes para los elementos de datos en vivo solicitados para ser alterados, y cuando existen elementos de datos de prueba respectivos correspondientes, realizar la alteración solicitada en los elementos de datos de prueba respectivos correspondientes.
[0074] Además, de acuerdo con algunas realizaciones, el sistema realiza la recepción de una consulta iniciada en el entorno de prueba del sitio web no público, respondiendo a la consulta con uno o más de los elementos de datos en vivo cuando el uno o más de los elementos de datos en vivo no están asociados con los correspondientes elementos de datos de prueba respectivos, y respondiendo a la consulta con uno o más de los elementos de datos de prueba cuando el uno o más de los elementos de datos en vivo están asociados con los correspondientes elementos de datos de prueba respectivos.
[0075] Además, de acuerdo con algunas realizaciones, el al menos un procesador está configurado además para fusionar los datos de prueba en los datos en vivo, sustituyendo de este modo uno o más de los elementos de datos en vivo con los respectivos elementos de datos de prueba correspondientes.
[0076] Ciertas realizaciones de la presente divulgación se relacionan con un procedimiento implementado por ordenador para ejecutar simultáneamente datos en vivo de un sitio web en un entorno de despliegue de sitio web mientras se ejecutan también datos de prueba del sitio web en un entorno de prueba de sitio web no público. El procedimiento puede incluir almacenar tanto los datos en vivo del sitio web como los datos de prueba del sitio web, donde los datos de prueba están asociados en la al menos una base de datos común con los datos en vivo; acceder a los datos en vivo almacenados en la al menos una base de datos común; utilizar los datos en vivo accedidos para renderizar el sitio web en el entorno de despliegue del sitio web; recibir una solicitud para realizar pruebas en el sitio web mientras el sitio web está en vivo en el entorno de despliegue del sitio web; acceder, en la al menos una base de datos común, a un conjunto de datos de prueba en respuesta a la solicitud, el conjunto de datos de prueba incluyendo uno o más elementos de datos de prueba correspondientes a los respectivos elementos de datos en tiempo real, en el que el conjunto de datos de prueba no es accesible en el entorno de despliegue del sitio web; y mientras el sitio web está funcionando en el entorno de despliegue del sitio web, probar el sitio web en paralelo en el entorno de prueba del sitio web no público de tal manera que tanto el conjunto de datos de prueba como los datos en tiempo real son utilizados simultáneamente por el sitio web en el entorno de prueba del sitio web no público.
[0077] De acuerdo con algunas realizaciones, el procedimiento puede incluir asociar los datos de prueba con los datos en vivo utilizando marcadores configurados para provocar, durante la prueba, que elementos de datos de prueba específicos sustituyan a elementos de datos en vivo específicos.
[0078] Además, de acuerdo con algunas realizaciones, los marcadores están configurados para ser borrados después de la prueba.
[0079] Aún más, de acuerdo con algunas realizaciones, los marcadores son indicativos de una instrucción para ignorar los datos en vivo específicos correspondientes durante la prueba.
[0080] Adicionalmente, de acuerdo con algunas realizaciones, el procedimiento es realizado por un servidor configurado para proporcionar un entorno de alojamiento de sitios web para alojar una pluralidad de sitios web generados por una pluralidad de usuarios.
[0081] Además, de acuerdo con algunas realizaciones, los datos de prueba se crean en un área de la al menos una base de datos común oculta del entorno de despliegue del sitio web.
[0082] Ciertas realizaciones de la presente divulgación se relacionan con un sistema basado en ordenador para ejecutar simultáneamente datos de prueba de un sistema de aplicación visual en un entorno de prueba no público mientras también se ejecutan datos en vivo del sistema de aplicación visual en un entorno de despliegue, el sistema basado en ordenador que comprende: al menos una base de datos común que almacena tanto los datos en vivo del sistema de aplicación visual como los datos de prueba del sistema de aplicación visual, en el que los datos de prueba están asociados en la al menos una base de datos común con los datos en vivo; y al menos un procesador configurado para: acceder a los datos en vivo del sistema de aplicación visual almacenados en la al menos una base de datos común; utilizar los datos en vivo accedidos del sistema de aplicación visual en el entorno de despliegue; recibir una solicitud para realizar pruebas en el sistema de aplicación visual mientras el sistema de aplicación visual está en vivo en el entorno de despliegue; acceder, en la al menos una base de datos común, a un conjunto de datos de prueba en respuesta a la solicitud, el conjunto de datos de prueba incluye uno o más elementos de datos de prueba correspondientes a los respectivos elementos de datos en tiempo real, en el que el conjunto de datos de prueba no es accesible en el entorno de despliegue; y mientras el sistema de aplicación visual está activo en el entorno de despliegue, probar el sistema de aplicación visual en paralelo en el entorno de prueba no público de tal manera que tanto el conjunto de datos de prueba como los datos en tiempo real son utilizados simultáneamente por el sistema de aplicación visual en el entorno de prueba no público.
[0083] Además, de acuerdo con algunas realizaciones, el sistema basado en ordenador es al menos uno de un sistema de desarrollo de sitios web y un sistema de desarrollo de código fuente.
[0084] Ciertas realizaciones de la presente divulgación incluyen un medio legible por ordenador que contiene instrucciones que, cuando son ejecutadas por al menos un procesador, hacen que el al menos un procesador realice ciertas instrucciones para actualizar una base de datos de extremo trasero que contiene conjuntos de datos que pueblan una pluralidad de páginas web de un sitio web. Las instrucciones pueden realizar operaciones para recibir a través de una interfaz de usuario, una pluralidad de elementos de datos, los elementos de datos organizados en uno o más grupos de al menos un elemento de datos, cada grupo para mostrar en una página web separada de un sitio web; almacenar los grupos de al menos un elemento de datos en una base de datos; generar una pluralidad de páginas web virtuales, en el que cada página web virtual es una vista previa de una página web real correspondiente antes de que la página web real correspondiente salga en vivo, en el que cada una de las páginas web reales correspondientes no está diseñada con funcionalidad para actualizar la base de datos; mostrar cada grupo de al menos un elemento de datos en una separada de la pluralidad de páginas web virtuales; mostrar una herramienta de edición para permitir a un usuario editar una página web virtual de la pluralidad de páginas web virtuales; traducir las ediciones a la página web virtual en actualizaciones para la base de datos; almacenar las actualizaciones en la base de datos; y permitir, durante una vista en vivo de una página web real correspondiente asociada con la página web virtual, una visualización de la página web real correspondiente con las actualizaciones realizadas a la página web virtual durante la vista previa. Además, en algunas realizaciones, cada una de la pluralidad de páginas web virtuales es visualizable dentro de un marco asociado con una interfaz de editor de la interfaz de usuario.
[0085] En otras realizaciones, las operaciones muestran una característica seleccionable por el usuario que permite al usuario navegar a través de la pluralidad de páginas web virtuales para mostrar individual y dinámicamente cada una de la pluralidad de páginas web virtuales.
[0086] En realizaciones adicionales, la visualización de operaciones de una característica seleccionable por el usuario que permite al usuario seleccionar una página web virtual particular de la pluralidad de páginas web virtuales basándose en un identificador de la página web virtual particular.
[0087] En otras realizaciones, el identificador de la página web virtual particular se basa en un elemento de datos asociado con la página web virtual particular.
[0088] Además, de acuerdo con algunas realizaciones, las operaciones incluyen asociar una URL única con cada una de la pluralidad de páginas web virtuales.
[0089] En realizaciones adicionales, cada una de la pluralidad de páginas web virtuales se genera basándose en un mapa del sitio que hace referencia a la URL única de cada una de la pluralidad de páginas web virtuales.
[0090] De acuerdo con algunas realizaciones, la herramienta de edición está configurada para recibir ediciones de los grupos almacenados de al menos un elemento de datos en la base de datos.
[0091] Además, en algunas realizaciones, la herramienta de edición está configurada para recibir ediciones de atributos de la pluralidad de páginas web virtuales.
[0092] En realizaciones adicionales, la herramienta de edición está configurada para recibir ediciones del código que se utiliza para generar la pluralidad de páginas web virtuales.
[0093] En otras realizaciones, la herramienta de edición está configurada para mostrar una pluralidad de segmentos de código esqueleto que representan código real utilizado para generar la pluralidad de páginas web virtuales, y recibir ediciones del código esqueleto que se traducen en ediciones del código real.
[0094] Además, en algunas realizaciones, los elementos de datos se reciben a través de la interfaz de usuario desde una fuente externa.
[0095] En realizaciones adicionales, las operaciones comprenden además acceder a un enrutador basado en software asociado con la pluralidad de páginas web virtuales, y configurar el enrutador basado en software para generar una versión diferente de cada una de la pluralidad de páginas web virtuales basándose en uno o más segmentos de una URL recibida.
[0096] En algunas realizaciones, un subconjunto de cada grupo de al menos un elemento de datos se organiza mediante una función de repetición, generando la función de repetición una o más instancias visualizadas del subconjunto de cada grupo de al menos un elemento de datos.
[0097] Además, las realizaciones adicionales incluyen una vista en directo de la página web real correspondiente que incluye la una o más instancias.
[0098] También se desvelan en la presente memoria descriptiva procedimientos implementados por ordenador para actualizar una base de datos de extremo trasero que contiene conjuntos de datos que pueblan una pluralidad de páginas web de un sitio web. El procedimiento puede comprender la recepción, a través de una interfaz de usuario, de una pluralidad de elementos de datos, los elementos de datos organizados en uno o más grupos de al menos un elemento de datos, cada grupo para su visualización en una página web separada de un sitio web; el almacenamiento de los grupos de al menos un elemento de datos en una base de datos; la generación de una pluralidad de páginas web virtuales, en la que cada página web virtual es una vista previa de una página web real correspondiente antes de que la página web real correspondiente se ponga en marcha, en la que cada una de las páginas web reales correspondientes no está diseñada con funcionalidad para actualizar la base de datos; mostrar cada grupo de al menos un elemento de datos en una separada de la pluralidad de páginas web virtuales; mostrar una herramienta de edición para permitir a un usuario editar una página web virtual de la pluralidad de páginas web virtuales; traducir las ediciones a la página web virtual en actualizaciones para la base de datos; almacenar las actualizaciones en la base de datos; y permitir, durante una vista en vivo de una página web real correspondiente asociada con la página web virtual, una visualización de la página web real correspondiente con las actualizaciones realizadas a la página web virtual durante la vista previa.
[0099] En algunas realizaciones, cada una de la pluralidad de páginas web virtuales es visualizable dentro de un marco asociado con una interfaz de editor de la interfaz de usuario.
[0100] Además, en algunas realizaciones el procedimiento comprende además mostrar una característica seleccionable por el usuario que permite al usuario navegar a través de la pluralidad de páginas web virtuales para mostrar individual y dinámicamente cada una de la pluralidad de páginas web virtuales.
[0101] En realizaciones adicionales, el procedimiento comprende además mostrar una característica seleccionable por el usuario que permite al usuario seleccionar una página web virtual particular de la pluralidad de páginas web virtuales basándose en un identificador de la página web virtual particular.
[0102] En otras realizaciones, el identificador de la página web virtual particular se basa en un elemento de datos asociado con la página web virtual particular.
[0103] Además, en algunas realizaciones el procedimiento comprende además asociar una URL única con cada una de la pluralidad de páginas web virtuales.
[0104] En realizaciones adicionales, cada una de la pluralidad de páginas web virtuales se genera basándose en un mapa del sitio que hace referencia a la URL única de cada una de la pluralidad de páginas web virtuales.
[0105] Además, en algunas realizaciones, la herramienta de edición está configurada para recibir ediciones de los grupos almacenados de al menos un elemento de datos en la base de datos.
[0106] De acuerdo con realizaciones adicionales, la herramienta de edición está configurada para recibir ediciones de atributos de la pluralidad de páginas web virtuales.
[0107] En otras realizaciones, la herramienta de edición está configurada para recibir ediciones del código que se utiliza para generar la pluralidad de páginas web virtuales.
[0108] Aún más, en algunas realizaciones la herramienta de edición está configurada para mostrar una pluralidad de segmentos de código esqueleto que representan código real utilizado para generar la pluralidad de páginas web virtuales, y recibir ediciones del código esqueleto que se traducen en ediciones del código real.
[0109] En realizaciones adicionales, los elementos de datos se reciben a través de la interfaz de usuario desde una fuente externa.
[0110] Las realizaciones divulgadas adicionales se relacionan con un sistema para permitir ediciones dinámicas a páginas web para actualizar una base de datos de extremo trasero que contiene conjuntos de datos que pueblan páginas web. El sistema puede incluir una base de datos en línea configurada para almacenar una pluralidad de elementos de datos para su visualización en una pluralidad de páginas web, los elementos de datos organizados en uno o más grupos de al menos un elemento de datos, cada grupo para su visualización en una página web separada de un sitio web, cada página web separada carece de funcionalidad para actualizar la base de datos en línea; y al menos un procesador configurado para realizar operaciones. Las operaciones pueden proporcionar instrucciones remotas a un navegador para proporcionar una interfaz que muestre una versión editable de una primera página web generada sobre la base de un grupo de al menos un elemento de datos, la interfaz que permite a un usuario editar el al menos un elemento de datos; traducir las ediciones recibidas a través de la interfaz en la versión editable de la primera página web en actualizaciones para la base de datos en línea; almacenar las actualizaciones en la base de datos en línea; y permitir, durante una visualización en directo de la primera página web, una visualización en la primera página web con las actualizaciones realizadas en la versión editable de la primera página web.
[0111] Otras realizaciones incluyen una operación para generar una pluralidad de versiones editables separadas de páginas web, en la que cada versión editable separada de una página web es visualizable dentro de un marco asociado con una interfaz de editor de la interfaz.
[0112] Ciertas realizaciones de la presente divulgación se relacionan con un sistema para previsualizar páginas web dinámicas a través de una interfaz de editor en línea. El sistema puede incluir una base de datos en línea configurada para: almacenar una pluralidad de elementos de datos para mostrar en una pluralidad de páginas web; y almacenar primeras instrucciones para permitir la organización de los elementos de datos en una pluralidad de grupos, cada uno de la pluralidad de grupos que incluyen al menos un elemento de datos y se asocia con al menos una página web discreta, y cada uno de la pluralidad de grupos, además, ser capaz de ser utilizado por al menos uno de código de extremo delantero ejecutable por un navegador y código de extremo trasero ejecutable por un servidor de extremo trasero remoto desde el navegador para configurar una pluralidad de páginas web virtuales desplazables; y al menos un procesador configurado para: proporcionar segundas instrucciones remotas al navegador para mostrar una interfaz que permita a un usuario asociado con el navegador añadir elementos de datos a la base de datos, asociar cada elemento de datos añadido con al menos uno de la pluralidad de grupos, y modificar el al menos uno de los códigos de extremo delantero y de extremo trasero; ejecutar terceras instrucciones para generar, basándose en los elementos de datos añadidos por el usuario, la asociación de los elementos de datos añadidos con el al menos uno de la pluralidad de grupos, y la modificación del al menos uno de los códigos de extremo delantero y de extremo trasero, la pluralidad de páginas web virtuales desplazables; en la que la pluralidad de páginas web virtuales desplazables están configuradas para ser generadas independientemente por el al menos un procesador y editadas independientemente por el usuario; y proporcionar cuartas instrucciones remotamente al navegador para mostrar una interfaz de vista previa configurada para mostrar la pluralidad de páginas web virtuales desplazables antes de la generación de las correspondientes páginas web finales, la interfaz de vista previa permitiendo al usuario desplazarse selectivamente a través de la pluralidad de páginas web virtuales desplazables basándose en cada uno de la pluralidad de grupos de al menos un elemento de datos y visualizar cómo los grupos de al menos un elemento de datos aparecerán en una correspondiente página web final antes de que la correspondiente página web final se ponga en marcha.
[0113] Deacuerdo con algunas realizaciones, el sistema puede proporcionar instrucciones adicionales de forma remota al navegador para mostrar la interfaz del editor en línea para permitir al usuario arrastrar y soltar en una plantilla de página web una selección de al menos un elemento de construcción para asociar el al menos un elemento de construcción de página web con uno de los elementos de datos para construir un extremo frontal de la página web final correspondiente.
[0114] Además, de acuerdo con algunas realizaciones, el sistema incluye una plantilla de página web que es una plantilla de página web dinámica configurada para incluir componentes de datos ajustables para renderizar la página web final correspondiente asociada con cada uno de la pluralidad de grupos.
[0115] Aún más, de acuerdo con algunas realizaciones, el sistema puede incluir una interfaz de vista previa configurada para mostrarse en el navegador dentro de un marco asociado con la interfaz del editor en línea.
[0116] Además, de acuerdo con algunas realizaciones, el sistema puede incluir una pluralidad de páginas web virtuales desplazables visualizables dentro de un marco asociado con la interfaz del editor en línea.
[0117] Además, de acuerdo con algunas realizaciones, el sistema puede incluir una interfaz de vista previa que puede incluir una característica seleccionable por el usuario que permite al usuario desplazarse a través de la pluralidad de páginas web virtuales desplazables.
[0118] Además, de acuerdo con algunas realizaciones, el sistema incluye una interfaz de vista previa que puede incluir una característica seleccionable por el usuario que permite al usuario seleccionar una página web virtual particular para su visualización basándose en un identificador de la página web virtual respectiva.
[0119] Aún más, de acuerdo con algunas realizaciones, el sistema puede incluir identificadores para las respectivas páginas web virtuales basados en un elemento de datos almacenado en la base de datos.
[0120] Además, de acuerdo con algunas realizaciones, el sistema puede asociar una URL única con cada uno de la pluralidad de grupos
[0121] Además, de acuerdo con algunas realizaciones, el sistema incluye una pluralidad de páginas web virtuales desplazables pueden generarse basándose en un mapa del sitio que hace referencia a la URL única de cada página web.
[0122] Además, de acuerdo con algunas realizaciones, el sistema incluye base de datos que puede incluir una base de datos en línea centralizada configurada para almacenar datos asociados con una pluralidad de sitios web generados por usuarios de una pluralidad de usuarios remotos.
[0123] Aún más, de acuerdo con algunas realizaciones, la al menos una página web discreta es indexable por un motor de búsqueda.
[0124] Además, de acuerdo con algunas realizaciones, el sistema puede incluir al menos uno de los códigos de extremo delantero y de extremo trasero configurados para realizar una función de un enrutador basado en software.
[0125] Además, de acuerdo con alguna realización, el enrutador basado en software puede ser capaz de configurar la al menos una página web discreta en una pluralidad de formas diferentes basadas en una pluralidad de posibles segmentos de URL diferentes proporcionados por el usuario.
[0126] Además, de acuerdo con algunas realizaciones, el sistema puede incluir al menos uno de los códigos de extremo delantero y de extremo trasero asociados con la al menos una página web discreta.
[0127] Aún más, el sistema puede incluir al menos uno de los códigos de extremo delantero y de extremo trasero asociados con un enrutador específico basado en software.
[0128] Además, la pluralidad de grupos puede estar asociada con al menos uno de un sitio web que comprende una pluralidad de páginas web discretas y un grupo asociado de sitios web.
[0129] Además, de acuerdo con algunas realizaciones, el sistema puede incluir un subconjunto de la pluralidad de elementos de datos organizado por una función repetidora, generando la función repetidora una o más instancias visualizadas del subconjunto de la pluralidad de elementos de datos.
[0130] Además, de acuerdo con algunas realizaciones, la una o más instancias pueden formar parte de la interfaz de vista previa configurada para mostrar la pluralidad de páginas web virtuales desplazables.
[0131] Ciertas realizaciones de la presente divulgación se relacionan con un procedimiento implementado por ordenador para previsualizar páginas web dinámicas a través de una interfaz de editor en línea. El procedimiento puede incluir el almacenamiento de una pluralidad de elementos de datos para su visualización en una pluralidad de páginas web; y el almacenamiento de primeras instrucciones para permitir la organización de los elementos de datos en una pluralidad de grupos, cada uno de los cuales incluye al menos un elemento de datos y está asociado con al menos una página web discreta, y cada uno de los cuales puede ser utilizado por al menos uno de los códigos frontales ejecutables por un navegador y un código de extremo trasero ejecutable por un servidor de extremo trasero remoto del navegador para configurar una pluralidad de páginas web virtuales desplazables; proporcionar segundas instrucciones remotas al navegador para mostrar una interfaz que permita a un usuario asociado con el navegador añadir elementos de datos a la base de datos, asociar cada elemento de datos añadido con al menos uno de la pluralidad de grupos, y modificar el al menos uno de los códigos de extremo delantero y de extremo trasero; ejecutar terceras instrucciones para generar, basándose en los elementos de datos añadidos por el usuario, la asociación de los elementos de datos añadidos con al menos uno de la pluralidad de grupos, y la modificación de al menos uno de los códigos de extremo delantero y de extremo trasero, la pluralidad de páginas web virtuales desplazables; en las que la pluralidad de páginas web virtuales desplazables están configuradas para ser generadas independientemente por el al menos un procesador y editadas independientemente por el usuario; y proporcionando cuartas instrucciones remotas al navegador para mostrar una interfaz de vista previa configurada para mostrar la pluralidad de páginas web virtuales desplazables antes de la generación de las correspondientes páginas web finales, la interfaz de vista previa permitiendo al usuario desplazarse selectivamente a través de la pluralidad de páginas web virtuales desplazables basándose en cada uno de la pluralidad de grupos de al menos un elemento de datos y visualizar cómo los grupos de al menos un elemento de datos aparecerán en una correspondiente página web final antes de que la correspondiente página web final se ponga en marcha.
[0132] Deacuerdo con algunas realizaciones, el procedimiento incluye proporcionar instrucciones adicionales de forma remota al navegador para mostrar la interfaz del editor en línea para permitir al usuario arrastrar y soltar en una plantilla de página web una selección de al menos un elemento de construcción para asociar el al menos un elemento de construcción de página web con uno de los elementos de datos para construir un extremo frontal de una página web. Además, de acuerdo con algunas realizaciones, la plantilla de página web es una plantilla de página web dinámica configurada para incluir componentes de datos ajustables para renderizar la correspondiente página web final asociada con cada uno de la pluralidad de grupos.
[0133] Aún más, de acuerdo con algunas realizaciones, la interfaz de vista previa está configurada para mostrarse en el navegador dentro de un marco asociado con la interfaz del editor en línea.
[0134] Ciertas realizaciones de la presente divulgación se relacionan con un sistema para navegar entre páginas web dinámicas, comprendiendo el sistema una base de datos en línea que almacena una pluralidad de elementos de datos para su visualización en una pluralidad de páginas web dinámicas. La base de datos también puede almacenar primeras instrucciones para permitir la organización de los elementos de datos en una pluralidad de grupos, cada uno de los cuales incluye al menos un elemento de datos y está asociado con al menos una de las páginas web dinámicas, y cada uno de los grupos puede ser utilizado por al menos un código de extremo delantero ejecutable por un navegador y un código de extremo trasero ejecutable por un servidor de extremo trasero remoto del navegador para configurar la pluralidad de páginas web dinámicas; en el que cada una de las páginas web dinámicas está configurada para ser generada y editada de forma independiente. El sistema también puede incluir al menos un procesador configurado para: proporcionar segundas instrucciones de forma remota al navegador para mostrar una interfaz de navegación como parte de la al menos una de la pluralidad de páginas web dinámicas, la interfaz de navegación configurada para permitir a un usuario navegar selectivamente a través de cada una de la pluralidad de páginas web dinámicas generadas automáticamente en base a cada uno de la pluralidad de grupos de al menos un elemento de datos, en el que la interfaz de navegación no es un elemento nativo de la pluralidad de páginas web dinámicas.
[0135] Además, de acuerdo con algunas realizaciones, el sistema puede realizar al menos una de buscar la pluralidad de páginas web dinámicas puede ser navegar seleccionando una página web dinámica a través de una característica mostrada, desplazarse secuencialmente a través de la pluralidad de páginas web, e ir directamente a una página web siguiente, anterior, primera, última, marcada u otra página web específica.
[0136] Aún más, de acuerdo con algunas realizaciones, las páginas web dinámicas tienen un orden determinado basado en un mapa del sitio.
[0137] Además, de acuerdo con algunas realizaciones, el sistema puede incluir una interfaz de navegación configurada para mostrarse en el navegador dentro de un marco disociado de otros aspectos de la pluralidad de páginas web dinámicas. Ciertas realizaciones de la presente divulgación se relacionan con un sistema para alojar sitio web implementado en un entorno de servidor. El sistema puede incluir al menos un servidor de alojamiento configurado para co-alojar una pluralidad de sitios web generados por una pluralidad de usuarios, el servidor de alojamiento incluye herramientas de edición comunes alojadas accesibles a la pluralidad de usuarios para permitir a cada uno de la pluralidad de usuarios alterar selectivamente sitios web específicos generados por cada uno de la pluralidad de usuarios, el servidor de alojamiento está configurado además para evitar que al menos algunos de la pluralidad de usuarios alteren sitios web específicos co-alojados generados por otros de la pluralidad de usuarios; al menos un procesador configurado para generar una interfaz, para su visualización por al menos un subconjunto de la pluralidad de usuarios, para permitir al menos un subconjunto de la pluralidad de usuarios cargar en el servidor de alojamiento código de complemento asociado con complementos para los sitios web específicos co-alojados generados por el al menos un subconjunto de la pluralidad de usuarios, el código de complemento para al menos un complemento específico incluyendo al menos uno de: código de funcionalidad de complemento de extremo delantero ejecutable por un cliente; o código de funcionalidad de complemento de extremo trasero ejecutable en un servidor de complementos; memoria para almacenar el código de complemento cargado por el usuario asociado con el al menos un complemento específico, de tal manera que el código de complemento cargado por el usuario almacenado está alojado centralmente en un dominio común con los sitios web específicos co-alojados generados por la pluralidad de usuarios, en el que una única instancia del al menos un complemento específico es compartida por una pluralidad de los sitios web específicos coalojados; y donde para cada uno de la pluralidad de los sitios web específicos co-alojados que comparten el al menos un complemento cargado, el al menos un procesador está configurado además para habilitar de forma segura, utilizando un mecanismo de aislamiento, al menos uno de: ejecución del código de funcionalidad del complemento de extremo delantero en el cliente; o ejecución del código de funcionalidad del complemento de extremo trasero en el servidor de complementos; en el que, basándose en el mecanismo de aislamiento, se impide que cualquier código malicioso contenido en el al menos un complemento cargado afecte a otros de la pluralidad de los sitios web específicos co-alojados en el servidor de alojamiento.
[0138] De acuerdo con algunas realizaciones, el servidor de complementos y el servidor de alojamiento incluidos en el sistema son el mismo servidor.
[0139] Además, de acuerdo con algunas realizaciones, el sistema puede incluir un mecanismo de aislamiento que permite la ejecución del código de funcionalidad de complemento de extremo trasero en el servidor de complemento, que está separado del servidor de alojamiento.
[0140] Aún más, de acuerdo con algunas realizaciones, el sistema puede incluir un mecanismo de aislamiento que permite la ejecución del código de funcionalidad de complemento de extremo trasero en una máquina virtual.
[0141] Además, de acuerdo con algunas realizaciones, el sistema puede incluir un mecanismo de aislamiento que permite la ejecución del código de funcionalidad de complemento de extremo trasero en un contenedor docker.
[0142] Además, de acuerdo con algunas realizaciones, el sistema puede incluir un mecanismo de aislamiento que permite la ejecución del código de funcionalidad de complemento de extremo trasero a través de un proceso aislado en el servidor de complemento.
[0143] Además, de acuerdo con algunas realizaciones, el sistema el sistema puede incluir un mecanismo de aislamiento incluye que en ejecución del código de funcionalidad de complemento de extremo delantero en una subregión segura de un sitio web específico co-alojado.
[0144] Aún más, de acuerdo con algunas realizaciones, el sistema puede establecer un canal de comunicaciones seguro para controlar las comunicaciones entre la subregión del sitio web específico co-alojado y otras subregiones del sitio web específico co-alojado.
[0145] Además, de acuerdo con algunas realizaciones, el sistema puede incluir un canal de comunicaciones seguro que está configurado para restringir el acceso del al menos un complemento cargado a otros aspectos del sitio web específico co-alojado.
[0146] Además, de acuerdo con algunas realizaciones, el sistema puede incluir un canal de comunicaciones seguro que se crea utilizando una interfaz de programación de aplicaciones configurable para limitar la interacción entre el al menos un complemento cargado y el sitio web específico co-alojado.
[0147] Además, de acuerdo con algunas realizaciones, el sistema puede incluir un mecanismo de aislamiento que permite la ejecución del código de funcionalidad de complemento de extremo delantero a través de un iframe en un navegador del cliente, en el que el iframe está configurado para funcionar como una caja de arena segura para la ejecución del código de funcionalidad de complemento de extremo delantero.
[0148] Aún más, de acuerdo con algunas realizaciones, el sistema puede asociar el código de funcionalidad de complemento de extremo delantero ejecutable por el cliente con subregiones de página web separadas de un sitio web específico co-alojado.
[0149] Además, de acuerdo con algunas realizaciones, el sistema puede asociar dos o más complementos de confianza con un sitio web específico co-alojado.
[0150] Además, de acuerdo con algunas realizaciones, el sistema puede permitir que el al menos un complemento cargado se comunique con y controle al menos un componente de la página web específica coalojada en la que se ejecuta su código de funcionalidad de complemento de extremo delantero.
[0151] Además, de acuerdo con algunas realizaciones, el sistema puede coalojar la pluralidad de los sitios web específicos co-alojados en una plataforma compartida accesible a la pluralidad de usuarios.
[0152] Aún más, de acuerdo con algunas realizaciones, el sistema puede incluir al menos un complemento cargado que está aislado de las cookies asociadas con una página web de un sitio web específico co-alojado.
[0153] Ciertas realizaciones de la presente divulgación se relacionan con un procedimiento implementado por ordenador para alojar sitios web implementado en un entorno de servidor, El procedimiento puede incluir alojar conjuntamente, en un servidor de alojamiento, una pluralidad de sitios web generados por una pluralidad de usuarios; poner a disposición de la pluralidad de usuarios herramientas de edición comunes para permitir a cada uno de la pluralidad de usuarios alterar selectivamente sitios web específicos generados por cada uno de la pluralidad de usuarios; evitar que al menos algunos de la pluralidad de usuarios alteren sitios web específicos co-alojados generados por otros de la pluralidad de usuarios; generar una interfaz, para su visualización por al menos un subconjunto de la pluralidad de usuarios, para permitir que al menos un subconjunto de la pluralidad de usuarios cargue en el servidor de alojamiento código de complemento asociado con complementos para los sitios web específicos co-alojados generados por al menos un subconjunto de la pluralidad de usuarios, el código de complemento para al menos un complemento específico incluyendo al menos uno de los siguientes: código de funcionalidad de complemento de extremo delantero ejecutable por un cliente; o código de funcionalidad de complemento de extremo trasero ejecutable en un servidor de complementos; almacenando el código de complemento cargado por el usuario asociado con el al menos un complemento específico, de tal manera que el código de complemento cargado por el usuario almacenado está alojado centralmente en un dominio común con los sitios web específicos co-alojados generados por la pluralidad de usuarios, en el que una única instancia del al menos un complemento específico es compartida por una pluralidad de los sitios web específicos co-alojados; y para cada uno de la pluralidad de los sitios web específicos co-alojados que comparten el al menos un complemento cargado, habilitar de forma segura, utilizando un mecanismo de aislamiento, al menos uno de: ejecución del código de funcionalidad de extremo delantero del complemento en el cliente; o ejecución del código de funcionalidad de extremo trasero del complemento en el servidor de complementos; en el que, basándose en el mecanismo de aislamiento, se impide que cualquier código malicioso contenido en el al menos un complemento cargado afecte a otros de la pluralidad de los sitios web específicos co-alojados en el servidor de alojamiento.
[0154] De acuerdo con algunas realizaciones, el procedimiento puede incluir al menos un complemento cargado que está aislado de las cookies asociadas con una página web de un sitio web específico co-alojado.
[0155] Además, de acuerdo con algunas realizaciones, el servidor de complementos y el servidor de alojamiento son el mismo servidor.
[0156] Aún más, de acuerdo con algunas realizaciones, el procedimiento puede incluir mecanismo de aislamiento que permite la ejecución del código de funcionalidad de complemento de extremo trasero en el servidor de complemento, que está separado del servidor de alojamiento.
[0157] Adicionalmente, de acuerdo con algunas realizaciones, el procedimiento puede incluir mecanismo de aislamiento que permite la ejecución del código de funcionalidad de complemento de extremo trasero en una máquina virtual.
[0158] Además, de acuerdo con algunas realizaciones, el procedimiento puede incluir mecanismo de aislamiento que permite la ejecución del código de funcionalidad de complemento de extremo trasero en un contenedor docker.
[0159] Además, de acuerdo con algunas realizaciones, el procedimiento puede incluir mecanismo de aislamiento que permite la ejecución del código de funcionalidad de complemento de extremo trasero a través de un proceso aislado en el servidor de complemento.
[0160] Aún más, de acuerdo con algunas realizaciones, el procedimiento puede incluir código de funcionalidad de complemento de extremo delantero ejecutable por el cliente y que está configurado para generar una interfaz de usuario en un iframe de un navegador.
[0161] Debe entenderse que la descripción general precedente y la descripción detallada siguiente son sólo ejemplares y explicativas y no son restrictivas de la invención tal como se reivindica.
[0162] Breve descripción de las figuras
[0163] Los dibujos adjuntos, que se incorporan y forman parte de esta especificación, ilustran varias realizaciones y, junto con la descripción, sirven para explicar los principios desvelados. En los dibujos:
[0164] La Figura 1 representa un sistema ejemplar de creación de sitios web en línea que interactúa con otros sistemas y componentes, de acuerdo con algunas realizaciones de la presente divulgación.
[0165] La Figura 2 representa un sistema ejemplar de creación de sitios web en línea, de acuerdo con algunas realizaciones de la presente divulgación.
[0166] La Figura 3 ilustra una ruta de ejecución del código de extremo trasero asociado a un activador, de acuerdo con algunas realizaciones de la presente divulgación.
[0167] La Figura 4 representa una interfaz de editor en línea ejemplar para actualizar la funcionalidad de extremo trasero, de acuerdo con algunas realizaciones de la presente divulgación.
[0168] La Figura 5 es un diagrama de bloques que muestra una página web dinámica ejemplar en modo de desarrollo, de acuerdo con algunas realizaciones de la presente divulgación.
[0169] La Figura 6 es un diagrama de flujo que ilustra un procedimiento de desarrollo de funcionalidad de extremo trasero, de acuerdo con algunas realizaciones de la presente divulgación.
[0170] La Figura 7 es un diagrama de flujo que ilustra un procedimiento para activar la ejecución de código de extremo trasero, de acuerdo con algunas realizaciones de la presente divulgación.
[0171] La Figura 8 representa un diagrama de bloques de un sistema de instancia de ejecución de servidor web bajo demanda, de acuerdo con algunas realizaciones de la presente divulgación.
[0172] La Figura 9 representa un diagrama esquemático de la interacción entre varios componentes del sistema de instancia de ejecución de servidor web bajo demanda, de acuerdo con algunas realizaciones de la presente divulgación. La Figura 10 es un diagrama de flujo que ilustra un procedimiento para responder a una petición web enviada para un sitio web, de acuerdo con algunas realizaciones de la presente divulgación.
[0173] La Figura 11 es una ilustración de un sistema de instancia de ejecución de servidor web bajo demanda para determinar si un sitio web está alojado, y generar e instanciar instancias de ejecución de servidor web, de acuerdo con algunas realizaciones de la presente divulgación.
[0174] La Figura 12 representa la instanciación de elementos de instancia de ejecución de servidor web con un sitio web, de acuerdo con algunas realizaciones de la presente divulgación.
[0175] La Figura 13 representa la monitorización de carga de sitios web alojados y la gestión de instancias en uso, de acuerdo con algunas realizaciones de la presente divulgación.
[0176] La Figura 14 representa el número de instancias de ejecución de servidores web disponibles para el alojamiento, de acuerdo con algunas realizaciones de la presente divulgación.
[0177] La Figura 15 representa un sistema ejemplar de prueba en tiempo real de un sitio web, de acuerdo con algunas realizaciones de la presente divulgación.
[0178] La Figura 16a representa un diagrama esquemático de un entorno de despliegue de acceso a elementos de datos, de acuerdo con algunas realizaciones de la presente divulgación.
[0179] La Figura 16b representa un diagrama esquemático del acceso del entorno de prueba a los elementos de datos, de acuerdo con algunas realizaciones de la presente divulgación.
[0180] La Figura 17 es una ilustración del acceso desde un sitio web a datos reales y de prueba en un entorno de prueba, de acuerdo con algunas realizaciones de la presente divulgación.
[0181] La Figura 18 representa la generación de datos de prueba utilizados en un entorno de prueba para probar sitios web, de acuerdo con algunas realizaciones de la presente divulgación.
[0182] La Figura 19 es un diagrama de flujo que ilustra un procedimiento para acceder a un sitio web en un entorno de despliegue, de acuerdo con algunas realizaciones de la presente divulgación.
[0183] La Figura 20 es un diagrama de flujo que ilustra un procedimiento para acceder a un sitio web en un entorno de prueba, de acuerdo con algunas realizaciones de la presente divulgación.
[0184] La Figura 21 es un diagrama de flujo que ilustra un procedimiento para gestionar solicitudes de datos en un entorno de prueba, de acuerdo con algunas realizaciones de la presente divulgación.
[0185] La Figura 22 es un diagrama de flujo que ilustra un procedimiento para gestionar peticiones de lectura en un entorno de prueba, de acuerdo con algunas realizaciones de la presente divulgación.
[0186] La Figura 23a es un diagrama de flujo de un procedimiento para actualizar elementos de datos en un entorno de prueba, de acuerdo con algunas realizaciones de la presente divulgación.
[0187] La Figura 23b es un diagrama de flujo de un procedimiento para actualizar elementos de datos en un entorno de despliegue, de acuerdo con algunas realizaciones de la presente divulgación.
[0188] La Figura 23c es un diagrama de flujo de un procedimiento para añadir elementos de datos en un entorno de prueba, de acuerdo con algunas realizaciones de la presente divulgación.
[0189] La Figura 24 es un diagrama de flujo que ilustra un procedimiento para borrar elementos de datos de un entorno de prueba, de acuerdo con algunas realizaciones de la presente divulgación
[0190] La Figura 25 ilustra un proceso de superposición para generar los resultados de la consulta de datos de prueba, de acuerdo con algunas realizaciones de la presente divulgación.
[0191] La Figura 26 es un diagrama de flujo que muestra las Etapas implicados en la edición de una base de datos durante la previsualización de un sitio web, de acuerdo con algunas realizaciones de la presente divulgación.
[0192] La Figura 27 es un sistema para el desarrollo y previsualización de páginas web, de acuerdo con algunas realizaciones de la presente divulgación.
[0193] La Figura 28 es un diagrama de bloques de una página web de acuerdo con algunas realizaciones de la presente divulgación;
[0194] La Figura 29 es una vista en despiece ordenado de refrescamiento dinámico páginas web de acuerdo con algunas realizaciones de la presente divulgación.
[0195] La Figura 30 es un diagrama de bloques de un sistema de previsualización dinámico de acuerdo con algunas realizaciones de la presente divulgación;
[0196] La Figura 31 ilustra una vista previa de una página web virtual que está siendo editada, de acuerdo con algunas realizaciones de la presente divulgación.
[0197] La Figura 32 es un diagrama esquemático que representa una relación entre grupos de datos y sitios web, de acuerdo con algunas realizaciones de la presente divulgación.
[0198] La Figura 33 es un diagrama esquemático que muestra los componentes implicados en la generación de páginas web virtuales, de acuerdo con algunas realizaciones de la presente divulgación.
[0199] La Figura 34 es un diagrama de flujo que muestra las etapas implicadas en una previsualización de páginas web virtuales, de acuerdo con algunas realizaciones de la presente divulgación.
[0200] La Figura 35 es un diagrama esquemático de usuarios interactuando con un sistema anfitrión de un sitio web, de acuerdo con algunas realizaciones de la divulgación.
[0201] La Figura 36 representa un acceso controlado a sitios web co-alojados, de acuerdo con algunas realizaciones de la presente divulgación.
[0202] La Figura 37 muestra grupos de sitios web co-alojados que comparten código de complemento bajo rutas comunes, de acuerdo con algunas realizaciones de la presente divulgación.
[0203] La Figura 38 representa entornos de ejecución aislados del código del complemento de extremo trasero, de acuerdo con algunas realizaciones de la presente divulgación.
[0204] La Figura 39 representa un acceso controlado y la ejecución del código del complemento de extremo delantero, de acuerdo con algunas realizaciones de la presente divulgación.
[0205] La Figura 40 representa la ejecución aislada del código del complemento en el lado del cliente, de acuerdo con algunas realizaciones de la presente divulgación.
[0206] La Figura 41 es un diagrama de flujo que muestra las Etapas implicados en el acceso y ejecución del código del sitio web y del complemento, de acuerdo con algunas realizaciones de la presente divulgación.
[0207] La Figura 42 es un ejemplo de interfaz de usuario para editar una página web y crear una colección de bases de datos, de acuerdo con algunas realizaciones de la presente divulgación.
[0208] La Figura 43 es un ejemplo de interfaz de usuario para editar una página web y configurar permisos para una colección de bases de datos, de acuerdo con algunas realizaciones de la presente divulgación.
[0209] La Figura 44 es un ejemplo de interfaz de usuario para editar una página web y entradas en una colección de bases de datos, de acuerdo con algunas realizaciones de la presente divulgación.
[0210] La Figura 45 es un ejemplo de interfaz de usuario para editar una página web y mostrar resultados de una colección de bases de datos, de acuerdo con algunas realizaciones de la presente divulgación.
[0211] La Figura 46 es un ejemplo de interfaz de usuario para editar una página web y crear una función repetidora, de acuerdo con algunas realizaciones de la presente divulgación.
[0212] La Figura 47 es un ejemplo de interfaz de usuario para editar una página web y mostrar el resultado de una función de repetición, de acuerdo con algunas realizaciones de la presente divulgación.
[0213] Descripción detallada
[0214] En la siguiente descripción detallada, se exponen numerosos detalles específicos con el fin de proporcionar una comprensión completa de las realizaciones ejemplares desveladas. Sin embargo, se entenderá por los expertos en la materia que los principios de las realizaciones de ejemplo pueden ser practicados sin cada detalle específico. En otros casos, no se han descrito en detalle procedimientos y componentes bien conocidos para no ocultar los principios de las realizaciones de ejemplo. A menos que se indique explícitamente, los procedimientos y procesos de ejemplo aquí descritos no están limitados a un orden o secuencia particular, ni a una configuración de sistema particular. Además, algunas de las realizaciones descritas o elementos de las mismas pueden ocurrir o realizarse simultáneamente, en el mismo momento, o concurrentemente. La referencia ahora será hecha detalladamente a las realizaciones desveladas, los ejemplos de los cuales se ilustran en los dibujos de acompañamiento. A menos que se indique explícitamente, el envío y la recepción, tal y como se utilizan en la presente memoria descriptiva, se entienden en un sentido amplio, incluido el envío o la recepción en respuesta a una solicitud específica o sin dicha solicitud específica. Estos términos abarcan tanto las formas activas como las pasivas de enviar y recibir.
[0215] Los sistemas y procedimientos consistentes con la presente divulgación están dirigidos a sistemas de construcción de sitios web, incluyendo funcionalidad de extremo delantero y de extremo trasero personalizada. En algunas realizaciones, los sistemas de creación de sitios web pueden incluir opciones para que el usuario configure las capacidades de desarrollo de la funcionalidad de extremo trasero.
[0216] La Figura 1 representa un sistema ejemplar que interactúa con otros componentes y usuarios a través de una red, de acuerdo con algunas realizaciones de la presente divulgación. Como se muestra en la FIG.1, el sistema de creación de sitios web (SCW) 100 incluye el editor SCW 110, que puede ser una herramienta para crear y editar sitios web. La SCW 100 también puede incluir un sistema de gestión de contenidos (SGC) SCW 120, que puede ser un repositorio de widgets y otras herramientas utilizadas en la construcción de sitios web, bases de datos o estructuras similares de almacenamiento de datos, código o datos que representan sitios web construidos o en desarrollo, y los datos creados, actualizados y visualizados utilizando los sitios web construidos o en desarrollo (como, por ejemplo, el inventario de una tienda electrónica subyacente a un sitio web de comercio electrónico).
[0217] El editor SCW 110 puede ser un editor para construir y editar sitios web. El editor puede permitir construir sitios y páginas web partiendo de un lienzo en blanco o basándose en sitios, secciones de sitios o páginas ya desarrollados (conocidos conjuntamente como plantillas) que pueden almacenarse en el SCW SGC 120. El editor SCW 110 puede definir el diseño visual y otros atributos de las páginas de un sitio web en construcción. Las plantillas pueden definir las páginas web pertenecientes al sitio web que se está construyendo y su contenido inicial. El editor SCW 110 también puede incluir una sección IU para determinar la disposición del sitio definiendo la navegación entre varias páginas. El editor SCW 110 define el diseño de una página permitiendo a los usuarios colocar componentes en las páginas web de la forma en que prefieren que aparezcan las páginas web reales.
[0218] En algunas realizaciones, como se analiza más adelante, el SCW 100 puede alojar sitios web y páginas individuales a través de máquinas virtuales, instancias de contenedor o código sin servidor. Estas técnicas pueden mejorar los tiempos de carga y reducir la latencia para el usuario. Por ejemplo, en una situación en la que un sitio web tiene código de extremo trasero o de extremo delantero integrado que debe ejecutarse, o incluye componentes específicos del sitio, tal código y componentes pueden cargarse en instancias de ejecución de servidor sin estado la primera vez que dichas instancias se asocian con una petición realizada por un navegador (por ejemplo, el navegador web 131) para un sitio determinado. Estas instancias de servidor sin estado podrían reutilizarse para otras peticiones del navegador relacionadas con el mismo sitio. Además, ofrece la ventaja de permitir al SCW 100 utilizar sus recursos de servidor en función de las solicitudes reales que se atiendan, lo que resulta mucho más eficiente que utilizar instancias de ejecución de servicios web dedicadas (tales como servidores, máquinas virtuales o contenedores) e infraestructura. Las herramientas de construcción 121 pueden incluir widgets, que son componentes dispuestos en las páginas que edita el editor SCW. En algunas realizaciones, los widgets pueden incluir aplicaciones desarrolladas por el usuario que crea la página web, otros usuarios, el propio proveedor de SCW o proveedores de aplicaciones de terceros. Las aplicaciones pueden proceder de repositorios tales como el WIX APP MARKET. Entre los ejemplos de widgets se incluyen widgets sencillos (tales como campos de texto, formas, etc.) o complejos (tales como calendarios, generadores de formularios, edición de imágenes, edición de vídeo, recuento de visitas, incorporación de redes sociales, etc.).
[0219] El SCW SGC 120 puede almacenar tanto componentes para construir sitios web como sitios web que han sido construidos. En algunas realizaciones, los componentes y los sitios web se mantienen en sistemas SGC separados.
[0220] Como se muestra en la FIG.1, las herramientas de construcción 121 almacenadas en SCW SGC 120, que incluyen widgets y otras herramientas que ayudan a construir fácilmente un sitio web.
[0222] Las herramientas de construcción 121 son los bloques de construcción de un sitio web que facilitan el proceso de construcción e inclusión de contenidos en un sitio web. Las herramientas de construcción 121 puede incluir tanto herramientas de componentes o widgets, como se ha comentado anteriormente, como pestañas, barra de búsqueda, botones, galería, presentaciones de diapositivas, etc., así como herramientas operativas como herramientas de alineación. Las herramientas de construcción 121 pueden incluir tanto widgets simples (por ejemplo, botones, campos de texto, etc.) como widgets complejos (por ejemplo, galería, widgets de calendario, etc.) y están configuradas para realizar funciones avanzadas. Las herramientas de construcción 121 puede representarse como una abstracción del código que representa los widgets y otras herramientas. Las herramientas de construcción 121 puede incluir herramientas públicas por defecto ofrecidas a todos los usuarios del sistema y herramientas privadas ofrecidas exclusivamente a un sitio web o usuario específico. Las herramientas privadas pueden incluir herramientas públicas que se han personalizado para el usuario o el sitio web o herramientas nuevas. Las herramientas privadas pueden ser creadas por el usuario del sistema que construye el sitio web o por terceros proveedores. Las herramientas de construcción 121 puede compartirse entre múltiples sitios web construidos por diferentes grupos de usuarios y propiedad de diferentes grupos de usuarios. Las herramientas de construcción 121 también pueden personalizarse editando el código de las herramientas de construcción 121 existentes (por ejemplo, actualizando una hoja de estilo de un botón para crear una nueva hoja de estilo para un nuevo botón). Las herramientas de construcción personalizadas pueden almacenarse junto con las herramientas de construcción originales 121 en la base de datos del área del sistema 122.
[0224] El editor SCW 110 proporciona acceso remoto a las herramientas de construcción 121 almacenadas en la base de datos del área del sistema 122 del SGC SCW 120. Se puede crear una instancia de un widget seleccionado de herramientas de construcción 121 cuando un usuario coloca un widget en las páginas que está editando el editor SCW 110. Se puede crear una instancia de un widget seleccionado de herramientas de construcción 121 mediante una referencia al widget en la página. También se puede crear una instancia de un widget seleccionado de herramientas de construcción 121 copiando el código que representa el widget seleccionado en la página web del sitio web que se está construyendo.
[0226] El editor SCW 110 es un software que se aloja típicamente en un servidor, mientras que algunos o todos sus elementos pueden cargarse para su ejecución en el dispositivo de visualización de sitios web 130 del usuario (o su navegador web 131). En algunas realizaciones, el editor SCW 110 puede compartir la base de datos del área del sistema 122 con las herramientas de construcción 121, o puede compartir un servidor común. No obstante, en otras realizaciones, el editor SCW 110 y la base de datos de área de sistema 122 se alojan por separado.
[0228] La base de datos de área de sitio 124 almacena los sitios web construidos utilizando el editor SCW 110. Como se muestra, el sitio web 123 es un sitio web que está siendo construido usando el editor SCW 110 y almacenado en la base de datos del área del sitio 124. El sitio web 123 almacenado en la base de datos del área del sitio 124 puede incluir texto que representa código y datos a los que se puede acceder, actualizar y ver utilizando el dispositivo de desarrollo del sitio web 140. El sitio web 123 puede incluir una o más páginas web, incluida la página web indexable 125. En algunas realizaciones, por ejemplo, una o más páginas web indexables 125 comparten el mismo dominio común (por ejemplo, http://www.my-site.com), subdominio (por ejemplo, http://my-site.wix.com/) o prefijo URL (por ejemplo, http://www.wix.com/wixsites/my-site/). La página web indexable 125 puede incluir el Extremo delantero 126 y el Extremo trasero 127. La página web indexable 125 puede incluir un archivo o código especial, incluyendo o haciendo referencia al extremo delantero 126 y extremo trasero 127, o puede ser sólo un nombre para la colección de extremo delantero 126 y de extremo trasero 127, como se indica con una línea discontinua. El módulo de acceso 126 puede estar compuesto por widgets y otros elementos de interfaz de usuario, que pueden ser instancias de herramientas de construcción 121, incluida información específica de la instancia (tales como posición, tamaño y valores de atributo); dicha información específica de la instancia también puede incluir información de contención (es decir, qué componentes están contenidos dentro de qué contenedores). El extremo delantero 126 también puede incluir elementos de código como segmentos de código que se ejecutarán en el extremo delantero 126 (posiblemente afectando a los widgets durante el tiempo de ejecución). El extremo delantero 126 puede estar compuesto además por otros elementos, como metadatos de página, títulos, etc.
[0230] El extremo delantero 126 incluye instancias de herramientas de construcción 121 colocadas en la página web indexable 125 del sitio web 123 construido utilizando el editor SCW 110, tales como aquellas que son siempre visibles para un usuario, son visibles por defecto, o son visibles al menos parte del tiempo. El extremo trasero 127 representa la funcionalidad que puede activarse cuando un usuario interactúa con el extremo delantero 126 o a través de eventos que no son de interacción, como una comunicación entrante al sitio web 123, un activador basado en el tiempo o un cambio en la base de datos conectada al sitio web 123. El extremo trasero 127 puede ser visto sólo parte del tiempo o puede no ser visto nunca por el usuario del dispositivo de desarrollo de sitios web 140 y el dispositivo de personal de vendedor SCW 150. El extremo delantero 126 y el extremo trasero 127 pueden almacenarse en la base de datos del área del sitio 124 como código o datos estructurados (por ejemplo, XML, JSON, JSON-LD, etc.). El código puede almacenarse en formato textual o en código objeto compilado. El código que representa el extremo delantero 126 y el extremo trasero 127 puede estar en el mismo lenguaje de programación o formato de datos estructurados. En algunas realizaciones, el código que representa el extremo trasero 127 y el código que forma parte del FE 126 se convierte a un lenguaje de programación diferente antes de guardarlo en la base de datos del área del sitio 124.
[0231] En algunas realizaciones, el código y los datos del sitio web 123 podrían compartir una base de datos o podrían tener bases de datos separadas. En algunas realizaciones, el código que representa el extremo delantero 126 y el extremo trasero 127 puede almacenarse en la base de datos del área del sitio 124 como texto sin formato en una tabla de base de datos. En otras realizaciones, el código podría almacenarse como objetos de archivo y podría almacenar una ubicación del archivo en la base de datos de área de sitio 124. En algunas realizaciones, el código se almacena en una única ubicación en una columna de la base de datos del área de sitio 124 o en un archivo. En algunos casos, el código puede dividirse en varios archivos.
[0232] En algunas realizaciones, la página web indexable 125 puede ser una página web dinámica y el de extremo delantero 126 puede ser una plantilla y no la página web real. Como se explica más adelante, una página web dinámica puede ser una página web configurada para cambiar su apariencia o contenido basándose en una funcionalidad de extremo trasero personalizada. Ejemplos de funcionalidades de extremo trasero personalizadas, como se explica más adelante, incluyen la actualización de los datos mostrados en la página web, el cambio de tamaño o la alteración de las imágenes en la página web, la activación de la renderización de contenido de vídeo en la página web, etc. En algunas realizaciones, el de extremo delantero 126 de las páginas web dinámicas puede ser una plantilla vinculada directamente a los datos de una tabla de base de datos para actualizar el contenido y la apariencia de varias páginas web dinámicas.
[0233] En algunas realizaciones, la SCW 100 puede incluir mayor o menor número de los componentes mostrados en la FIG.
[0234] 1. Por ejemplo, las bases de datos 122 y 124 pueden ser una única base de datos o bases de datos separadas. Las bases de datos pueden ser un conjunto distribuido de bases de datos. Ambas bases de datos 122 y 124 pueden ser bases de datos relacionales, bases de datos orientadas a objetos, repositorios de archivos de lenguajes de datos (para lenguajes como XML o JSON) o bases de datos No SQL. Además, las bases de datos 122 y 124 pueden mantenerse en una red local (por ejemplo, una red de área local con acceso a Internet), en una red basada en la nube (por ejemplo, una arquitectura de nube pública o privada) o en un híbrido de una red local y una red basada en la nube.
[0235] Tal como se muestra en la FIG.1, se puede acceder al sitio web 123 almacenado en una base de datos de área del sitio 124 en el SCW SGC 120 mediante el dispositivo de visualización del sitio web 130 (por ejemplo, ordenador de sobremesa, tableta, ordenador portátil, teléfono inteligente, etc.) a través del navegador web 131. Un usuario (no representado) del dispositivo de visualización de páginas web 130 puede solicitar acceso a la página web 123 a través de la red 160 (por ejemplo, Internet, incluyendo redes intermediarias entre el dispositivo de visualización de páginas web 130 y el SCW 100). El navegador web 131 (por ejemplo, APPLE SAFARI, GOOGLE CHROME, MOZILLA FIREFOX, MICROSOFT EXPLORER, etc.) del dispositivo de visualización web 130 puede ser utilizado para ver el sitio web 123 y los datos creados y editados utilizando el sitio web 123. El dispositivo de desarrollo de páginas web 140 puede utilizarse para construir la página web 123 utilizando el editor SCW 110. El navegador web 141 en el dispositivo de desarrollo de páginas web 140 puede ser usado para hacer una petición de acceso al editor SCW 110 para construir la página web 123. El dispositivo de personal de vendedores SCW 150 puede utilizarse para proporcionar soporte al cliente para un usuario (no representado) del dispositivo de desarrollo de páginas web 140 cuando se construye y mantiene la página web 123. El dispositivo de personal de vendedores SCW 150 también puede ser utilizado por terceros vendedores para crear y personalizar herramientas de construcción 121. El dispositivo de personal de vendedores SCW 150 también puede utilizarse para configurar el propio SCW 100 - por ejemplo, para gestionar el diseñador del sitio y las cuentas de usuario, para gestionar las plantillas de sitio o de página descritas anteriormente (creando nuevas o editando las existentes) o para gestionar los diversos elementos que componen el SCW 100.
[0236] En algunas realizaciones, el dispositivo de visualización de sitios web 130, el dispositivo de desarrollo de sitios web 140 y el dispositivo de personal de vendedor de SCW 150 pueden ser dispositivos físicamente diferentes. En otros casos, pueden ser vistas diferentes a las que se accede desde el mismo dispositivo utilizando credenciales diferentes y/o roles diferentes. En algunas realizaciones, los navegadores web 131, 141 y 151 pueden ser el mismo navegador o diferentes navegadores en el mismo o diferentes dispositivos o diferentes pestañas en el mismo navegador.
[0237] El dispositivo de visualización de sitio web 130, el dispositivo de desarrollo de sitio web 140 y el dispositivo de personal de vendedor de SCW 150 pueden acceder al sitio web 123 a través de la red 160. En algunas realizaciones, el dispositivo de visualización del sitio web 130, el dispositivo de desarrollo del sitio web 140 y el dispositivo de personal de vendedores SCW 150 pueden ser un dispositivo móvil, un ordenador portátil, un ordenador de sobremesa, una tableta, etc.
[0238] Tal como se muestra en la FIG. 1, el motor de búsqueda 170 (por ejemplo, GOOGLE, YAHOO, BING, etc.) puede acceder a la página web indexable 125 del sitio web 123 almacenada en la base de datos del área del sitio 124 a través de la Red 160, con o sin interactuar también con el SCW 100. El motor de búsqueda 170 puede indexar la página web indexable 125 del sitio web 123 para facilitar su descubrimiento y aumentar así el número de usuarios que utilizan el dispositivo de visualización del sitio web 130 para ver el sitio web 123. En algunas realizaciones, las herramientas de construcción 121 permiten además a los usuarios optimizar el sitio web 123 para la indexación y búsqueda a través del motor de búsqueda 170. Por ejemplo, las herramientas de construcción 121 pueden permitir a los usuarios elegir el texto que aparece en las cabeceras de una determinada página web indexable 125, en determinadas ubicaciones de la página web indexable 125, o que está asociado (por ejemplo, como metadatos) a la página web indexable 125.
[0240] La Figura 2 representa una estructura ejemplar de la SCW 100, de acuerdo con algunas realizaciones de la presente divulgación. Como se muestra en la FIG.2, la SCW 100 incluye la base de datos del área del sitio 124, que incluye componentes tanto para la construcción como para el alojamiento de sitios web, tal y como se ha comentado anteriormente en relación con la FIG.1.
[0242] En algunas realizaciones, la página web indexable 125 puede ser una página web dinámica o virtual en la que los componentes del extremo delantero 126 podrían poblarse con datos del grupo de datos 210. El grupo de datos 210 puede estar asociado a más de una página web. El grupo de datos 210 puede estar compuesto por elementos de datos incluyendo el elemento de datos 211. El elemento de datos 211 puede estar asociado a uno o más componentes de las herramientas de construcción 121 utilizados en el extremo delantero 126 de la página web indexable 125. Por ejemplo, el grupo de datos 210 puede ser una base de datos de empleados en la que cada elemento de datos 211 es un registro de empleado que contiene múltiples campos de datos (tales como nombre, edad e información de departamento). Estos campos múltiples pueden utilizarse para rellenar múltiples componentes visibles (campos de visualización) en el extremo delantero 126 de la página web indexable 125. En algunas realizaciones, el grupo de datos 210 se almacena en la base de datos de área local 124 como parte de una tabla y el elemento de datos 211 es una fila de esa tabla. Una página web asociada al grupo de datos 210 puede ser, por ejemplo, una página web dinámica.
[0244] Los elementos de datos 210 pueden estar asociados con el DB 220 de asociaciones de URL. Cuando un usuario accede a la página web indexable 125 del sitio web 123 utilizando el dispositivo de visualización web 130 escribiendo una URL, la URL (o un segmento de la misma) puede compararse con las URL o segmentos de URL almacenados en la base de datos de asociaciones de URL 220 para su referenciación. Los grupos de datos pueden asociarse a una URL o segmento de URL en la base de datos de asociaciones de URL 220. Una URL o segmento de URL en la base de datos de asociaciones de URL 220 puede ayudar a determinar el grupo de datos que se utilizará para generar la página web virtual o dinámica utilizando la página web indexable 125 asociada. En algunas realizaciones, la página web indexable 125 es una plantilla de una página web dinámica o virtual y la página web real se genera utilizando los datos del grupo de datos 210 determinados utilizando una URL en la BD de Asociaciones de URL 220.
[0246] Los elementos de datos 210 pueden determinarse utilizando un enrutador basado en software, que analiza una URL (o segmentos de URL) tecleados por un usuario o proporcionados de otro modo para acceder a una página web 125 del sitio web 123 utilizando el dispositivo de visualización web 130. El análisis de la URL por parte del enrutador basado en software puede dar como resultado una clave para acceder al elemento de datos 211 del grupo de datos 210. Por ejemplo, con la URL http://mysite.wix.com/users/20, un enrutador basado en software puede analizar la URL para determinar que el prefijo "usuarios" está asociado con el grupo de datos y el sufijo "20" es la clave que resulta en la búsqueda del elemento de datos en el grupo de datos asociado "usuarios" que se identifica por un valor clave "20". Como se describe en la presente memoria descriptiva, un enrutador basado en software puede estar configurado para analizar el sufijo de una URL o un parámetro dentro de una URL para determinar qué versión de una página web, o qué contenido en una página web, mostrar. Todo lo anterior puede aplicarse a las URL que no son tecleadas directamente por el usuario, sino que son recibidas de otro modo por el sistema (por ejemplo, URL generadas automáticamente por otra página o código asociado a la página en el sitio web). El sistema también puede admitir varios enrutadores de software definidos simultáneamente, y el sistema de creación de sitios web 100 realiza un análisis inicial de una URL recibida para determinar cuál de los enrutadores de software definidos debe utilizar. Dicho análisis puede realizar su determinación basándose en la URL recibida, basándose en las definiciones incluidas en la base de datos de asociaciones de URL 220 o basándose en información o condiciones adicionales (tales como las condiciones del entorno del sistema).
[0248] Las primeras instrucciones 240 son un conjunto de instrucciones a las que accede el navegador web 141 y que pueden ser configurables a través del procesador 260. Las primeras instrucciones 240 ayudan al navegador web 141 a acceder remotamente a una biblioteca almacenada de herramientas, incluyendo las herramientas de construcción 121. La interfaz del editor en línea 243 puede ser la representación visual del software editor SCW 110 en el navegador web 141. La interfaz del editor en Línea 243 se utiliza para crear y editar la implementación del diseño del extremo delantero 126 de la página web indexable 125 con la ayuda de las herramientas de construcción 121 y el código de extremo delantero 126 y de extremo trasero 127 asociados de la página web indexable 125. De forma similar a las primeras instrucciones 240, las instrucciones adicionales (por ejemplo, las segundas instrucciones 250 y las terceras instrucciones 260, entre otras instrucciones) también pueden ser accesibles para el procesador 260 y el navegador web 141.
[0250] El navegador web 141 se utiliza para construir el sitio web 123 mostrando la interfaz de navegación 242 para navegar entre diferentes partes del sitio web 123 y la interfaz de editor en línea 213 para editar la parte a la que se ha accedido del sitio web 123. El código que representa al editor SCW 110 en el SCW 100 puede transmitirse al navegador web 141 para mostrar la interfaz de navegación 242 y la interfaz de editor en línea 243.
[0251] La Figura 3 ilustra una ruta de ejecución del código de extremo trasero asociado a un activador, de acuerdo con algunas realizaciones de la presente divulgación. Como se muestra en la FIG.3, un activador 310 puede resultar en la ejecución de código asociado con el extremo trasero 127. Un activador 310 puede producirse, por ejemplo, cuando un usuario de un dispositivo de visualización web 130 que interactúa con la página web indexable 125 del sitio web 123 realiza una acción específica (por ejemplo, un clic con el ratón o el panel táctil, una selección, un desplazamiento del cursor, una solicitud de recarga, la introducción de texto, la carga de contenido multimedia, etc.). Un activador 310 también puede ocurrir durante un evento de no-interacción. Por ejemplo, las acciones periódicas basadas en el tiempo o las actualizaciones de la base de datos podrían dar lugar a un desencadenante y a la ejecución del código del extremo trasero 127 y/o del extremo delantero 127. El activador 310 puede ser personalizable y adoptar muchas formas diferentes. Además, las interacciones que necesitan resultar en la ejecución de código relacionado con el extremo trasero 127 pueden realizarse a través de un evento programable 320. El evento programable 320 pasa el control al extremo trasero 127 para su ejecución a través de un gancho que une el extremo delantero 126 y el extremo trasero 127. El tipo de gancho utilizado para pasar el control entre el evento programable 320 y el extremo trasero 127 puede ser configurable y también puede depender del tipo de interacción u otro tipo de evento que causó el activador 310. El evento programable 320 utiliza uno o más de los ganchos gancho de datos 330, gancho web 340, o enrutador de enlace de gancho de datos 350, entre otros posibles tipos de ganchos, para pasar el control al extremo trasero 127 para ejecutar el código en él.
[0253] El Gancho de datos 330 puede utilizarse para pasar el control desde el evento programable 320 al extremo trasero 127 cuando cualquier actualización de datos es introducida por un usuario del dispositivo de visualización web 130 en la página web indexable 125 del sitio web 123 mostrado en el navegador web 131. Por ejemplo, el envío de un formulario puede considerarse una actualización de datos y el gancho de datos 330 puede utilizarse para pasar el control al extremo trasero 127, que en algunas realizaciones crea o actualiza una entrada de la base de datos. Del mismo modo, como otro ejemplo, la publicación de texto en un blog o interfaz de medios sociales puede ser una actualización de datos asociada con el Gancho de datos 330. El gancho de datos 330 también puede utilizarse para pasar el control al extremo trasero 127 mediante programación a través de una llamada a la API. Por ejemplo, una acción periódica basada en el tiempo activador310 puede hacer que las entradas de una base de datos más antiguas que un periodo sean borradas o marcadas como inactivas.
[0255] El gancho web 340 puede utilizarse para pasar el control desde el evento programable 320 al extremo trasero 127 cuando se importa una función de módulo web y se llama en el código que forma parte del extremo delantero 126. En algunas realizaciones, por ejemplo, el código que forma parte del extremo delantero 126 se denomina guion de extremo delantero y se ejecuta cuando un usuario del dispositivo de visualización web interactúa con los componentes del extremo delantero 126 de la página web indexable 125 del sitio web 123 que se muestra en el navegador web 123. Por ejemplo, el gancho web 340 puede basarse en que un usuario de la página web indexable 125 utilice una aplicación, realice una compra, se suscriba a contenidos de la página web indexable 125, etc.
[0257] El enrutador de enlace de gancho de datos 350 puede utilizarse para pasar el control desde el evento programable 320 al de extremo trasero 127 cuando una página web dinámica específica es solicitada por un usuario del dispositivo de visualización web 130 navegando a una determinada URL en el navegador web 131. Se puede navegar, por ejemplo, introduciendo una URL en la barra de direcciones del navegador web 131, haciendo clic en un hipervínculo de una página web indexable 125 del sitio web 123 que se esté viendo en el navegador web 131 o realizando una operación que navegue automáticamente a una URL predefinida o generada mediante programación. El enrutador de enlace de gancho de datos 350 ayuda a determinar el grupo de datos 210 y la función en código de extremo trasero 127 a ejecutar para aplicar el elemento de datos 211 del grupo de datos 210 determinado a la plantilla de una página web definida en la función en código de extremo trasero 127.
[0259] En algunas realizaciones, el enrutador de enlace de gancho de datos 350 puede funcionar junto con un enrutador basado en software. Por ejemplo, si un usuario que accede a la página web indexable 125 introduce una URL para la página web indexable 125, un enrutador basado en software puede determinar qué datos mostrar en la página web indexable 125 o incluso qué página web específica mostrar. Un enrutador puede asociarse a un prefijo que puede ser la primera parte de una URL (o a otro segmento de la URL). Por ejemplo, en la URL http://www.wix.com/label, "label" puede ser el prefijo. Además, en la URL http://www.wix.com/label/sub-label, "sub-label" puede ser un sufijo. Basándose en el segmento particular (por ejemplo, prefijo, sufijo o valor de un parámetro) de la URL que se proporciona, el enrutador puede determinar que debe mostrarse el contenido asociado a cualquiera de los dos, o que debe mostrarse una página web particular asociada a cualquiera de los dos. Por ejemplo, el prefijo puede asociarse a un enrutador, mientras que el sufijo puede pasarse al enrutador seleccionado para determinar a qué página acceder o qué datos utilizar en la página. Los enrutadores también pueden utilizarse para generar páginas virtuales o dinámicas completas a partir de los datos seleccionados y una plantilla. De este modo, la página web indexable 125 del sitio web 123 puede hacerse dinámica y personalizable en función de cómo interactúen los usuarios con ella.
[0261] El enrutador de enlace de gancho de datos 350 también puede funcionar para pasar control basado en eventos internos tras la interacción del usuario con el sitio web 123 en el dispositivo de visualización de sitio web 130. Por ejemplo, el enrutador de enlace de gancho de datos 350 podría registrarse para ejecutar una función antes de determinar un enrutamiento a una página como se ha descrito anteriormente para verificar si un usuario tiene permiso para acceder a la página enrutada. Los Enganches de datos 330 pueden ejecutarse opcionalmente antes o después de los enrutador de enlace de gancho de datos 350 para el mismo activador 310. Por ejemplo, un gancho de datos 330 podría ejecutarse después de que se ejecute una consulta contra la base de datos conectada al sitio web 123 para filtrar las entradas que ya no están activas (por ejemplo, un sitio web de una tienda comercial podría filtrar los productos que ya no se venden de los resultados de búsqueda de la consulta de la base de datos). De este modo, el sistema puede admitir el funcionamiento de varias combinaciones de ganchos y el encadenamiento de ganchos entre sí.
[0262] La Figura 4 es un diagrama de bloques que muestra una página web dinámica 125 ejemplar en modo de desarrollo a la que se accede en un dispositivo de desarrollo web 140 a través del navegador web 141, de acuerdo con algunas realizaciones de la presente divulgación. Como se muestra en la FIG. 4, La interfaz del editor en línea 243 está compuesta por la interfaz unificada 410 y la interfaz de vista previa 420.
[0263] La interfaz unificada 410 puede utilizarse para desarrollar o construir la página web indexable 125 de un sitio web 123. La interfaz unificada 410 puede proporcionar acceso a las herramientas de construcción 121, como se ha comentado anteriormente. Las herramientas de construcción 121 pueden incluir herramientas de edición 411 para ayudar a editar la página web indexable 125 del sitio web 123. En algunas realizaciones, la interfaz unificada 410 podría ser una sección separada visible en un navegador web 141 durante el desarrollo. En otras realizaciones, la interfaz unificada 410 podría ser un nombre colectivo para las distintas herramientas y secciones de la interfaz de usuario. En algunas realizaciones, la interfaz unificada 410 puede ser una sección separada de una página web mostrada o una ventana flotante o un marco. En algunas realizaciones, los componentes de la interfaz unificada 410 podrían flotar dentro de una sección del navegador web 141.
[0264] El Extremo delantero 126 y el Extremo trasero 127 podrían mostrarse o representarse en un modo de edición juntos o en ventanas separadas. En algunos casos, sólo pueden mostrarse de uno en uno. Asimismo, el Extremo trasero 127 puede no ser específico de la página web 125 o del sitio web 123 que se muestra, y parte o la totalidad del mismo puede ser compartido entre sitios web y desarrolladores de diferentes sitios web. Cuando un desarrollador guarda el sitio web 123, el extremo delantero puede guardarse en forma de extremo delantero 126.
[0265] La interfaz de vista previa 420 ayuda a los usuarios a visualizar el sitio web 123 que se está construyendo mostrando las páginas web 125 como en el mundo real, es decir, como se mostrarían en el navegador web 131 en el dispositivo de visualización web 130 que muestra la página web virtual 421. Cada página web virtual 421 puede estar asociada a un Identificador único 422. En algunas realizaciones, el Identificador único 422 es una URL o segmento de URL almacenado en la base de datos del área del sitio 124 junto con otras URL 210. También son posibles otras formas de Identificador 422.
[0266] La Figura 5 es un diagrama de bloques que muestra una página web dinámica o virtual ejemplar en modo de desarrollo, de acuerdo con algunas realizaciones de la presente divulgación. Por ejemplo, como se ha descrito anteriormente en relación con la Figura 4, la página web dinámica o virtual puede ser la página web virtual 421.
[0267] Tal como se muestra en la FIG. 5, interfaz unificada 410 muestra herramientas de construcción 121 y Página web indexable 125. En esta ilustración ejemplar, extremo delantero 126 se muestra utilizando un editor WYSIWYG para editar visualmente el contenido de la página (por ejemplo, texto, gráficos, widgets, etc.). En algunas realizaciones, el extremo delantero 126 puede editarse directamente como código. En algunas realizaciones, las herramientas de construcción 121 son una sección de la interfaz de usuario dentro de la interfaz unificada 410. En otras realizaciones, se puede acceder a las herramientas de construcción 121 mediante elementos de menú en la interfaz de editor en línea 243. En algunas realizaciones, las herramientas de creación de sitios web seleccionadas en herramientas de creación 121 pueden arrastrarse y soltarse en la sección de extremo delantero 126 de la interfaz unificada 410. El extremo delantero 126 de la página web indexable 125 muestra la disposición visual de las herramientas de construcción 121.
[0268] En algunas realizaciones, el extremo trasero 127 se muestra como una ventana flotante dentro de la interfaz unificada 410. En otras realizaciones, el extremo trasero 127 podría ser una sección separada similar al extremo delantero 126. El código que representa al extremo trasero 127 puede estar oculto y no mostrarse a menos que se solicite. En algunas realizaciones, se muestra todo el código del módulo de extremo trasero 127 todo el tiempo, y en otras realizaciones sólo se muestra el código del módulo de extremo trasero 127 asociado a un único elemento de las herramientas de construcción 121.
[0269] La SCW 100 puede configurarse para generar automáticamente código esqueleto al seleccionar un elemento de las herramientas de construcción 121 y colocar el elemento en el extremo delantero 126. El código esqueleto generado que se muestra en el extremo trasero 127 puede incluir, por ejemplo, función Shell 521 y código Shell 522. La función Shell 521 y el código Shell 522 juntos representan un evento programable 320 en código ejecutado por un activador 310. En algunas realizaciones, como se ilustra, la función Shell de clic en botón 521 es un código que representa el evento de hacer clic en un botón. La activación de un clic en un botón da lugar a un evento programable de clic en botón.
[0270] La Figura 6 es un diagrama de flujo que ilustra el procedimiento 600 de desarrollo de la funcionalidad 127 del extremo trasero, de acuerdo con algunas realizaciones de la presente divulgación. En algunas realizaciones, el procedimiento 600 puede ser ejecutado por componentes del SCW 100, como se ha comentado anteriormente.
[0271] Tal como se muestra en la FIG.6, en la etapa 610, la SCW 100 recibe una solicitud de acceso a las herramientas de construcción 121 en la base de datos de área de sitio 124 de un usuario del dispositivo de desarrollo web 140 cuando el usuario realiza una solicitud de desarrollo del sitio web 123 a través del navegador web 141. Como se ha comentado anteriormente, algunos ejemplos de herramientas de construcción 121 incluyen widgets, gráficos y otros contenidos. En la etapa 620, el SCW 100 transmite las primeras instrucciones 240 a petición del dispositivo de desarrollo del sitio web 140 a través del navegador web 141. La solicitud es recibida por el SCW 100 a través de la red 160. La solicitud se envía al sitio web SGC 120. El sitio web SGC 120 proporciona acceso a las primeras instrucciones 240 solicitadas por el procesador 260 y son transmitidas al navegador del sitio web 141. Las primeras instrucciones 230 proporcionan acceso a las herramientas de construcción 121 almacenadas en la base de datos del área del sitio 124 y que permiten construir el extremo delantero 126 y el de extremo trasero 127 de la página web 125.
[0272] En la etapa 630, el SCW 100, al recibir una solicitud del dispositivo de desarrollo de sitios web 140 a través de una red 160 para utilizar una herramienta dentro de las herramientas de construcción 121, genera automáticamente el código esqueleto de una herramienta seleccionada en las herramientas de construcción 121 basándose en las reglas. Por ejemplo, como se ha descrito anteriormente en relación con la Figura 5, el código del esqueleto puede estar asociado a un evento, como un clic del ratón, una flotación, una selección de contenido, etc.
[0273] En la etapa 640, el SCW 100 puede transmitir el código esqueleto al dispositivo de desarrollo de sitios web 140 para que se muestre en el navegador web 141.
[0274] En la etapa 650, el SCW 100 puede proporcionar acceso a la funcionalidad personalizada de extremo trasero 127 asociada con la página web 123 cuyo extremo delantero 126 se está editando o creando. Como se ha comentado anteriormente, la funcionalidad de extremo trasero 127 puede adoptar varias formas diferentes y puede configurarse para que se produzca en función de varios eventos definidos.
[0275] En la etapa 660, el SCW 100 puede recibir especificaciones de un usuario del dispositivo de desarrollo de sitio web 140 a través del navegador web 141 para configurar el evento programable 320 para activar la funcionalidad de extremo trasero personalizada 127.
[0276] En la etapa 670, el SCW 100 puede recibir del usuario del dispositivo de desarrollo de sitio web 140 a través del navegador web 141 código editable por el usuario que implementa la funcionalidad de extremo trasero 127. El usuario puede editar el código, por ejemplo, cambiando la funcionalidad del código, actualizando el código, etc.
[0277] En la etapa 680, el SCW 100 puede almacenar el código editable por el usuario editado en la base de datos de área de sitio 124 tal como se recibe del dispositivo de desarrollo de sitio web 140 a través de la red 160. El código editable por el usuario editado puede entonces estar listo para su despliegue para proporcionar funcionalidad personalizada de extremo trasero 127 para la página web indexable 125.
[0278] La Figura 7 es un diagrama de flujo que ilustra un procedimiento 700 para activar la ejecución de código en el extremo trasero 127, de acuerdo con algunas realizaciones de la presente divulgación. El procedimiento 700 puede realizarse junto con el procedimiento 600, como se ha comentado anteriormente. De acuerdo con la discusión anterior, el Procedimiento 700 puede realizarse en el sistema de SCW 100.
[0279] Tal como se muestra en la FIG.7, un usuario de un dispositivo de visualización de páginas web 130 puede activar 310 un evento programable 320 asociado con el extremo trasero 127 ya sea mediante una transición en una página web indexable 125 como se muestra en la etapa 711, cuando un usuario del dispositivo de visualización de páginas web 130 interactúa con la página web indexable 125 como se muestra en la etapa 712, o cuando el usuario introduce una actualización en una página web indexable 125 y da como resultado la Activación 310 como se muestra en la etapa 713. Por ejemplo, la etapa 711 puede implicar que un usuario haga clic en un hipervínculo anidado en la página web indexable 125 asociado con otra página web parte del mismo sitio web 123. Del mismo modo, la etapa 711 puede implicar que un usuario haga clic en un hipervínculo "siguiente" o "continuar" en la página web indexable 125 para ver una página relacionada posterior. La etapa 712 puede implicar, por ejemplo, que el usuario pase el cursor por encima de un gráfico o texto de la página web indexable 125, que haga una pausa durante un tiempo predefinido, que haga clic en una imagen o texto de la página web indexable 125, etc. la etapa 713 puede implicar que el usuario actualice contenido textual en la página web indexable 125, cargue una imagen o un archivo de vídeo en la página web indexable 125, rellene un formulario en la página web indexable 125, un temporizador de periodo que dé lugar a determinadas acciones, una actualización de la base de datos, etc.
[0280] En la etapa 720, el SCW 100, al recibir una notificación de un evento programable 320, accede al activador 310 en respuesta que está asociado con el evento programable 320. Como se discutió anteriormente, el evento programable 320 puede basarse en varios tipos de ganchos, como un gancho de datos 330, gancho web 340, enrutador de enlace de gancho de datos 350, u otros. Los ganchos asociados con el evento programable 320 pueden implicar el acceso a datos internos de un sitio web 123 (por ejemplo, WixData) almacenados en la base de datos del área del sitio 124. En la etapa 730, el SCW 100 puede obtener opcionalmente datos externos a la base de datos de área de sitio en línea 124 y al navegador web remoto 141 (por ejemplo, de una base de datos externa, de otro sitio web, de un servicio remoto, etc.). En algunas realizaciones, dichos datos pueden utilizarse como parte del evento programable 320.
[0281] En la etapa 740, la SCW 100 puede solicitar al procesador 260 que ejecute el código de extremo trasero 127 editable por el usuario editado. En consecuencia, tras el evento programable 320, puede producirse una funcionalidad de extremo trasero personalizada en la página web indexable 125. Como se ha comentado anteriormente, esta funcionalidad de extremo trasero personalizada puede definirse en términos de su funcionalidad, fuente de datos y temporización mediante la aportación del usuario. El usuario puede tener un control guiado sobre la creación y edición de código (por ejemplo, no tener que codificar funciones enteras desde cero, sino que se le proporcionen plantillas o muestras de código) sobre cada uno de estos atributos de la funcionalidad de extremo trasero personalizada.
[0283] Los sistemas y procedimientos coherentes con la presente divulgación también están dirigidos a sistemas de alojamiento de sitios web bajo demanda, incluyendo funcionalidad para alojar sitios web, servir sitios web a clientes, monitorizar la carga de sitios web y responder a la dinámica de carga de sitios web. En algunas realizaciones, la instancia ejecutable bajo demanda puede monitorizar la actividad de uso del sitio web y automáticamente poner en marcha o eliminar algunas o todas las instancias de ejecución. Además, como se explica más adelante, las instancias de ejecución del servidor web creadas para servir sitios o páginas web pueden incluir combinaciones de código genérico del sitio web y código específico del sitio o de la página, lo que da como resultado un servicio receptivo y muy eficiente de sitios y páginas web altamente personalizados e individualizados.
[0285] En general, cuando los usuarios interactúan con los sitios web, pueden realizar una variedad de solicitudes HTTP. Por ejemplo, se puede realizar una petición HTTP inicial para cargar una página web (que podría, en algunas situaciones, desencadenar peticiones HTTP adicionales para cargar elementos adicionales de la página, como imágenes o scripts). Además, un usuario puede realizar peticiones HTTP en mitad de la sesión (por ejemplo, seleccionar un valor para un campo, hacer clic en una imagen hipervinculada, etc.). Además, un usuario puede realizar una solicitud HTTP relacionada con datos, tal como por ejemplo a través del envío de un formulario. Además, un usuario puede realizar una solicitud HTTP de extremo trasero, que podría activar la funcionalidad de extremo trasero (por ejemplo, a través de código de extremo trasero, como se describe en la presente memoria descriptiva).
[0287] Para acelerar el proceso de carga de páginas y gestión de solicitudes HTTP, el sistema (por ejemplo, el SCW 100) puede configurarse para utilizar el arranque rápido de contenedores docker o código sin servidor que están configurados para un sitio web o página específicos. En algunas realizaciones, como se discute en la presente memoria descriptiva, un conjunto de contenedores de espera u otros recursos informáticos virtuales pueden ser proporcionados con todo el código relevante no específico del sitio, pero sin ningún código específico del usuario o del sitio. A continuación, el sistema puede escuchar en un puerto activo una solicitud a un servidor para un sitio web específico. Si existe un contenedor activo u otro recurso informático virtual asociado al sitio web específico, el sistema puede conectarse a él. De lo contrario, el sistema puede utilizar un contenedor en espera del grupo e inyectar en él el contenido específico del sitio solicitado, o indicarle que cargue dicho contenido. Una vez cargado el contenido específico de un sitio determinado, el contenedor se une a un grupo de contenedores asociados a dicho sitio. Como ya se ha comentado, el contenido inyectado a nivel de sitio puede o no incluir las páginas reales del sitio. Tal información de la página del sitio puede ser, por ejemplo, material real de la página listo para el navegador (por ejemplo, una colección de código HTML, CSS y JavaScript), datos de definición del sitio subyacentes (por ejemplo, utilizando archivos XML o expresiones JSON) que se convierten en material listo para el navegador mediante código del lado del cliente o del lado del servidor (como un módulo visor de SCW), o código de extremo delantero o de extremo trasero (por ejemplo, código JavaScript invocado por la página para ejecutarse en el cliente, en el servidor o en ambos).
[0288] La Figura 8 representa un diagrama de bloques de un sistema de instancia de ejecución de servidor web bajo demanda 800, de acuerdo con algunas realizaciones de la presente divulgación. Como se muestra en las FIG.8, El sistema bajo demanda 800 incluye un procesador 260, memoria 820 para almacenar los sitios web servidos actualmente o recientemente, y almacenamiento persistente 830 para almacenar todos los sitios web disponibles para ser servidos. En algunas realizaciones, el sistema bajo demanda 800 también puede incluir o estar asociado con un servidor proxy 840 para ayudar a determinar si se necesita una nueva instancia de ejecución de servidor web para servir una petición de sitio web.
[0290] El sistema SCW 100 y el sistema bajo demanda 800 almacenan y acceden al código para la edición del sitio web y el servicio de peticiones web, respectivamente. El editor SCW 110 se utiliza para presentar páginas web de sitios web para solicitudes de edición, recibidas desde el dispositivo de desarrollo web 140. Las instancias de ejecución del servidor web se instancian con definiciones de código y página creadas y editadas utilizando el editor SCW 110 y almacenadas en la base de datos del área del sitio 124 para visualizar la página web indexable 125 durante la edición del sitio web 123 así como en tiempo de ejecución. En algunas realizaciones, el sistema bajo demanda 800 puede ser un subsistema dentro de la SCW 100. En algunas otras realizaciones, el SCW 100 y el sistema bajo demanda 800 pueden compartir el acceso al extremo delantero 126 y al extremo trasero 127 de la página web indexable 125 del sitio web 123. En algunas realizaciones, el almacenamiento persistente 830 puede ser una base de datos similar a la base de datos del área del sitio 124 en la SCW 100. Mientras que el SCW 100 puede almacenar el módulo de acceso 126 en formato de datos estructurados, el sistema bajo demanda 800 puede transformar el módulo de acceso 126 en un formato de código comprendido por el Navegador web 131 del dispositivo de visualización web 130. A diferencia del SCW 800, el sistema bajo demanda 800 suele tener un acceso de sólo lectura a los extremos delanteros 126 y extremos traseros 127 almacenados de una página web indexable 125 (cuando se utiliza para servir sitios web en tiempo de ejecución). Pero, cuando se utiliza junto con el editor SCW 110, el sistema bajo demanda 800 puede modificar el extremo delantero 126 y/o el extremo trasero 127 del sitio web 125 y otros componentes del sitio web 125.
[0291] Debe aclararse que el editor SCW 100 puede trabajar conjuntamente con el sistema bajo demanda 800 (siendo el código del editor parte del código genérico del servidor del sitio web 824), pero el editor en sí mismo puede funcionar como una capa por encima del sistema bajo demanda 800, y puede no afectar directamente a su funcionalidad y decisiones (por ejemplo, la asignación de instancias de ejecución para atender las peticiones entrantes).
[0293] El procesador 260 puede estar asociado con uno o más servidores que alojan elementos del sistema 800 bajo demanda. Por ejemplo, el procesador 260 puede estar asociado a un único servidor o a un conjunto coordinado (por ejemplo, una granja) de servidores. Además, en algunas realizaciones cada uno de los elementos (por ejemplo, cada elemento dentro de la memoria 820, cada elemento dentro del almacenamiento persistente 830, el servidor proxy 840, etc.) puede tener su propio procesador 260 (por ejemplo, como parte de un servidor dedicado). Independientemente del número o tipo de procesadores 260, cada uno de los elementos mostrados en el sistema bajo demanda 800 es capaz de funcionar tanto de forma independiente como coordinada.
[0295] La memoria 820 puede tener una o más instancias de ejecución de servidor web para servir sitios web o páginas a clientes. Las instancias en uso 821 pueden ser instancias de ejecución de servidores web que están actualmente o activamente sirviendo sitios web. Las instancias disponibles 822, por otro lado, pueden ser un conjunto de instancias de servidor web disponibles en la memoria 820 que actualmente no alojan ningún sitio web específico pero que están disponibles para hacerlo. En algunas realizaciones, el número de instancias de ejecución del servidor web en instancias disponibles 822 puede ser un número constante. En algunas otras realizaciones, el número de instancias de ejecución de servidor web en instancias disponibles 822 puede variar y depender del número de instancias de ejecución de servidor web en instancias en uso 821. Por ejemplo, si hay un total de 10.000 instancias de ejecución, un aumento de las instancias en uso 821 puede significar una disminución de las instancias disponibles 822, y viceversa. El número de instancias de ejecución de servidor web en instancias disponibles 822 también puede ser un porcentaje del número de instancias de ejecución de servidor web en instancias en uso 821. Las instancias en uso 821 pueden, en algunas realizaciones, estar representadas por una estructura de datos que contiene un identificador único que identifica la instancia de ejecución 823 del servidor web y otras instancias que actualmente sirven sitios web. En algunas realizaciones, puede mantenerse una estructura de datos similar por cada sitio web alojado por el sistema bajo demanda 800 y todas estas estructuras de datos representan colectivamente instancias en uso 821.
[0297] Una instancia de ejecución de servidor web 823 puede ser una de las instancias en uso 821 que sirve peticiones a un sitio web con la ayuda de un servidor web. La instancia de ejecución del servidor web 823 puede incluir el código genérico del servidor web 824 y el código específico del N del sitio web 833. El código genérico del servidor web 824 puede, por ejemplo, ser un código común incluido en todas las instancias de ejecución del servidor web. Por ejemplo, tal código común puede incluir elementos subyacentes del sistema de instancia de ejecución del servidor web (sistemas operativos, servidores web (por ejemplo, Apache), servidores de bases de datos, etc.) En algunas realizaciones, también puede incluir un editor o entorno de ejecución de SCW 100 junto con servicios externos y complementos comunes. Además, en algunas realizaciones, el código común puede incluir elementos comunes del lado del servidor a nivel de la aplicación del sitio web, tales como las bibliotecas y el código relacionados con los principales elementos comunes, tales como las aplicaciones verticales SCW 100, etc. El código común también puede incluir elementos de componentes comunes (por ejemplo, galerías), especialmente para los sitios web co-alojados que se tratan más adelante. Para todo lo anterior, el código genérico puede incluir elementos reales del lado del servidor (que pueden almacenarse y ejecutarse en el servidor), así como elementos del lado del cliente (almacenados en el servidor y cargados en peticiones de páginas web al cliente en tiempo de ejecución SCW 100 en ejecución). En algunas realizaciones, diferentes grupos de sitios web pueden incluir diferentes códigos genéricos de servidor de sitios web 824. Así, por ejemplo, un grupo de sitios web de propiedad común puede tener un código genérico de servidor de sitio web 824 común. Esto también puede aplicarse, por ejemplo, a varios sitios basados en el mismo marco de aplicación de mercado vertical (por ejemplo, restaurantes u hoteles). Alternativamente, diferentes sitios web pueden tener su propio código genérico de servidor de sitio web 824, que puede pertenecer a todas las páginas web dentro de cada sitio web.
[0299] El código específico del sitio web N 834 puede incluir el código específico del sitio web o página que está siendo servido por la instancia de ejecución del servidor web 823 (tal como el código de extremo delantero 126 o de extremo trasero 127 creado por el desarrollador/diseñador del sitio web 1261540 para el sitio específico). La instancia de ejecución de servidor web 823 puede servir un sitio o página web que incluya el código específico de sitio web N 834 utilizando un servidor web (por ejemplo, Apache, Tomcat, Nginx, etc.) o un servidor específico de SCW. El código específico del sitio web N 834 puede incluir, por ejemplo, código para realizar funcionalidades exclusivas del sitio web o página específicos, tales como funcionalidad de carrito de la compra, procesamiento de pagos, acceso a bases de datos, integración o ejecución de aplicaciones, funciones de enrutador basadas en software, etc. La discusión anterior y aquí presente se refiere al código específico de sitio web 834 relacionado con un sitio web o página dados, y correspondientemente a la instancia de ejecución de servidor web 823 que puede servir solicitudes provenientes de clientes que utilizan el sitio web o página dados. Sin embargo, el sistema 800 bajo demanda puede implementarse a diferentes niveles de granularidad de código específico. El nivel de granularidad típico puede ser a nivel de sitio, es decir, en el que el código específico de sitio web 834 cubre un sitio entero - que es un nivel típicamente óptimo para la reutilización de la instancia de ejecución de servidor web 823. No obstante, el sistema puede aplicarse con un nivel de granularidad de un grupo de sitios (para un grupo de sitios muy similares), un sitio entero, una sección de sitio (es decir, un conjunto de páginas) y una sola página. Para los grupos de sitios, las partes comunes para numerosos sitios también pueden incluirse en el código genérico de servidor de sitios web 824 como se indicó anteriormente.
[0300] La instancia de ejecución de servidor web 826 de las instancias disponibles 822 puede utilizarse para servir el mismo sitio web servido por la instancia de ejecución de servidor web 823 de las instancias en uso 821 inyectando código específico de sitio web N 833 en la instancia de ejecución de servidor web 826. De este modo, la instancia de ejecución del servidor web 823 puede generar (y servir) sitios y páginas web individualizados basándose en el código específico de N de sitio web 834 único asociado a cada sitio o página web.
[0302] El almacenamiento persistente 830 puede incluir código genérico y específico para todos los sitios web alojados por el sistema bajo demanda 800 en la primera ubicación de memoria 831 y la segunda ubicación de memoria 832, respectivamente. El código genérico de servidor de sitio web 824 puede ser almacenado, por ejemplo, en el almacenamiento persistente 830 en la primera ubicación de memoria 831. Los códigos específicos de sitio web 833 y 834 pueden ser almacenados en la segunda ubicación de memoria 832, y pueden ser códigos específicos de los sitios web 1 y N respectivamente. El almacenamiento persistente 830 puede, en varias realizaciones, ser un sistema de archivos distribuido, una base de datos u otro sistema de almacenamiento, y puede estar basado en la nube (por ejemplo, almacenamiento como servicio). La primera ubicación de memoria 831 y la segunda ubicación de memoria 832 pueden estar en diferentes ubicaciones del mismo sistema de almacenamiento o en diferentes sistemas de almacenamiento que juntos forman el almacenamiento persistente 830. En algunas realizaciones, el código específico de sitio web 833 y 834 pueden estar en diferentes ubicaciones de memoria secundaria o en la misma ubicación pero etiquetados por separado.
[0304] El código genérico de servidor web 824 que reside en la primera ubicación de memoria 831 del almacenamiento persistente 830 puede copiarse a una instancia de ejecución de servidor web similar a la instancia de ejecución de servidor web 823 después de hacer girar la instancia. De este modo, el código genérico de servidor de sitios web 824, así como cualquier código específico de sitio web 833-834, pueden integrarse para servir sitios o páginas web que incluyan sistemas comunes, marcos web, bibliotecas, componentes y complementos y elementos individualizados.
[0305] En diversas realizaciones, cada uno de los componentes de memoria 820, almacenamiento persistente 830 y servidor proxy 840 puede implementarse a través de una red informática local, una red informática en la nube o una red híbrida que comprende ambas arquitecturas. Algunos ejemplos de entornos de alojamiento en la nube pueden ser AMAZON WEB SERVICES, MICROSOFT AZURE, IBM CLOUD y otros, así como redes en la nube propias mantenidas por empresas de alojamiento de sitios web.
[0307] El servidor proxy 840 ayuda a determinar si un conjunto de instancias en uso 821 incluye una instancia de ejecución de servidor web disponible para servir una petición de un sitio web generada desde un navegador web 131 del dispositivo de visualización web 130. El servidor proxy 840 determina, por ejemplo, la disponibilidad de una instancia de ejecución de un servidor web interactuando con la memoria 820. Por ejemplo, la memoria 820 puede mantener una lista de instancias disponibles 822 e instancias en uso 821, puede sondear las instancias de ejecución de servidor web 823 y 826 para determinar su estado actual, o puede recibir otro tipo de información relativa a la disponibilidad de una instancia de ejecución de servidor web. En algunas realizaciones, el servidor proxy 840 puede gestionar peticiones HTTP (por ejemplo, de clientes) para acceder a un sitio o página web específicos, y determinar si el sitio o página web específicos ya están alojados en una instancia de ejecución de servidor web 823. Además, en algunas realizaciones, el servidor proxy 840 puede mantener una tabla de estado 941 para su uso en la determinación del estado de las instancias disponibles 822 y las instancias en uso 821. Dicha tabla de estado puede identificar tales recursos y los sitios o páginas web que ya albergan.
[0309] La Figura 9 representa un diagrama esquemático de la interacción entre los componentes del sistema bajo demanda 800, de acuerdo con algunas realizaciones de la presente divulgación. Como se muestra en la FIG. 2, el gestor de instancias de ejecución de servidor web 950 del sistema bajo demanda 800 gestiona instancias de ejecución de servidor web comunicándose con las instancias de ejecución de servidor web 823 y 826 y el servidor proxy 840. En algunas realizaciones, el gestor de instancias de ejecución de servidores web 950 puede determinar si es necesario añadir nuevas instancias de ejecución de servidores web a las instancias disponibles 822. Esto puede ocurrir, por ejemplo, si se produce un aumento del tráfico asociado a un determinado sitio o página web que se aloja. En algunas realizaciones, el aumento de la carga de tráfico puede predecirse basándose en el conocimiento previo inferido de la información de tráfico periódica recopilada para el sitio en el pasado. La información de tráfico anterior puede incluir datos de tráfico mensuales, semanales, diarios y por hora, recopilados para comprender las tendencias estacionales y otros momentos de mayor uso del sitio, y añadir automáticamente más instancias de ejecución del servidor web que sirvan a un sitio web concreto. En algunas otras realizaciones, el gestor de instancias de ejecución del servidor web 950 puede determinar si una instancia de las instancias en uso 821 está inactiva. En esta situación, se pueden desperdiciar recursos, ya que las instancias en uso 821 están operativas o en funcionamiento, a pesar de no tener ninguna petición de clientes a la que responder con sitios o páginas web. Por lo tanto, como se discute más adelante, cualquier instancia en uso 821 inactiva puede ser desactivada o cerrada. De forma similar al proceso de añadir nuevas instancias de ejecución de servidores web para un sitio web, las predicciones, como se ha comentado anteriormente, basadas en información de uso previa, pueden utilizarse para cerrar instancias cuando haya menos tráfico previsto. El gestor de instancias de ejecución del servidor web 950 puede tomar la determinación de añadir más instancias al conjunto de instancias disponibles 822 y/o marcar una instancia en instancias en uso 821 como inactiva delegando la determinación al servidor proxy 840. El servidor proxy 840, como se ha indicado anteriormente, puede incluir la tabla de estado 941 para ayudar a determinar si añadir o eliminar instancias de ejecución de servidor web de las instancias en uso 821 e instancias disponibles 822. La tabla de estado 941 puede mantener información asociando instancias En-uso 821 e instancias disponibles 822 particulares con su estado actual, estado histórico, o estado futuro proyectado. Tal información de estado puede identificar sitios web o páginas específicas que estén alojando, puedan alojar en el futuro o hayan alojado en el pasado. Además, la tabla de estado 841 puede incluir más información (por ejemplo, cuánto tiempo las instancias en uso 821 y las instancias disponibles 822 han estado alojando sitios web o páginas, cuánto tiempo las instancias en uso 821 y las instancias disponibles 822 han estado inactivas, etc.).
[0310] La Figura 10 es un diagrama de flujo que ilustra un procedimiento 1000 para responder a una petición web enviada para un sitio web, de acuerdo con algunas realizaciones de la presente divulgación. El procedimiento 1000 en la Figura 10 identifica dos caminos para servir peticiones web entrantes recibidas por el sistema bajo demanda 800 desde un navegador web 131 del dispositivo de visualización web 130. Cualquier requisito de configuración para servir la solicitud podría resultar en la copia del código específico del sitio web solicitado a una instancia de ejecución del servidor web que sirve la solicitud para acceder a un sitio web específico.
[0311] Tal como se muestra en la FIG.10, en la etapa 1010, el sistema bajo demanda 800 almacena el código genérico de servidor de sitio web 824 en la primera ubicación de memoria 831 del almacenamiento persistente 830. Como se ha comentado anteriormente, esto puede implicar el almacenamiento de código común a un grupo de sitios web (por ejemplo, todos los que pertenecen a un propietario común o se basan en un marco de sitio vertical común) o común a un grupo de páginas dentro de un sitio web. Además, el código genérico de servidor de sitio web 824 puede estar asociado con una agrupación definida y arbitraria de sitios o páginas web. Como se ha comentado anteriormente, el código genérico del servidor web 824 puede incluir código que especifique piezas comunes de software de diferentes capas, incluyendo sistemas operativos, marcos web, bibliotecas de software y componentes y complementos del sitio web, así como el propio código del editor y visor del SCW 100.
[0312] En la etapa 1020, el sistema bajo demanda 800 puede almacenar el código específico de sitio web N 834 en la segunda ubicación de memoria 832 del almacenamiento persistente 830. Como se ha comentado anteriormente, el código específico de N de sitio web 834 puede ser específico de un sitio o página web en particular. El código específico del sitio web 834 puede incluir, por ejemplo, un widget, una aplicación o una funcionalidad personalizada de extremo trasero o de extremo delantero. Además, el código específico de N de sitio web 833 puede funcionar como un enrutador para un sitio o página web en particular, como se discutió anteriormente, en el que uno o más segmentos de una URL ingresada por un usuario, o proporcionada de otra manera, determina cómo el sitio o página web debe ensamblar su contenido (por ejemplo, imágenes personalizadas, texto, hipervínculos, formularios, características de comercio electrónico, contenido personalizado, etc.).
[0313] En la etapa 1030, el sistema bajo demanda 800 puede recibir una solicitud para acceder a un sitio web recibida desde un navegador web 131 en un dispositivo de visualización web 130. El sistema bajo demanda 800 gestiona la petición verificando si el sitio web o la página solicitada está siendo servida actualmente por una o más instancias de ejecución de servidor web en las instancias en uso 821. Como se ha comentado anteriormente, esto puede implicar consultar las propias instancias en uso 821, consultar el servidor proxy 840 u obtener un informe de otro servicio que monitorice las instancias en uso 821. Haciendo referencia a una tabla de consulta o tabla de estado, se puede confirmar el funcionamiento actual (o la ausencia del mismo) de las instancias en uso 821. En algunas realizaciones, un único servidor puede servir a múltiples sitios web o múltiples clientes del mismo sitio, y la carga de tráfico y la actividad en un servidor en particular puede ser rastreada y tenida en cuenta a la hora de determinar qué servidor utilizar para responder a solicitudes adicionales.
[0314] En la etapa 1040, el sistema bajo demanda 800 verifica si la instancia de ejecución de servidor web 823 u otras instancias de ejecución de servidor web en instancias en uso 821 sirven el sitio web solicitado. En caso afirmativo, el proceso 1000 puede en algunas realizaciones saltar a la etapa 1070, que se discute más adelante.
[0315] Si la respuesta en la etapa 1040 es no, el proceso 1000 puede proceder a la etapa 1050. Si ninguna de las instancias de ejecución de servidor web en instancias en uso 821 sirve el sitio web solicitado, entonces la solicitud puede ser reenviada a una instancia de ejecución de servidor web disponible en instancias disponibles 822. En algunas realizaciones, una de las instancias de ejecución del servidor web en instancias disponibles 822 puede ser seleccionada para servir el sitio web solicitado. En otras realizaciones, como se muestra en las FIG.10, instancia de ejecución del servidor web 826 en instancias disponibles 822 recibe la petición para servir.
[0316] En la etapa 1060, puede enviarse una solicitud para buscar el código específico de sitio web 833 en la segunda ubicación de memoria 832 que coincida con el sitio web solicitado. Por ejemplo, como se ilustra, el código específico 833 del sitio web 123 es el código coincidente si la solicitud se recibió para el sitio web 1. En algunas realizaciones, el código específico de sitio web 833 que coincide con el sitio web solicitado se identifica y se copia en la instancia de ejecución del servidor web 826. La instancia de ejecución de servidor web 826 se añade a la lista de instancias en uso 821 (por ejemplo, en una tabla de estado, o en el servidor proxy 840), y se elimina de la lista de instancias disponibles 822. La solicitud es respondida (por ejemplo, al cliente) por la instancia de ejecución del servidor web 826. El proceso 1000 puede entonces repetirse (por ejemplo, repetirse a la etapa 1010, 1020, o 1030). Además, en la etapa 1060, el código específico de sitio web 833 puede ser inyectado en la instancia de ejecución de servidor web 826, como se discutió anteriormente, para su integración en la construcción de un sitio web específico o página solicitada por el usuario.
[0317] La Figura 11 es una ilustración del sistema bajo demanda 800 configurado para determinar si un sitio web está alojado, y generar o instanciar instancias de ejecución, de acuerdo con algunas realizaciones de la presente divulgación. Como se muestra en la FIG.11, el servidor proxy 840 se utiliza para determinar las etapas para gestionar una solicitud de acceso al sitio web 123 recibida a través de la Red 160 desde el navegador web 131 del dispositivo de visualización web 130. Tal determinación puede resultar en el manejo inmediato de la solicitud por el gestor de instancia de ejecución de servidor web 950 o la instanciación de una instancia de ejecución de servidor web en instancias disponibles 822 usando código específico del sitio web solicitado antes de manejar la solicitud.
[0318] Tal como se muestra en la FIG.11, en la etapa 1110, el sistema bajo demanda 800 puede recibir una solicitud para el sitio web 123 a través de una red 160. La solicitud puede proceder de un ordenador cliente o de una aplicación, como se ha comentado anteriormente. La solicitud puede ser una solicitud HTTP, HTTPS u otro tipo de solicitud de red. En la etapa 1120, el sistema bajo demanda 800 determina la mejor manera de servir el sitio web 123 solicitado. Como se discutió anteriormente, la determinación puede incluir la identificación de si una solicitud puede ser manejada por un conjunto actual de instancias en uso 821 o si se requiere una instancia de ejecución de servidor web adicional. Por ejemplo, el sistema bajo demanda 800 puede determinar que la carga actual en las instancias En uso 821 ha superado un umbral de uso (por ejemplo, umbral de número de instancias, cantidad de ancho de banda utilizado, porcentaje de ancho de banda utilizado, nivel de uso de recursos del servidor como memoria o potencia del procesador, etc.). En ese caso, se puede determinar que una o más instancias disponibles 822 deben ser puestas en marcha o utilizadas para satisfacer la demanda del sitio web o página en particular. Además, como se ha comentado anteriormente, el sistema bajo demanda 800 puede intentar predecir un estado de carga futuro de las instancias En uso 821. Esta predicción puede basarse, por ejemplo, en los niveles de carga anteriores. Basándose en el nivel de carga previsto para las instancias en uso 821, el sistema bajo demanda 800 puede igualmente determinar que una o más instancias disponibles 822 deben ser puestas en marcha o utilizadas para satisfacer la demanda prevista para el grupo de sitios web, sitio web, conjunto de páginas o página en particular. El sistema bajo demanda 800 también puede dirigir dicha solicitud entrante a una de las instancias En uso 821 (para proporcionar el mejor tiempo de respuesta), y paralelamente decidir poner en marcha una o más instancias disponibles 822 para que estén disponibles para futuras solicitudes relacionadas con el sitio web o página en cuestión.
[0319] En la etapa 1121, como parte del proceso de determinación, el sistema bajo demanda 800 puede pasar el control al gestor de instancia de ejecución del servidor web 950 junto con la solicitud del sitio web 123 (por ejemplo, una copia de la solicitud, o información sobre la solicitud). La solicitud puede ser una petición de acceso a una página web indexable del sitio web 123, el envío de un formulario u otros tipos de solicitudes.
[0320] En la etapa 1122, el gestor de instancia de ejecución de servidor web 950 puede delegar la determinación al servidor proxy 840 para ayudar a determinar cómo manejar la solicitud para servir el sitio web 123. Esto puede implicar los tipos de toma de decisiones comentados anteriormente, incluyendo una determinación del estado de carga actual asociado con el sitio web 123, proyecciones de carga futura para el sitio web, etc.
[0321] En la etapa 1123, el servidor proxy 840 puede hacer referencia a la tabla de estado 941 en el servidor proxy 840 para las instancias en las instancias en uso 821 que pueden servir el sitio web solicitado. En algunas realizaciones, la búsqueda en la Tabla de Estados 941 puede implicar buscar en una columna denominada "sitio web" 1143 en la tabla una URL de sitio web coincidente. También son posibles otros identificadores (por ejemplo, URL, nombre de cuenta, nombre arbitrario, etc.). En algunas realizaciones, la etapa 1122 ocurre periódicamente incluso cuando el sistema bajo demanda 800 no ha recibido una petición para servir un sitio web - ya que el sistema bajo demanda 800 puede monitorizar periódicamente los niveles de carga basándose en las tendencias históricas de tráfico del sitio web y puede activar o desactivar automáticamente las instancias de ejecución del servidor web excepto cuando la tendencia actual del tráfico sugiera lo contrario. En algunas realizaciones, el gestor de instancia de ejecución de servidor web 950 recibe la petición para el sitio web 123 tras un fallo en la gestión de la petición, indicando la no disponibilidad de una instancia de ejecución de servidor web para servir la petición para el sitio web 123.
[0322] En la etapa 1123, el servidor proxy 840 puede enviar una petición a una instancia de ejecución de servidor web en instancias disponibles 822 para elegir la primera instancia de ejecución de servidor web 826 disponible para ser marcada para servir petición para el sitio web 123. En otras realizaciones, la instancia de ejecución del servidor web 826 puede elegirse basándose en una política que tenga en cuenta las diferencias entre las instancias de ejecución del servidor web 826 que las hace adecuadas o más óptimas para gestionar la solicitud (por ejemplo, ubicación geográfica, aplicaciones en ejecución, memoria disponible, potencia de procesamiento, nivel de fragmentación de disco/memoria, etc.).
[0323] En la etapa 1124, el sistema bajo demanda 800 selecciona una instancia de ejecución de servidor web en instancias disponibles 822 para servir la petición para el sitio web 123. En algunas realizaciones, la instancia de ejecución de servidor web 826 es seleccionada para servir la petición del sitio web 123.
[0324] En la etapa 1125, la instancia de ejecución de servidor web 826 puede añadirse al conjunto de instancias en uso 121 inyectando código específico de sitio web 123833 en la instancia de ejecución de servidor web 826. En algunas realizaciones, el sistema bajo demanda 800 puede solicitar al servidor proxy 840 que actualice la Tabla de Estados 941 con la entrada para la instancia de ejecución de servidor web 826. La tabla de estado 841 puede así cambiar, incluyendo la adición de una fila con identificadores de instancia 1142 y sitio web 1143 en la tabla de estado. En algunas realizaciones, la primera instancia disponible, por ejemplo, la instancia de ejecución de servidor web 826, puede ser seleccionada para ser inyectada con el código específico de sitio 833. Tras esta inyección, la instancia de ejecución del servidor web 826 sería eliminada del conjunto de instancias disponibles 822.
[0326] En otras realizaciones, la selección puede basarse en la proximidad geográfica a la ubicación de la solicitud del sitio web 123 o en el número de solicitudes web potenciales que podrían originarse desde una determinada ubicación geográfica. En algunas realizaciones, múltiples instancias de ejecución del servidor web pueden ser inyectadas con el código específico del sitio web 123833 y añadidas al conjunto de instancias en uso 821.
[0328] La determinación 1120 de gestionar el sitio web 123 solicitado puede tener además un umbral de tiempo de espera (por ejemplo, 10 o 100 milisegundos). El periodo de tiempo de espera puede coincidir con el estándar web general para servir peticiones de páginas web. Las instancias de ejecución del servidor web que forman parte de las instancias disponibles 822 ayudan a reducir el tiempo de activación de las instancias cuando se realiza una nueva petición de sitio web. De este modo, se reducen los problemas de arranque en frío de los sistemas de creación de sitios web convencionales anteriores.
[0330] En la etapa 1130, la instancia de ejecución de servidor web 826 puede servir la petición para el sitio web 123 utilizando el código específico de sitio web 123833. Como se ha comentado anteriormente, al servir un sitio web o una página generada utilizando el código específico de sitio web 123833, el contenido del sitio web puede adaptarse al usuario o a la forma en que el usuario llegó al sitio (por ejemplo, utilizando un enrutador basado en software). En algunas realizaciones, la propia etapa de inyección puede modificar el material inyectado, por ejemplo, adaptándolo al usuario / plataforma / dispositivo específico que realiza la solicitud o a otras condiciones "ambientales" (país, idioma, base de datos a la que se accede, historial de acceso del usuario, etc.). El código cliente que inicia la solicitud de red puede añadir parámetros o información adicionales a la solicitud de red para que el módulo de inyección pueda realizar dicha adaptación. La información adicional puede añadirse directamente (por ejemplo, como URL añadida u otros parámetros de solicitud) o indirectamente (por ejemplo, estando disponible a través de una solicitud adicional, almacenamiento previo en una base de datos u otro procedimiento).
[0332] La Figura 12 representa una instanciación de elementos de infraestructura de servidor con un sitio web, de acuerdo con algunas realizaciones de la presente divulgación. Las técnicas de la FIG.12 puede practicarse en los sistemas descritos anteriormente y descritos a lo largo de esta divulgación.
[0334] Tal como se muestra en la FIG. 12, el sitio web 123 puede ser servido a través de una instancia de ejecución de servidor web copiando el código específico 833 del sitio web 123 al contenedor 1221 o a la máquina virtual 1222. En algunas realizaciones, el sitio web 123 puede ser servido por un proceso separado del sistema operativo 1223 (por ejemplo, a través de código sin servidor). El código específico 833 del sitio web 123 puede incluir el de extremo delantero 126, el de extremo trasero 127 y el código de referencia de complemento 1226, tal y como se ha comentado anteriormente en relación con la funcionalidad de extremo trasero personalizada que puede proporcionarse en los sitios web. En algunas realizaciones, extremo delantero 126, extremo trasero 127, y código de referencia de complemento 1226 pueden ser copiados individualmente al contenedor 1221, máquina virtual 1222, o proceso 1223. En algunas realizaciones, el código genérico 824 del servidor web puede copiarse al contenedor 1221 o a la máquina virtual 1222 (que posteriormente incluiría el código específico 833 del sitio web 123) como parte de la instanciación de la instancia 826 de ejecución del servidor web.
[0336] En algunas realizaciones, el uso del sistema bajo demanda 800, tal como a través de una implementación de código sin servidor, puede mejorar los tiempos de procesamiento y la utilización del servidor, al tiempo que reduce la latencia para los usuarios. En las realizaciones de código sin servidor, no hay servidores dedicados que gestionar. En su lugar, el código (por ejemplo, extremo delantero 126, extremo trasero 126 y código de referencia de complemento 1226) puede proporcionarse como código y ejecutarse bajo demanda en la nube. En la medida en que se cobre a los usuarios por la ejecución del código, se les puede cobrar proporcionalmente a la ejecución real del código (en lugar de basarse en los costes de infraestructura dedicada o en los servidores que deben permanecer asignados a un sitio determinado mientras esperan las solicitudes entrantes). Alternativamente, esto puede reducir sustancialmente los costes de un proveedor de SCW en línea, al tiempo que le permite ofrecer un mejor servicio a sus usuarios. En algunas realizaciones, el sistema bajo demanda 800 puede definir un conjunto de lenguajes de programación o marcos web compatibles para procesar código sin servidor. El sistema bajo demanda 800 también puede soportar WebSockets, streaming o comunicaciones en trozos, protocolos adicionales (por ejemplo, TCP y UDP, etc.), memoria como funcionalidad de servicio (por ejemplo, para funciones de código sin estado y sin efectos secundarios) y opciones nativas sin servidor (por ejemplo, Go, Rust, C, etc.). Al poder procesar código sin servidor bajo demanda, se pueden reducir los problemas de los sistemas convencionales de alojamiento de sitios web (por ejemplo, experimentar un "arranque en frío" para cargar instancias de máquinas o sitios web). El tiempo de inicio de los sitios o páginas web (incluido cualquier código en ejecución) puede ser inferior a 100 ms, lo que reduce la latencia y mejora la experiencia del usuario. Por el contrario, algunos sistemas convencionales experimentan un tiempo de inicio de sitios web o páginas de aproximadamente 600 ms a 2 segundos, incluyendo las funciones de sobrecarga de programación, inicio de una instancia, inicio de un proceso (por ejemplo, ejecución de código) y funcionamiento del gestor de peticiones.
[0337] La instancia de ejecución de sitio web 826 puede servir múltiples sitios web a través del contenedor 1221, la máquina virtual 1222 o el proceso 1223. En algunas realizaciones, la instancia de ejecución de servidor web 826 puede tener un conjunto de recursos de contenedor 1221, máquina virtual 1222 y proceso 1223 dedicados a ella o disponibles para ella. Múltiples contenedores 1221, máquinas virtuales 1222, y procesos 1223 pueden servir a múltiples sitios web. En algunas realizaciones, las variantes de la instancia de ejecución del sitio web 826 que pueden servir a múltiples sitios web pueden incluir un único contenedor 1221, máquina virtual 1222, o proceso 1223 que sirve a múltiples sitios web. El contenedor 1221, la máquina virtual 1222 y el proceso 1223 que sirven a múltiples sitios web pueden necesitar que se copie el código específico de múltiples sitios web para servir varias peticiones de sitios web.
[0338] La Figura 13 representa técnicas de monitorización de carga de sitios web alojados y gestión de instancias en uso 821, de acuerdo con algunas realizaciones de la presente divulgación. Estas técnicas pueden practicarse en los sistemas descritos anteriormente.
[0339] Tal como se muestra en la FIG. 13, gestor de instancia de ejecución de servidor web 950 (como se ha comentado anteriormente en relación con la FIG.11) supervisa o se comunica con el monitor de carga 1310 para determinar si alguno de los sitios web atendidos por el sistema bajo demanda 800 tiene una carga superior a la deseada o presupuestada. Como se ha comentado anteriormente, esto puede determinarse en función de las características actuales, anteriores o futuras de la carga. En algunas realizaciones, la carga futura puede predecirse basándose en el conocimiento previo basado en la carga periódica recopilada del sitio web/servidor web que aloja múltiples sitios web en el pasado. La carga pasada puede incluir datos mensuales, semanales, diarios y horarios para comprender las tendencias estacionales y otros momentos de uso más activo del sitio y añadir automáticamente más instancias de ejecución de servidores web que sirvan a un sitio web concreto o a un grupo de sitios web servidos por un servidor web.
[0340] Cuando los sitios web tienen una carga relativamente más ligera, algunas instancias se eliminan del conjunto de instancias en uso 821 para un sitio web concreto y se mueven de nuevo a instancias disponibles 822. En algunas realizaciones, el monitor de carga 1310 enumera todos los sitios web 1311 alojados por el sistema bajo demanda 800 y su carga 1312 en forma tabular. En algunas realizaciones, la tabla del monitor de carga 1310 que enumera la carga del sitio web puede formar parte de la tabla de estado 941 gestionada por el servidor proxy 840 o accesible a él. En algunas otras realizaciones, el monitor de carga 1310 puede ser una tabla separada en el servidor proxy 840. En otras realizaciones, el monitor de carga 1310 puede estar en la memoria 820 del sistema bajo demanda 800.
[0341] En algunas realizaciones, las instancias en uso 821 pueden ser una colección de conjuntos separados de instancias que alojan algunos o todos los sitios web del sistema bajo demanda 800. En algunas realizaciones, los sitios web 123 y 2, como se ilustra, son los sitios web alojados por el sistema bajo demanda 800. En varias realizaciones, las instancias asignadas del sitio web 1231320 y las instancias asignadas del sitio web 2 son 1330 son el conjunto de instancias de ejecución del servidor web del sitio web 123 y del sitio web 2. En algunas realizaciones, las instancias asignadas del sitio web 123 1320 y las instancias asignadas del sitio web 2 1330 se consideran conjuntamente instancias En uso 822.
[0342] La tabla de carga del monitor de carga 1310 puede ser actualizada por el gestor de instancias de ejecución del servidor web 950 directamente o puede solicitar al servidor proxy 840 que la actualice. En algunas realizaciones, la tabla de carga del monitor de carga 1310 es actualizada periódicamente por el servidor proxy 840 basándose en el número de solicitudes de acceso a los sitios web 1311 alojados por el sistema bajo demanda 800. La tabla de carga del monitor de carga 1310 puede ser actualizada basándose en otras estadísticas de uso del sitio web. Por ejemplo, en el caso de un sitio web con gran contenido multimedia, las estadísticas de uso podrían incluir el uso de memoria y ciclos de procesador para atender las solicitudes del sitio web que impliquen la conversión de vídeo y audio a diferentes formatos en función del entorno del dispositivo utilizado por el usuario. Las instancias de ejecución del servidor web de las instancias en uso 821 se mueven a las instancias disponibles 822 cuando el sitio web que alojan tiene una carga menor. Del mismo modo, cuando un sitio web tiene una carga mayor, las instancias de ejecución del servidor web de las instancias disponibles 822 se marcan como instancias en uso 821 y el código específico del sitio web con mayor carga se inyecta en estas instancias de ejecución del servidor web.
[0343] En algunas realizaciones, basándose en que el servidor proxy 840 observa que el sitio web 123 tiene una carga que es más ligera, el sistema bajo demanda 800 puede hacer que la instancia de ejecución de servidor web 826 se mueva del conjunto de instancias asignadas 1320 del sitio web 123 al conjunto de instancias disponibles 822. En algunas realizaciones, la instancia de ejecución del servidor web 1323 se mueve a las instancias disponibles 822. En algunas realizaciones, múltiples instancias de ejecución de servidores web se mueven a instancias disponibles 822 al mismo tiempo. El servidor proxy 840, al observar que el sitio web 2 tiene una carga más pesada en el monitor de carga 1310, puede mover la instancia de ejecución del servidor web 1127 del conjunto de instancias disponibles 822 al conjunto de instancias asignadas del sitio web 21330. Como parte de la etapa 1342, el sitio web 2 puede tener código específico del sitio o de la página que se inyecta en la instancia de ejecución del servidor web M 1127 antes de moverlo a las instancias asignadas del sitio web 21330. Por supuesto, la etapa 1341 y la etapa 642 son independientes y no tienen que ocurrir juntas o en un orden específico.
[0344] La Figura 14 representa la monitorización de instancias de ejecución de servidores web disponibles para alojamiento, de acuerdo con algunas realizaciones de la presente divulgación. Como se muestra en la FIG.14, gestor de instancia de ejecución de servidor web 950 monitoriza el número de instancias disponibles 822. El gestor de instancias de ejecución de servidor web 950 puede hacer girar nuevas instancias y añadirlas al conjunto de instancias disponibles 822 cuando el número de instancias de ejecución de servidor web en el conjunto de instancias disponibles 822 sea inferior a un umbral, como se ha comentado anteriormente. A la inversa, el gestor de instancias de ejecución de servidor web 950 puede apagar instancias en el conjunto de instancias disponibles 822 cuando el número de instancias de ejecución de servidor web es superior a un umbral. Estas técnicas de activación y desactivación de instancias de ejecución pueden tener en cuenta la demanda actual, anterior o futura prevista de determinados sitios web o páginas, tal y como se ha comentado anteriormente.
[0345] En algunas realizaciones, el gestor de instancias de ejecución de servidor web 950 puede esperar una cierta cantidad de tiempo antes de hacer girar nuevas instancias para asegurarse de que las instancias inactivas identificadas a través de la tabla de estado 841 no se añaden de nuevo a la agrupación. De forma similar, en algunas realizaciones, el gestor de instancias de ejecución del servidor web 950 puede esperar un cierto tiempo antes de apagar las instancias disponibles para asegurarse de que no se requiere inyectar una instancia con código específico del sitio web para gestionar una nueva petición de sitio web. El apagado y encendido de instancias puede ser un proceso que requiera mucho tiempo y el gestor de instancias de ejecución del sitio web 150 evita hacerlo frecuentemente esperando después de descubrir que un número de instancias disponibles se desvía de un número umbral.
[0346] En algunas realizaciones, el gestor de instancias de ejecución de servidor web 950 gira y cierra instancias de ejecución de servidor web cuando el número actual de instancias en el conjunto de instancias disponibles 822 difiere del umbral en un número o porcentaje especificado. Esto permite un rango de valores para el número de instancias disponibles 822 a estar presentes en cualquier punto del tiempo. En otras realizaciones, el gestor de instancias de ejecución del servidor web 850 puede reaccionar inmediatamente a la desviación de un umbral para poner en marcha y apagar instancias.
[0347] La Figura 15 representa un sistema ejemplar de prueba en tiempo real de un sitio web, de acuerdo con algunas realizaciones de la presente divulgación. Como se muestra en la FIG. 15, El sistema de pruebas en tiempo real de sitios web 1500 incluye procesador 260, memoria 820, base de datos de área de sitio 124 para almacenar datos utilizados por sitios web, entorno de despliegue 1510 que proporciona acceso a datos relacionados con un sitio web al que se está accediendo. En algunas realizaciones, el sistema de pruebas en tiempo real de sitios web 1500 también puede incluir el entorno de prueba 1520 que proporciona acceso a datos relacionados con un sitio web al que se accede con fines de prueba. Se pueden utilizar términos alternativos para prueba/implantación, tales como desarrollo/tiempo de ejecución, puesta en escena/producción y pruebas/actividades.
[0348] En algunas realizaciones, el sistema bajo demanda 800 puede ser un subsistema incluido en su totalidad en el sistema de pruebas en tiempo real del sitio web 1500. En algunas realizaciones, el sistema de pruebas en tiempo real del sitio web 1500 puede estar compuesto parcialmente por, o puede incluir, el sistema bajo demanda 800.
[0349] El entorno de despliegue 1510 puede ser un conjunto de componentes de software que se ejecutan en una instancia de ejecución de servidor web en un sistema bajo demanda 800.
[0350] El entorno de prueba 1520 puede ser un conjunto de componentes de software que se ejecutan en una instancia de ejecución de servidor web en el sistema bajo demanda 800. En algunas realizaciones, se genera un entorno de prueba 1520 basado en el tipo de dispositivo utilizado para acceder a un sitio web. Por ejemplo, el acceso al sitio web 123 a través del navegador web 141 en el dispositivo de visualización web 140 puede dar lugar a la creación del entorno de prueba 1520, que puede ser diferente en apariencia y diseño si el dispositivo de visualización web 140 es un ordenador de sobremesa o un teléfono móvil. En otras realizaciones, se puede generar un entorno de prueba 1520 en función del usuario que acceda al sitio web. Por ejemplo, un desarrollador/diseñador 1540 que solicita acceso al sitio web 123 puede dar lugar a la creación del entorno de prueba 1520. En algunas realizaciones, un entorno de prueba 1520 puede ser compartido por varios usuarios. El Entorno de pruebas 1520 puede ser diferente para distintos usuarios. En algunas realizaciones, el entorno de prueba 1520 puede ser compartido a través de múltiples sitios web almacenados en la base de datos de área de sitio 124. En algunas realizaciones, una instancia del entorno de prueba 1520 puede estar siempre disponible, y el desarrollador/diseñador 1540 puede seleccionar entre acceder a un sitio web determinado a través del entorno de prueba 1520 o del entorno de despliegue 1510.
[0351] El usuario final 1530 puede acceder a un sitio web y a sus datos en un Entorno de despliegue 1510 a través de la red 160. En algunas realizaciones, el usuario final 1530 puede acceder al sitio web 123 a través del navegador web 131 en el dispositivo de Visualización del sitio web 130, de acuerdo con las realizaciones anteriores.
[0352] El desarrollador/diseñador 1540 puede acceder a un sitio web y a sus datos en un entorno de prueba 1520 a través de la red 160. El desarrollador/diseñador 1540 puede acceder al sitio web 123 a través del navegador web 141 en el dispositivo de desarrollo de sitios web 140. En algunas realizaciones, el desarrollador/diseñador 1540 puede acceder al sitio web 123 en el Entorno de Implementación 1510 utilizando el navegador web 131 en el dispositivo de visualización web 130. Debe tenerse en cuenta que el dispositivo de visualización web 130 y el dispositivo de desarrollo 140 pueden ser el mismo dispositivo.
[0353] El usuario final 1530 y el desarrollador/diseñador 1540 pueden ser diferentes roles de un mismo usuario que accede al sitio web 123. En algunas realizaciones, un usuario puede cambiar de rol accediendo al sitio web 123 utilizando diferentes dispositivos. Por ejemplo, un usuario que accede al sitio web 123 utilizando el dispositivo de personal de vendedores SCW 150 o el dispositivo de desarrollo de sitios web 140 puede considerarse como desarrollador/diseñador 1540. Un usuario que accede al sitio web 123 utilizando el dispositivo de visualización del sitio web 130 puede considerarse usuario final 1530. Se puede acceder a un sitio web utilizando el entorno de despliegue 1510 o el entorno de prueba 1520 en función de si el usuario es el usuario final 1530 o el desarrollador/diseñador 1540 respectivamente. Además, se puede acceder a un sitio web utilizando el entorno de despliegue 1510 o el entorno de prueba 1520 en función de si la solicitud se originó en el dispositivo de Visualización del sitio web 130 o en el dispositivo de desarrollo del sitio web 140. En algunas realizaciones, se puede acceder a un sitio web utilizando el entorno de despliegue 1510 o el entorno de prueba 1520 basándose en una combinación de usuario y tipo de dispositivo.
[0355] La Figura 16a representa un diagrama esquemático de un Entorno de desarrollo 1510 para acceder a elementos de datos, de acuerdo con algunas realizaciones de la presente divulgación. Como se muestra en la FIG.16a, el entorno de despliegue 1510 puede solicitar al procesador 260 que ayude a acceder a los datos vivos 1610. El entorno de despliegue 1510 puede no acceder a los datos de prueba 1620, representados por una línea discontinua. La Figura 16b representa un diagrama esquemático de un entorno de prueba 1520 para acceder a elementos de datos, de acuerdo con algunas realizaciones de la presente divulgación. Como se muestra en la FIG.16b, el entorno de prueba 1520 puede solicitar al procesador 260 que ayude a acceder a los datos vivos 1610 y a los datos de prueba 1620. El desarrollador/diseñador 1540 que accede a un sitio web 123 utilizando el entorno de prueba 1520 puede solicitar elementos de datos asociados con la página web indexable 125 del sitio web 123. El entorno de prueba 1520 puede estar configurado para recibir solicitudes de elementos de datos de un usuario, y puede reenviar las solicitudes a los datos de prueba 1620. En algunas realizaciones, los datos de prueba 1620 pueden determinar si el elemento de datos solicitado está presente en los datos de prueba 1620 o reenviar la solicitud a los datos vivos 1610. En algunas realizaciones, el entorno de prueba 1520 puede determinar por sí mismo si solicitar datos vivos 1610 o datos de Pruebas 1620 para un determinado elemento de datos. En algunas realizaciones, el entorno de prueba 1520 puede acceder a los datos vivos 1610 y a los datos de prueba 1620 después de copiarlos en la memoria 820.
[0357] La Figura 17 es una ilustración del acceso desde un sitio web a datos en vivo y de prueba en el entorno de prueba 1520, de acuerdo con algunas realizaciones de la presente divulgación. Como se muestra en la FIG. 17, Se está accediendo a la página web indexable 125 del sitio web 123 utilizando el navegador web 141 en el dispositivo de desarrollo web 140. La página web indexable 125 y los elementos de datos asociados están siendo accedidos a través del entorno de prueba 1520.
[0359] La página web indexable 123 puede acceder tanto a los datos vivos 1610 como a los datos de prueba 1620 como parte del acceso a elementos de datos asociados con la página web indexable 125. En algunas realizaciones, todas las solicitudes de acceso a elementos de datos pueden enviarse primero a datos de prueba 1620. Los datos de prueba 1620 pueden filtrar las solicitudes de acceso a elementos de datos que pueden ser manejados por los propios datos de prueba 1620 antes de reenviar las solicitudes a los datos vivos 1610.
[0361] La Figura 18 representa la generación de datos de prueba utilizados en el entorno de prueba 1520 para probar sitios web, de acuerdo con algunas realizaciones de la presente divulgación. Como se muestra en la FIG.18, los datos vivos 1610 forman parte de los datos de prueba 1620. En algunas realizaciones, el orden de adición de los datos marcados como insertados 1730 y los datos marcados como borrados 1740 puede ser diferente. Los datos marcados como insertados 1730 y los datos marcados como borrados 1740 pueden ser recorridos concurrentemente para evitar agregar algo a los datos de prueba 1620 y a continuación borrar lo mismo marcado en los datos marcados como borrados 1740.
[0363] Los datos marcados como insertados 1730 y los datos marcados como borrados 1740 pueden persistir en la base de datos de área de sitio 124. En algunas realizaciones, los datos marcados como insertados 1730 y los datos marcados como borrados 1740 pueden residir en la memoria 920 hasta que la sesión para acceder al sitio web 123 en el entorno de prueba 1520 esté activa. Los datos marcados como insertados 1730 y los datos marcados como borrados 1740 pueden persistir en la base de datos del área del sitio 124 cuando una sesión se vuelve inactiva. Por ejemplo, el desarrollador/diseñador 1540 puede solicitar explícitamente que los datos marcados como insertados 1730 y los datos marcados como borrados 1740 persistan en la base de datos del área de Emplazamiento 124. En algunas realizaciones, los datos marcados como insertados 1730 y los datos marcados como borrados 1740 pueden compartir la misma ubicación en la base de datos del área del sitio 124. Los datos marcados como insertados 1730 y los datos marcados como borrados 1740 pueden persistir en función del número de solicitudes de lectura. Los elementos de datos dentro de los datos Marcados Insertados 1730 pueden persistir selectivamente en la base de datos de área de sitio 124. Los elementos de datos pueden persistir selectivamente en función de criterios adicionales, tales como el número de veces que se solicita la lectura de un elemento de datos o el tiempo durante el cual un elemento de datos en ellos no ha cambiado o el número de sesiones en que se ha accedido a los datos.
[0365] La Figura 19 es un diagrama de flujo que ilustra un Procedimiento 1900 para acceder a un sitio web en un entorno de despliegue, de acuerdo con algunas realizaciones de la presente divulgación.
[0366] Como se muestra en la Etapa 1910. Los elementos de datos que se actualizan y añaden al acceder a un sitio web en el entorno de despliegue 1510 se almacenan en los datos vivos 1610 de la base de datos de área de sitio 124. En la etapa 1920, los datos vivos 1610 almacenados en la base de datos de área de sitio 124 asociados con una página web indexable de un sitio web al que se accede en el entorno de despliegue 1510 son accedidos por el sistema de pruebas en tiempo real de sitio web 1500 como parte del servicio de páginas web solicitadas por un usuario. En la etapa 1930, los elementos de datos a los que se accede en la etapa 1920 se aplican a la página web indexable a la que están asociados para renderizar la página web en el navegador web 131 del dispositivo de visualización web 130 utilizado por el usuario final 1530.
[0367] La Figura 20 es un diagrama de flujo que ilustra un procedimiento 2000 para acceder a un sitio web en un entorno de prueba, de acuerdo con algunas realizaciones de la presente divulgación.
[0368] En la etapa 2010, el sistema de pruebas en tiempo real de sitio web 1500 puede recibir una solicitud para realizar pruebas en el sitio web (por ejemplo, el sitio web 123) almacenado en la base de datos común (por ejemplo, la base de datos de área de sitio 124). En la etapa 2020, el sistema de pruebas en tiempo real de sitio web 1500 maneja la solicitud de datos realizada como parte del proceso de prueba de un sitio web utilizando un entorno de prueba 1520. Por ejemplo, el sitio web 123 puede ser probado por el desarrollador/diseñador 1540 accediendo al sitio web 123 mediante el navegador web 141 del dispositivo de desarrollo de sitios web 140. Por ejemplo, el desarrollador/diseñador 1540 puede solicitar la página web indexable 125 del sitio web 123 escribiendo la URL. Además, en algunas realizaciones, la URL puede ser especificada por una aplicación. La solicitud incluye tanto la solicitud al extremo delantero 126 como los elementos de datos del grupo de datos 210 asociados a la página web indexable 125 del sitio web 123. Una solicitud de lectura de los datos puede realizarse como parte del proceso de acceso a una página web. Tal como se muestra en la FIG.20, en la etapa 2030, el sistema de pruebas en tiempo real del sitio web 1500 verifica si la prueba se ha completado. En algunas realizaciones, la prueba de un sitio web se considera completada si se accede al sitio web a través del entorno de prueba 1520 durante un cierto periodo de tiempo. Las pruebas pueden considerarse concluidas tras un determinado número de solicitudes de datos. La prueba también puede considerarse finalizada cuando el desarrollador/diseñador 1540 que accede a un sitio web a través del navegador web 141 del dispositivo de desarrollo de sitios web 140 cierra la pestaña o ventana del navegador utilizada para acceder al sitio web. Las pruebas también pueden considerarse finalizadas cuando el desarrollador/diseñador 1540 lo solicite explícitamente al sistema de pruebas en tiempo real del sitio web 1500. Si la respuesta a la etapa 2030 es negativa, el procedimiento 2000 puede volver a la etapa 2010 y estar listo para recibir la siguiente solicitud de datos. Si la respuesta a la etapa 2030 es afirmativa, el procedimiento 2000 puede proceder a la etapa 2040. En la etapa 2040, el procedimiento 2000 puede aplicar los cambios hechos a los elementos de datos y guardados en los datos de prueba 1620 a los elementos de datos correspondientes en los datos vivos 1610. La etapa 2040 puede ser opcional, ya que el desarrollador/diseñador 1540 puede solicitar, por ejemplo, que se abandonen los cambios de datos incorporados en los datos de prueba 1620.
[0369] En la etapa 2050, pueden borrarse todos los marcadores asociados con las actualizaciones de los elementos de datos realizadas durante la prueba del sitio web 123 en el entorno de prueba 1520.
[0370] La Figura 21 es un diagrama de flujo que ilustra el procedimiento 2100 para gestionar solicitudes de datos en el entorno de prueba 1520, de acuerdo con algunas realizaciones de la presente divulgación. El procedimiento 2100 en la Figura 21 identifica uno de cinco caminos ejemplares para manejar la solicitud entrante de elementos de datos asociados con un sitio web al que está accediendo un desarrollador/diseñador 1540.
[0371] Tal como se muestra en la FIG.21, en la etapa 2110, el sistema de pruebas en tiempo real del sitio web 1500 recibe una solicitud de datos en el entorno de prueba 1520. La solicitud de datos forma parte del acceso a un sitio web para realizar pruebas en el entorno de prueba 1520. Por ejemplo, un desarrollador/diseñador 1540 que accede a un sitio web 123 a través del dispositivo de desarrollo de sitios web 140 puede provocar una petición del elemento de datos 211 del grupo de datos 210 asociado con el sitio web 123.
[0372] En la etapa 2120, el sistema de pruebas en tiempo real de sitios web 1500 determina el tipo de la solicitud de acceso a elementos de datos asociados con un sitio web que se está probando. La determinación da lugar a que se tramiten distintos tipos de solicitudes. La petición de datos puede ser una petición de lectura para acceder a elementos de datos asociados con una página web que está siendo probada por el desarrollador/diseñador 1540 cuando solicitan una página web indexable escribiendo una URL. En algunas realizaciones, la solicitud de datos puede ser una solicitud de escritura para añadir un elemento de datos. Por ejemplo, el desarrollador/diseñador 1540 que prueba el sitio web 123 puede enviar un formulario en la página web indexable 125 solicitando la creación de un nuevo elemento de datos que se añadirá al grupo de datos 210. La solicitud de datos puede ser una solicitud de actualización para alterar el contenido de un elemento de datos asociado con el sitio web que está siendo probado por el desarrollador/diseñador 1540. La solicitud de datos puede ser una solicitud de borrado para eliminar un elemento de datos asociado con un sitio web que está siendo probado por el desarrollador/diseñador 1540.
[0373] En la etapa 2121, el sistema de pruebas en tiempo real de sitios web 1500 ha determinado en la etapa 2120 que la petición de datos es para buscar elementos de datos asociados con el sitio web que está siendo probado por el desarrollador/diseñador 1540, o para examinar el resultado de tal operación de búsqueda.
[0374] En la etapa 2122, el sistema de pruebas en tiempo real de sitio web 1500 ha determinado en la etapa 2120 que la solicitud de datos es para leer elementos de datos asociados con el sitio web que está siendo probado por el desarrollador/diseñador 1540.
[0375] En la etapa 2123, el sistema de pruebas en tiempo real de sitio web 1500 ha determinado en la etapa 2120 que la solicitud de datos es para añadir elementos de datos asociados con el sitio web que está siendo probado por el desarrollador/diseñador 1540.
[0376] En la etapa 2124, el sistema de pruebas en tiempo real de sitio web 1500 ha determinado en la etapa 2120 que la solicitud de datos es para actualizar elementos de datos asociados con el sitio web que está siendo probado por el desarrollador/diseñador 1540.
[0377] En la etapa 2125, el sistema de pruebas en tiempo real de sitio web 1500 ha determinado en la etapa 2120 que la solicitud de datos es para borrar elementos de datos asociados con el sitio web que está siendo probado por el desarrollador/diseñador 1540.
[0378] La Figura 22 es un diagrama de flujo que ilustra un procedimiento 2200 para gestionar peticiones de lectura en un entorno de prueba, de acuerdo con algunas realizaciones de la presente divulgación. El procedimiento 2200 en la Figura 22 identifica tres vías para determinar si es necesario responder a una solicitud de datos y, en caso afirmativo, si se deben utilizar elementos de datos de los datos de prueba 1620 o de los datos vivos 1610.
[0379] Tal como se muestra en la FIG.22, en la etapa 2122, se ha determinado en el procedimiento 2100 que una solicitud de datos recibida es una solicitud de lectura de elementos de datos en la base de datos de área de sitio 124 y la memoria 820.
[0380] En la etapa 2210, el sistema de pruebas en tiempo real del sitio web 1500 busca el elemento de datos solicitado en los datos de prueba 1620 y cuando se encuentra una coincidencia verifica si está marcado como eliminado. Si la respuesta en la etapa 2210 es afirmativa, el procedimiento 2200 puede proceder a la etapa 2120 y considera que el procedimiento 2200 está completo. En la etapa 2 se devuelve el mensaje de no se ha encontrado ningún elemento de datos. Por ejemplo, el desarrollador/diseñador 1540 que accede a la página web indexable 125 del sitio web 123 puede enviar una petición para el elemento de datos 1741 en los datos marcados como borrados 1740 de los datos de prueba 1620 dando como resultado un mensaje de "no se ha encontrado ningún elemento de datos".
[0381] Si la respuesta en la etapa 2210 es no, el procedimiento 2100 puede proceder a la etapa 2130. Como se muestra en la FIG. 22, en la etapa 2230, el sistema de pruebas en tiempo real del sitio web 1500 busca el elemento de datos solicitado en los datos marcados como insertados 1730 de los datos de prueba 1620.
[0382] Si la respuesta en la etapa 2230 es afirmativa, el procedimiento 2200 puede proceder a la etapa 2240. En la etapa 2240, el elemento de datos solicitado se encuentra en los datos de prueba 1620 y es devuelto. El elemento de datos solicitado puede estar en los datos marcados como insertados 1730 de los datos de prueba 1620 ya que se añadió como un nuevo elemento de datos previamente. Además, el elemento de datos solicitado puede estar en los datos marcados como insertados 1730 ya que fue actualizado mientras se probaba un sitio web previamente. Por ejemplo, la solicitud del desarrollador/diseñador 1540 para acceder al elemento de datos del Contacto Dos 1760 en el entorno de prueba 1520 resultará en que el elemento de datos 1732 en los datos marcados como insertados 1730 de los datos de prueba 1620 sea devuelto después de que el procedimiento 2200 ejecute la etapa 2240. El mismo elemento de datos cuando se solicita en el entorno de despliegue 1510 puede dar lugar a que se devuelva el elemento de datos 1752.
[0383] Si la respuesta en la etapa 2230 es no, el procedimiento 2200 puede proceder a la etapa 2250. En la etapa 2250, el elemento de datos solicitado es devuelto desde datos vivos 1610.
[0384] La Figura 23a es un diagrama de flujo que ilustra un procedimiento 2300 para actualizar elementos de datos en un entorno de prueba, de acuerdo con algunas realizaciones de la presente divulgación. El procedimiento 2300 en la Figura 23a define una ubicación para almacenar el elemento de datos actualizado solicitado mientras se prueba un sitio web.
[0385] Tal como se muestra en la FIG.23a, en la etapa 2124 se ha determinado en el procedimiento 2100 que una solicitud de datos recibida es una solicitud para actualizar un elemento de datos presente en los datos vivos 1610 o en los datos marcados como insertados 1730 de los datos de prueba 1620 mientras se prueba un sitio web.
[0386] En la etapa 2310, el sistema de pruebas en tiempo real del sitio web 1500 determina la ubicación del del elemento de datos que se solicita que se actualice comprobando primero en datos marcados como insertados 1730 de los datos de prueba 1620.
[0387] Si la respuesta a la etapa 2310 es afirmativa, entonces el procedimiento 2200 procede a la etapa 2320. En la etapa 2320, se actualiza un elemento de datos correspondiente al que se solicita actualizar.
[0388] Si la respuesta a la etapa 2310 es no, entonces el procedimiento 2200 procede a la etapa 2330 indicando que el elemento de datos solicitado para ser actualizado no fue actualizado en el pasado y está presente solamente en los datos vivos 1610. El elemento de datos en los datos vivos 1610 se copia en los datos marcados como borrados 1740 para evitar cualquier acceso futuro a los datos en entorno de prueba 1520.
[0389] En la etapa 2340, el sistema de pruebas en tiempo real del sitio web 1500 inserta el elemento de datos actualizado en los datos de prueba 1620. En algunas realizaciones, añadir un elemento de datos implica añadir una entrada en la base de datos y marcar en una columna adicional que se ha añadido a través del entorno de prueba. No se puede acceder al elemento de datos insertado en los datos marcados como insertados 1730 de los datos de prueba 1620 desde entorno de prueba 1620 mediante solicitudes en entorno de despliegue 1610. Por ejemplo, la solicitud del desarrollador/diseñador 1540 de actualizar el elemento de datos 1752 a través de la página web 123 da como resultado que el elemento de datos 1732 se inserte en los datos marcados como insertados 1730 de los datos de prueba 1620. La Figura 23b es un diagrama de flujo que ilustra otro procedimiento 2300 para actualizar elementos de datos en el entorno de despliegue 1510, de acuerdo con algunas realizaciones de la presente divulgación. El procedimiento asegura que los datos vivos 1610 estén disponibles en tiempo real para el desarrollador/diseñador 1540 que prueba un sitio web utilizando el entorno de prueba 1520.
[0390] En la etapa 2350, se recibe una solicitud para actualizar un elemento de datos en el entorno de despliegue 1510. En la etapa 2360, se actualiza un elemento de datos en los datos en vivo 1610 de acuerdo con la solicitud.
[0391] En la etapa 2370, se realiza una petición de búsqueda para identificar el elemento de datos actualizado en los datos vivos 1610 en la etapa 2360 contra los datos marcados como borrados 1740. Un elemento de datos correspondiente encontrado en los datos marcados como borrados 1740 fue actualizado o borrado en entorno de prueba 1520. Si la respuesta en la etapa 2370 es no, el procedimiento 2300 procede a la etapa 2380 donde la tarea se considera completada y el procedimiento 2300 sale.
[0392] Si la respuesta en la etapa 2370 es afirmativa, entonces el procedimiento 2300 procede a la etapa 2390. En la etapa 2390, el elemento de datos cuya actualización se ha solicitado a través del entorno de despliegue 1510 se actualiza en datos marcados como eliminados 1740. Esto resulta en que el elemento de datos que se actualiza en los datos vivos 1610 no se incluye en los resultados de la consulta como se discute en el proceso 2500 más adelante.
[0393] La Figura 23c es un diagrama de flujo que ilustra otro procedimiento 2300 para añadir elementos de datos en un entorno de prueba, de acuerdo con algunas realizaciones de la presente divulgación. El procedimiento 2300 en la Figura 23c define una ubicación para almacenar los nuevos datos que se soliciten añadir mientras se prueba un sitio web.
[0394] Tal como se muestra en la FIG.23c, en la etapa 2123 se ha determinado en el procedimiento 2100 que una solicitud de datos recibida es una solicitud para agregar un nuevo elemento de datos no presente en los datos vivos 1610 a los datos de prueba 1620 mientras se prueba un sitio web.
[0395] En la etapa 2392, el sistema de pruebas en tiempo real del sitio web 1500 inserta el elemento de datos en los datos de prueba 1620. En algunas realizaciones, añadir un dato implica añadir una entrada en la base de datos y marcar en una columna adicional que se ha añadido a través de entorno de prueba. No se puede acceder al elemento de datos insertado en los datos marcados como insertados 1730 de los datos de prueba 1620 desde entorno de prueba 1620 mediante solicitudes en entorno de despliegue 1610. Por ejemplo, el desarrollador/diseñador 1540 puede solicitar que se añada el elemento de datos 1731 a través del sitio web 123, lo que da lugar a que el elemento de datos 1731 se inserte en los datos marcados como insertados 1730 de los datos de prueba 1620.
[0396] La Figura 24 es un diagrama de flujo que ilustra un procedimiento 2400 para borrar elementos de datos del entorno de prueba, de acuerdo con algunas realizaciones de la presente divulgación. Como se muestra en la FIG. 24, el elemento de datos que se solicita eliminar puede presentarse en los datos vivos 1610 o puede haber sido añadido previamente a través del entorno de prueba y estar presente en los datos marcados como insertados 1730.
[0397] Tal como se muestra en la FIG.24, en la etapa 2125, se ha determinado en el procedimiento 2100 que una solicitud de datos recibida es una solicitud de eliminación de un elemento de datos en la base de datos de área de sitio 124 o en la memoria 820.
[0398] En la etapa 2410, el sistema de pruebas en tiempo real del sitio web 1500 puede insertar el elemento de datos que se solicita eliminar en datos Marcados como Eliminados 1740 de los datos de prueba 1620. Cualquier elemento de datos, tanto si se ha añadido como si se ha actualizado en el entorno de prueba, puede añadirse a los datos marcados como borrados 1740, ya que todos los elementos de datos de los datos marcados como borrados 1740 pueden omitirse cuando se solicitan elementos de datos asociados a un sitio web que se está probando.
[0399] En la etapa 2420, se busca el elemento de datos cuya eliminación se solicita en datos marcados como insertados 1730 de los datos de prueba 1620. El proceso 2300 se considera completado si no se encuentra tal elemento de datos en los datos de prueba 1620. Por ejemplo, el desarrollador/diseñador 1540 que prueba el sitio web 123 en el navegador web 141 hace una petición para borrar el elemento de datos 1741 resulta en el elemento de datos 1741 insertado en los datos marcados como borrados 1740. El elemento de datos 1741 no está presente en los datos marcados como insertados 1730 indica que no es necesario eliminar ningún dato y el proceso 2400 se considera finalizado. Si la respuesta en la etapa 2420 es no, entonces el procedimiento 2400 no ha encontrado un dato marcado como insertado 1730 un elemento de dato solicitado para ser borrado y el procedimiento 2400 procede a la etapa 2430 donde la tarea está completa y el procedimiento 2400 sale.
[0400] Si la respuesta en la etapa 2420 es afirmativa, entonces el procedimiento 2400 ha encontrado en los datos marcados como insertados 1730 un elemento de datos cuya eliminación se ha solicitado. En la etapa 2440, el elemento de datos de los datos de prueba 1620 se elimina de los datos marcados como insertados 1730.
[0401] La Figura 25 ilustra un proceso de superposición para generar los resultados de la consulta de datos de prueba, de acuerdo con algunas realizaciones de la presente divulgación. Como se muestra en la FIG.25, el procedimiento 2500 es un proceso de cuatro pasos que accede concurrentemente a los datos vivos 1610, a los datos marcados como insertados 1730, y a los datos marcados como borrados 1740 de los datos de prueba 1620.
[0402] Tal como se muestra en la FIG.25, en la etapa 1, se accede a los elementos de datos que coinciden con la consulta desde datos vivos 1610, datos marcados como insertados 1730 y datos marcados como borrados 1740. En algunas realizaciones, los elementos de datos son accedidos ejecutando una consulta en la base de datos del área del sitio 124 contra los datos vivos 1610, y los datos marcados como insertados 1730 y los datos marcados como borrados 1740 de los datos de prueba 1620. En algunas realizaciones, los resultados de las consultas pueden disponerse como una tabla fusionada 2510.
[0403] Los elementos de datos se ordenan de acuerdo con lo solicitado en la consulta. En algunas realizaciones, los elementos de datos se ordenan por la columna "B" en el 2510 en orden descendente. En algunas realizaciones, el orden puede incluir más de una columna. En algunas realizaciones, cuando no hay un orden solicitado se elige una columna al azar y se ordena en orden ascendente o descendente. En algunas realizaciones se añade una clave primaria a las columnas utilizadas en la clasificación.
[0404] En la etapa 2, el sistema recorre los elementos de datos en los datos vivos 1610, los datos Marcados Insertados 1730 y los datos marcados como borrados 1740 simultáneamente para seleccionar los elementos de datos que se incluirán en los datos de prueba 1620.
[0405] Para determinar los elementos de datos que se incluirán en la prueba 1720, se establece un puntero en el primer elemento de datos vivos 1610, datos marcados como insertados 1730 y datos marcados como borrados 1740. En algunas realizaciones, el puntero se coloca en el elemento de datos más bajo basado en la columna "B". Se compara el registro más bajo actual en datos vivos 1610, datos marcados como insertados 1730, y datos marcados como borrados 1740 para identificar el elemento de datos más bajo. El más bajo puede estar presente en múltiples lugares. Por ejemplo, los elementos de datos 2520 y 2530 son los elementos de datos más bajos de los datos vivos 1610 y los datos marcados como eliminados 1740 y tienen el mismo contenido.
[0406] Una vez identificado el elemento de datos más bajo, se determina si un elemento de datos debe incluirse en los datos de prueba 1620 basándose en las siguientes reglas. Si el elemento de datos existe tanto en los datos vivos 1610 como en los datos marcados como borrados 1740, se omitirá su inclusión en los datos de prueba 1620. Por ejemplo, los elementos de datos 2520 y 2530 tienen el mismo contenido y existen en los datos vivos 1610 y en los datos marcados como eliminados 1740, lo que indica que se solicitó anteriormente la eliminación del elemento de datos en el entorno de prueba 1520 mientras se probaba un sitio web. También podría haberse actualizado y que el elemento de datos 2560 fuera el elemento actualizado resultante.
[0407] Si el elemento de datos sólo existe en los datos vivos 1610, entonces se incluye en los datos de prueba 1620. Por ejemplo, el elemento de datos 2540 sólo está presente en los datos vivos 1610 indicando que no fue alterado o borrado en el entorno de prueba cuando se prueba un sitio web que está asociado con el elemento de datos 2540.
[0408] Si el elemento de datos sólo existe en datos marcados como insertados 1730, entonces se incluye en datos de prueba 1620. Por ejemplo, el elemento de datos 2540 sólo está presente en los datos marcados como eliminados 1740, lo que indica que se insertó como un nuevo elemento de datos o se insertó como parte de la actualización del elemento de datos 2520 mientras se probaba un sitio web.
[0409] Una vez que se incluye u omite un elemento de datos, sólo aquellas fuentes de elemento de datos que tenían el elemento de datos más bajo tienen sus punteros para desplazarse al siguiente elemento de datos. En algunas realizaciones, los punteros para los datos vivos 1610 y los datos marcados como borrados 1740 se mueven al siguiente registro después de la primera iteración del recorrido.
[0410] Al alcanzar el último elemento de datos en las tres fuentes de elementos de datos, el procedimiento 2500 termina y se obtienen los datos de prueba 1620. La tabla fusionada 2560 indica los elementos de datos más bajos identificados en cada iteración de la etapa 2 discutido anteriormente. Sólo se muestran rellenadas las fuentes que tenían el elemento de datos más bajo y el resto se dejan vacías. Por ejemplo, en la primera iteración de la etapa 2, los elementos de datos más bajos 2520 y 2530 tienen el mismo contenido se muestran como parte de sus respectivas fuentes datos vivos 1610, y datos marcados como borrados 1740 y datos marcados como borrados 1740 se deja vacío indicando que no tenía el elemento de datos más bajo. De forma similar, en la última iteración sólo los datos marcados como insertados 1730 tienen el elemento de datos más bajo 2550 indicado en la última fila de la tabla fusionada 2560.
[0411] La Figura 26 representa un diagrama de flujo que muestra las etapas de un procedimiento 2600 para editar una base de datos durante la previsualización de un sitio web, de acuerdo con algunas realizaciones de la presente divulgación. El procedimiento 2600 puede practicarse en los entornos de sistema descritos a lo largo de esta divulgación, como los de las FIGS.1, 2, 15 y otros.
[0413] Tal como se muestra en la FIG.26, la etapa 2602 puede implicar la recepción de uno o más grupos de elementos de datos (por ejemplo, de un usuario de un sistema de construcción de sitios web). Los elementos de datos, como se ha comentado anteriormente, pueden incluir una variedad de diferentes tipos de contenido, o registros de contenido, que pueden integrarse en un sitio web, tales como texto, imágenes, vídeos, anuncios, visualizaciones de salida de base de datos, etc. En algunas realizaciones, los elementos de datos pueden incluir además un conjunto de objetos de datos (por ejemplo, dos instancias de texto y una imagen). Cada grupo puede tener uno o varios elementos de datos. Así pues, un grupo puede definir un conjunto afín de uno o varios elementos. Por ejemplo, un primer sitio o página web (por ejemplo, un identificador de la página web) puede asociarse a un grupo que comprenda sólo texto, un segundo sitio o página web puede asociarse a un grupo que comprenda elementos de datos (cada uno de los cuales comprenda un texto y tres imágenes), un tercer sitio o página web puede asociarse a un grupo que comprenda elementos de datos que comprendan texto y vídeo, etc. A través de una interfaz de edición de sitios web, como se ha comentado anteriormente, el usuario puede identificar qué grupos de elementos de datos deben aparecer o estar asociados con páginas web individuales de un sitio web, o con determinadas plantillas de páginas virtuales.
[0415] Los grupos de datos pueden, en algunas realizaciones, ser entidades a nivel de sitio que pueden ser utilizadas y reutilizadas en múltiples páginas de un sitio web, o pueden ser entidades a nivel de propietario que pueden ser utilizadas y reutilizadas por un propietario de sitio web en particular. Además, los grupos de datos también pueden ser entidades a nivel de sistema (por ejemplo, una base de datos de códigos postales, descripciones de áreas geográficas, etc.) o entidades a nivel de página.
[0417] El procedimiento 2600 también puede incluir una etapa 2604 de almacenamiento de los grupos de uno o más elementos de datos en una base de datos de área de sitio 124, consistente con las realizaciones anteriores. Ejemplos de este tipo de bases de datos se han descrito anteriormente (por ejemplo, en relación con las FIGS.1,2, 15 y otras). Las bases de datos pueden estar configuradas para mantener cada grupo, mantener asociaciones entre los grupos y sitios web o páginas, o plantillas de páginas virtuales, y almacenar otros contenidos e información. Como se explica más adelante, cuando un usuario realiza modificaciones en una página web virtual durante un modo de vista previa, dichas modificaciones pueden traducirse en modificaciones de la base de datos en tiempo real, manteniendo así una base de datos actualizada para cada página web.
[0419] Además, el procedimiento 2600 puede incluir una Etapa 2606 de generación de una o más páginas web virtuales. Cada una de las páginas web virtuales puede representar elementos de datos (consistentes en uno o más objetos) que pueden mostrarse en modo de vista previa (durante el desarrollo) antes de que el sitio web real o sus partes actualizadas se pongan en marcha (es decir, se vuelvan visibles a través de Internet para otros usuarios). Para publicar posteriormente una colección de páginas web virtuales en modo directo, un usuario puede seleccionar una opción titulada "Publicar", "Publicar" o similar, que hará que la página web sea visible a través de Internet (ya que la publicación se realiza normalmente a nivel de sitio y no para una sola página). Una vez publicadas, las páginas virtuales (es decir, las instancias derivadas de la plantilla de página web 2704) pueden comportarse de forma similar a las páginas ordinarias (reales), aunque se generan dinámicamente. En algunas realizaciones, cada una de las páginas web reales no está diseñada con funcionalidad para actualizar la base de datos, mientras que las páginas web virtuales pueden estar diseñadas con esa funcionalidad. A modo de ejemplo, un sitio web de alquiler de hoteles puede mantener cinco plantillas de páginas virtuales diferentes para cinco tipos distintos de habitaciones disponibles en un hotel concreto (tales como cama individual, cama doble, etc.). Cada una de las plantillas de páginas virtuales puede estar asociada a su propio grupo de elementos de datos (es decir, registros para habitaciones del tipo dado), y cada habitación tendría así una página web virtual que podría ser visualizable y editable durante un modo de vista previa como página web virtual.
[0421] Además, el procedimiento 2600 puede incluir una etapa 2608 de mostrar cada grupo de al menos un elemento de datos en uno separado de los conjuntos de páginas web virtuales. Por ejemplo, en el caso hipotético anterior de un sitio web de hotel, durante el modo de vista previa cada una de las cinco plantillas de páginas web virtuales correspondientes a diferentes tipos de habitaciones de hotel puede tener sus grupos asociados de elementos de datos (por ejemplo, diferentes textos que describan las habitaciones, imágenes de las habitaciones, vídeos de las habitaciones, etc.). Los conjuntos de páginas web virtuales generados (es decir, las instancias) pueden mostrarse al usuario a través de un navegador u otro cliente, como se ha comentado anteriormente en relación con otras técnicas.
[0422] El procedimiento 2600 también puede incluir una etapa 2610, que comprende mostrar una herramienta de edición para permitir a un usuario editar una o más de las plantillas e instancias de página web virtual. Las plantillas pueden editarse como si fueran páginas normales. Las instancias pueden editarse sólo en modo de vista previa, ya que no son visibles como parte del proceso normal de navegación y edición de páginas del editor. En una realización alternativa, el sistema puede permitir la edición de instancias como parte del proceso regular de edición del sitio. Pueden utilizarse diversas herramientas de edición, como reglas y cuadrículas (por ejemplo, para alinear elementos de datos), selectores de arrastrar y soltar (por ejemplo, para mover elementos de datos con un cursor), inserción y edición de hipervínculos, integración de widgets o aplicaciones (por ejemplo, de una tienda de aplicaciones), inserción y edición de botones, creación y edición de textos, inserción y edición de imágenes, inserción y edición de vídeos, creación y edición de presentaciones de diapositivas, funcionalidad de desplazamiento del cursor, estilos de fondo, repetidores (por ejemplo, que crean múltiples versiones de un elemento o grupo de datos concreto), enrutadores basados en software (por ejemplo, que crean una versión diferente de una página web en función de un elemento de la URL utilizada para acceder a ella), etc. El sistema puede mostrar (y operar) diferentes subconjuntos de las herramientas de edición disponibles para plantillas e instancias, y también puede personalizar el subconjunto de herramientas de edición mostrado dependiendo del usuario, plantilla de página virtual, instancia específica, grupo de datos o elemento conectado subyacente, etc. Como se discute más adelante, un usuario puede hacer ediciones a las plantillas e instancias de la página web virtual a través de las herramientas de edición, y las ediciones pueden traducirse en ediciones a la base de datos que mantiene la información de los componentes y/o el contenido de las páginas web.
[0424] El procedimiento 2600 también puede incluir una etapa 2612 de asociar una URL única a cada página web virtual. Por ejemplo, un sitio web puede tener un nombre de dominio (por ejemplo, wix.com) y cada página dentro del sitio web puede tener un sufijo diferente (por ejemplo, wix.com/page1, wix.com/page2, wix.com/page3, etc.). Además, en algunos casos, las URL asociadas a páginas web virtuales pueden tener diferentes rutas (referidas a archivos o directorios) o valores de parámetros. En algunas realizaciones, se puede configurar un enrutador basado en software para el sitio web o para páginas web individuales. El enrutador basado en software puede ser configurable, por ejemplo, para asociar determinados prefijos de URL, rutas, segmentos o parámetros con determinadas páginas web. Cada una de las páginas web puede estar configurada para extraer datos diferentes de la base de datos que almacena los elementos de datos. En una implementación de JavaScript, por ejemplo, una solicitud entrante de una página web puede asociarse a un objeto que incluye información sobre la solicitud (por ejemplo, la URL, de dónde procede, de quién procede, etc.). El enrutador basado en software puede procesar esta información y decidir qué página web (posiblemente virtual) mostrar y qué elementos de datos incluir en ella.
[0426] Además, el procedimiento 2600 puede incluir una etapa 2614 de mostrar una característica seleccionable por el usuario (por ejemplo, botones, barras de desplazamiento, enlaces, etc.) que permite al usuario navegar a través de las páginas web virtuales para mostrar individual y dinámicamente cada una de las páginas web virtuales. Por lo tanto, en el ejemplo anterior, la función seleccionable por el usuario puede permitirle ver cada uno de los cinco conjuntos de páginas web correspondientes a diferentes tipos de habitaciones de hotel. Cada página puede seleccionarse dinámicamente y visualizarse como una página web virtual.
[0428] El Procedimiento 2600 puede incluir además una Etapa 2616 de recibir ediciones a uno o más atributos de página web virtual desde un usuario. Por ejemplo, utilizando la herramienta de edición descrita anteriormente, un usuario puede cambiar el fondo de una página, el diseño o la plantilla de una página, las aplicaciones o widgets integrados en una página, los prefijos o sufijos de URL asociados a una página, la funcionalidad de repetición dentro de una página, la funcionalidad de enrutador basado en software para una página, o realizar otros tipos de ediciones. Los cambios realizados en la plantilla de página web 2704 pueden escribirse directamente en la definición de la página de la plantilla en la base de datos del área del sitio 124. Los cambios realizados en las instancias de páginas virtuales podrán almacenarse en una base de datos independiente, que contendrá las adaptaciones a las instancias de páginas virtuales. De acuerdo con este esquema, las adaptaciones se indexarán con un índice único de la instancia de página virtual específica (por ejemplo, en nuestro ejemplo del hotel, "Habitación individual #1234"). La adaptación se recuperaría y se volvería a aplicar cada vez que se generara esta instancia de página virtual para su visualización (por ejemplo, durante la vista previa o durante la visualización en directo).
[0430] En algunas realizaciones, se permite a los usuarios editar instancias de páginas virtuales, pero sólo en cuanto a su información de campo (por ejemplo, texto, gráficos, vídeos, etc.). Por ejemplo, en tales realizaciones, se puede prohibir a los usuarios la edición de otros elementos (es decir, distintos del contenido) de una instancia de página virtual, incluidos el diseño, los atributos, etc.
[0432] El Procedimiento 2600 también puede incluir una Etapa 2618 de recepción de ediciones de los propios elementos de datos. Tales ediciones pueden realizarse directamente en una pantalla del grupo de datos (es decir, una pantalla de elementos de interfaz de usuario que permite navegar y editar los grupos de datos y elementos subyacentes). Alternativamente, dicha edición puede realizarse a través de la edición del contenido del campo en las instancias de página virtual generadas relacionadas con los elementos. El sistema puede permitir tal edición añadiendo (en modo de vista previa) controles de edición adicionales a las instancias de página virtual mostradas (como un botón "seleccionar imagen alternativa" añadido a cada imagen mostrada originada a partir de un grupo de datos). Como ya se ha dicho, los datos pueden almacenarse en una base de datos. Las ediciones pueden incluir la edición de texto, la sustitución o modificación de imágenes, la sustitución o modificación de vídeos, la alteración de la funcionalidad de pasar el cursor por encima de un elemento y otros tipos de ediciones.
[0434] Además, el procedimiento 2600 puede incluir una Etapa 2620 de recepción de ediciones al código asociado con una o más páginas web virtuales. Ejemplos del código pueden ser el código de extremo delantero y el código de extremo trasero descritos anteriormente en relación con las FIGs.1-7. Por ejemplo, el código puede estar relacionado con la recopilación y el almacenamiento de datos y contenidos en una base de datos, la creación de páginas dinámicas, la implementación de widgets y aplicaciones orientadas al usuario, la repetición de diseños de elementos de datos, la configuración de enrutadores basados en software, etc. En algunas realizaciones, en la Etapa 2622, se pueden generar segmentos de código esqueleto para facilitar al usuario la edición del código asociado a las páginas web. Por ejemplo, el código esqueleto puede ser abstracciones de alto nivel de funciones asociadas con código fuente más granular, que puede implementar los varios tipos de funcionalidad de extremo delantero y de extremo trasero descritos anteriormente para páginas web. El esqueleto de código puede mostrarse a los usuarios a través de la interfaz de edición y éstos pueden modificarlo. Las modificaciones de los usuarios en el esqueleto de código pueden traducirse en modificaciones en el código real más granular asociado a las páginas web individuales. En cuanto a las ediciones de atributos de página y contenido de datos/campos de página mencionados anteriormente, el sistema puede admitir ediciones de la plantilla de página web 2704 (que se almacenan en la base de datos del área del sitio 124, posiblemente sujetas a sandboxing de cambios de desarrollo antes de la publicación) o de instancias de páginas virtuales (que pueden almacenarse en la base de datos de adaptaciones de instancias de páginas virtuales). Esto se detalla más adelante en la descripción de las etapas 2630 y 2634.
[0436] En el procedimiento 2600, una etapa 2624 puede permitir a un usuario seleccionar páginas web virtuales particulares y una etapa 2626 puede permitir a un usuario navegar a través de páginas web virtuales. Por ejemplo, los usuarios pueden seleccionar páginas individualmente haciendo clic en hipervínculos u otros enlaces asociados con imágenes o representaciones visuales de las páginas, o pueden navegar por las páginas visualmente (por ejemplo, mediante un botón de alternancia izquierda/derecha o arriba/abajo, o mediante otras visualizaciones de selección).
[0438] De acuerdo con el procedimiento 2600, cualquier edición de páginas web virtuales (por ejemplo, edición de instancias a través de las etapas 2616 o 2618) puede traducirse en actualizaciones de la base de datos que mantiene los elementos de datos para las páginas web en una etapa 2828. Por ejemplo, si un usuario sustituye una imagen de una página web virtual por otra imagen (por ejemplo, una imagen cargada por el usuario, etc.), la nueva imagen puede almacenarse en la base de datos. Además, si el usuario sustituye el texto de la página web virtual (por ejemplo, la descripción de una habitación de hotel específica), el texto actualizado también puede almacenarse en la base de datos. En algunas realizaciones, las actualizaciones de la base de datos pueden realizarse automáticamente en función de las ediciones del usuario en la página web virtual. Dado que la base de datos se utiliza para crear las páginas virtuales y está asociada a los contenidos de éstas, las modificaciones que se realicen en las páginas virtuales podrán asociarse a la base de datos utilizada para crearlas. En algunas realizaciones, se almacenan varias versiones de la base de datos, al menos temporalmente, para que los usuarios puedan realizar operaciones de deshacer o revertir si desean anular un cambio que hayan realizado en una página web virtual y volver a una versión anterior. Por ejemplo, los usuarios pueden seleccionar una opción de deshacer o revertir, o se les pueden presentar marcas de tiempo o identificadores de versión asociados a versiones anteriores de una página web virtual a las que pueden volver y reanudar su edición. Tal sistema de versionado también puede soportar la realización de cambios en la versión de la base de datos de desarrollo que no formen parte de la versión publicada hasta que se realice una operación de publicación. Esto también se conoce como "sandboxing" de la base de datos de desarrollo.
[0440] El procedimiento 2600 también puede incluir una etapa 2630, en la que se recibe cualquier edición del código esqueleto realizada por el usuario. Además, en la etapa 2634, cualquier edición al código real (por ejemplo, a través de la etapa 2620) o al código esqueleto (por ejemplo, a través de la etapa 2630) puede traducirse en ediciones al código real para la página web. Como se ha descrito anteriormente, por ejemplo, los usuarios pueden editar el código real o esquelético asociado con varias funcionalidades de extremo trasero o de extremo delantero de las páginas web virtuales. Tales ediciones del código pueden almacenarse en la misma base de datos que aloja los elementos de datos de una página web virtual o en una base de datos de códigos independiente.
[0442] Además, en una etapa 2632, el procedimiento 2600 puede incluir habilitar, durante una vista en vivo de una página web real asociada con una página web virtual, una visualización de las páginas web con las actualizaciones realizadas en la página web virtual durante el modo de vista previa -incluyendo tanto páginas web regulares como instancias de páginas web virtuales-. Como se ha comentado anteriormente, por ejemplo, los usuarios pueden editar numerosas características de una página web virtual durante el modo de vista previa (por ejemplo, estructura de la página, elementos de datos, código de extremo delantero, código de extremo trasero, etc.) tanto para plantillas como para instancias. Tales ediciones pueden traducirse en las correspondientes actualizaciones de las definiciones de página o cambios en los elementos de datos, que pueden almacenarse en la base de datos del área del sitio 124 y/o en bases de datos separadas (por ejemplo, una base de datos de elementos de datos, una base de datos de adaptación de instancias, y/o una base de datos de código separada en la que se basa la página web virtual). Tales bases de datos separadas también pueden ser alojadas por el SCW 100, por ejemplo, como parte de la memoria 820 o del almacenamiento persistente 830. Además, estas modificaciones pueden traducirse en las correspondientes actualizaciones de la página web real. En varias realizaciones, las páginas web virtuales y las páginas web reales pueden basarse en la(s) misma(s) base(s) de datos o en bases de datos diferentes (por ejemplo, vinculadas). Debe tenerse en cuenta que estas bases de datos (por ejemplo, la base de datos de área del sitio 124 y otras bases de datos, tal como una base de datos de elementos de datos, una base de datos de adaptación de instancias o una base de datos de código de extremo delantero/de extremo trasero separada) pueden implementarse como una única base de datos, un conjunto de bases de datos o una combinación de bases de datos (cada una de las cuales puede soportar un subconjunto de las funciones requeridas).
[0444] La Figura 27 es un sistema 2700 para el desarrollo y previsualización de páginas web, de acuerdo con algunas realizaciones de la presente divulgación. Como se discutió anteriormente, el sistema 2700 puede ser similar a, u operar dentro de, los sistemas discutidos en conexión con las FIGS. 1, 2, 15 y otras. En algunas realizaciones, el sistema 2700 puede incluir una base de datos de área de sitio 124, que almacena elementos de datos y/o código para una o más páginas web 2704. Como se muestra, se pueden mantener numerosas páginas web 2704, cada una de las cuales puede tener sus propios elementos de datos correspondientes. Como se ha comentado anteriormente, los elementos de datos pueden organizarse en el grupo de datos 210 de uno o más elementos de datos. Como se ha indicado anteriormente, tal grupo de datos 2710 puede ser de todo el sistema, específico de un grupo de sitios, específico de un sitio o específico de una página (típicamente para una determinada plantilla de página web 2704).
[0446] Tal como se muestra en la FIG.27, la base de datos de área del sitio124 puede comunicarse a través de una red con un navegador web 131 u otra aplicación cliente, que puede ser operada por un usuario. El navegador web 131 puede mostrar una página web virtual 2712 correspondiente a cada plantilla de página web 2704 en la base de datos del área del sitio 124 utilizando elementos de datos en el grupo de datos 210. Además, cada página web virtual 2712 puede estar asociada a un elemento de datos 211. Además, los usuarios pueden visualizar los elementos de datos individualmente (por ejemplo, el elemento de datos 1211 y el elemento de datos 22718) como parte del grupo de elementos de datos 2714. Como se discutió anteriormente, los usuarios pueden interactuar con la página web virtual 2712 mostrada, incluyendo sus elementos 2710, 2714, 211, 2718, para editar las diversas características de la página web virtual 2712. Las modificaciones pueden afectar a elementos de datos específicos, características de la estructura de la página, código de extremo delantero, código de extremo trasero, etc. Como se discutió anteriormente, tales ediciones pueden ser recibidas por la base de datos del área del sitio 124 y/u otras bases de datos.
[0448] La Figura 28 es un diagrama de bloques 2800 de una página web virtual de acuerdo con algunas realizaciones de la presente divulgación; De acuerdo con los ejemplos anteriores, la página web virtual 2712 puede incluir varias características seleccionables por el usuario 2802, incluyendo una característica de visualización 2804, elemento de búsqueda 2806, marcadores 2810, característica de desplazamiento 2810, y otras características. La página web virtual 2712 puede incluir además elementos de datos 2714 y código de extremo delantero 2812, como se ha comentado anteriormente. Además, la página web virtual 2712 puede estar asociada con código de extremo trasero (no mostrado), tal como código de página web dinámica. Los usuarios pueden ver, interactuar y editar la página web virtual 2712 como se ha comentado anteriormente. Dichas ediciones pueden ser recibidas por uno o más componentes del sistema de creación de sitios web, como la base de datos del área del sitio 124. A través de la visualización de la página web virtual 2712, los usuarios pueden visualizar las ediciones que están haciendo antes de que la página web correspondiente salga al aire. Para publicar la página web virtual 2712 en un modo en vivo, un usuario puede seleccionar un enlace "publicar" o "renderizar", como se discutió anteriormente.
[0450] La Figura 29 es una visualización de línea de tiempo 2900 de actualización dinámica de páginas web, de acuerdo con algunas realizaciones de la presente divulgación. En particular, a medida que un usuario realiza ediciones en una página web virtual 2712, las ediciones pueden actualizarse en la base de datos del área del sitio 124 y, por lo tanto, también en el navegador del usuario. Como se muestra en la FIG.29, el grupo de datos 2710 puede incluir el elemento de datos 1211 y el elemento de datos 22718, entre otros elementos de datos. Dentro del elemento de datos 1211, puede mostrarse una pestaña 12902 y dentro del elemento de datos 22718, puede mostrarse una pestaña de prueba 22904. La pestaña 12902 y la pestaña de prueba 22904 pueden mostrarse en la página web virtual 2712, como se muestra, junto con otros elementos (por ejemplo, una barra de búsqueda, un menú desplegable, etc.).
[0452] A medida que avanza el tiempo en la visualización de la línea de tiempo 2900, el usuario puede realizar ediciones en la página web virtual 2712. Por ejemplo, como se muestra, el usuario puede hacer ediciones a la pestaña de prueba 22904, resultando en la pestaña editada 2. Además, puede añadirse un nuevo elemento de datos 32906 a la página web virtual 2712, como parte del grupo de datos 2710. A medida que se realizan las ediciones en la página web virtual 2712, se pueden realizar las ediciones correspondientes en un entorno vivo 2908. Por ejemplo, cuando el usuario selecciona una función "publicar" o "renderizar", el entorno vivo 2908 puede actualizarse para mostrar las actualizaciones del grupo de datos 2710 y otros aspectos de la página web virtual 2712. Por ejemplo, una primera versión de la página web real 2910 puede no incluir la pestaña 2 o la pestaña 3 editadas, mientras que la versión posterior de la página web real 2912 puede incluir dichas actualizaciones. En varias realizaciones, las actualizaciones de la página web virtual 2712 pueden hacerse automáticamente o cuando el usuario selecciona una función de actualización. Además, las actualizaciones de la página web real 2910 y 2912 en el entorno vivo 2908 pueden realizarse cuando el usuario confirma una transición al entorno vivo 2908 (por ejemplo, seleccionando un enlace "publicar" o "renderizar").
[0454] La Figura 30 representa un diagrama de bloques de un sistema de vista previa dinámica 3000, de acuerdo con algunas realizaciones de la presente divulgación. Como se muestra en la FIG.30, el sistema de vista previa dinámica 3000 ayuda a mostrar las páginas web tal y como aparecerían, por ejemplo, en el entorno de despliegue 1510. La interfaz de vista previa 3010 puede ser un marco u otra interfaz gráfica dentro de la interfaz de editor en línea 243 que muestra una página web. En algunas realizaciones, la interfaz de vista previa 3010 puede ser una pestaña separada abierta en el navegador web que se está utilizando para mostrar la interfaz de editor en línea 243.
[0456] La interfaz de vista previa 3010 puede utilizarse para mostrar tanto páginas web estáticas como páginas web virtuales (es decir, instancias de una plantilla de página web 2704 dada). Las páginas web virtuales generadas para su visualización en la interfaz de previsualización 3010 pueden ir acompañadas de una interfaz de navegación 242. La interfaz de vista previa 3010 puede permitir que la interfaz de navegación 242 incluya características de desplazamiento para permitir a los usuarios desplazarse a través de múltiples páginas web virtuales generadas para su visualización en la interfaz de vista previa 3010. La interfaz de navegación 242 puede permitir tanto la navegación secuencial como el acceso directo a páginas web virtuales específicas, así como la navegación entre páginas virtuales a través de la búsqueda (por ejemplo, utilizando valores del elemento de datos clave utilizado para identificar páginas virtuales específicas). La interfaz de navegación 242 puede tener acceso directo a páginas web virtuales específicas y puede soportar páginas web virtuales marcadas para navegar selectivamente. Por ejemplo, las páginas web virtuales que se muestran en la interfaz de vista previa 3010 pueden ir acompañadas de un enlace a la primera, última, anterior o siguiente página web virtual. La SCW 100 también puede admitir otras disposiciones de las páginas virtuales, no sólo una lineal. Por ejemplo, la SCW 100 puede soportar una disposición jerárquica de páginas virtuales, por las que se puede navegar utilizando opciones adicionales como "ir a un nivel superior del árbol" o "expandir el nivel por debajo de la página actual".
[0458] La Figura 31 ilustra una vista previa de una página web virtual 3110 que está siendo editada, de acuerdo con algunas realizaciones de la presente divulgación. Como se muestra en la FIG.31, extremo delantero 126 está asociado a grupo de datos 210. Las herramientas de construcción 121 incluidas en el extremo delantero 126 pueden asociarse con elementos de datos específicos del grupo de datos 210. La página web virtual 3110 puede mostrar la página web indexable 125, incluyendo el extremo delantero 126, y puede ser previsualizada en la interfaz de previsualización 3010. En algunas realizaciones, la interfaz de previsualización 3010 puede ser un marco u otra representación gráfica dentro de la interfaz de editor en línea 243. La interfaz de previsualización 3010 puede permitirle a la página web virtual 3110 ser previsualizada como podría aparecer en diferentes dispositivos móviles o de escritorio, mediante el uso de diferentes lenguajes, adaptada por los requerimientos de accesibilidad o de otra forma modificada para audiencias específicas.
[0460] La Figura 32 es un diagrama esquemático que muestra las relaciones entre los grupos de datos y los sitios web, de acuerdo con algunas realizaciones de la presente divulgación. Como se muestra en la FIG.32, un grupo de páginas web virtuales 3220 de un sitio web puede estar asociado a un mismo grupo de datos 210. En algunas realizaciones, el grupo de páginas web virtuales 3220 puede estar asociado con un conjunto de grupos de datos 3230. En algunas realizaciones, un grupo de páginas web 3240 puede compartir el mismo conjunto de grupos de datos 3230. Un grupo de páginas web 3240 que comparte un conjunto de grupos de datos 3230 puede tener un mismo propietario u operador, o se le pueden haber concedido permisos apropiados (a través de un mecanismo de control de acceso) para acceder a grupos de datos 210 específicos. En algunas realizaciones, un grupo de páginas web 3240 que comparten un conjunto de grupos de datos 3230 pueden haber sido construidos por el mismo desarrollador/diseñador 1540, como se ha comentado anteriormente.
[0462] Como se ilustra en la FIG.32, un repetidor 3213 es una herramienta de construcción visible en el extremo delantero de una página web que muestra diferentes elementos de contenido o agrupaciones en diferentes secciones con un diseño o disposición repetida. En algunas realizaciones, el repetidor 3213 puede formar parte de una página web virtual 3111 generada mediante un enrutador basado en software, como se explica más adelante, o formar parte de una página web indexable 125 normal (estática). El repetidor 3213 muestra un contenido diferente basado en el elemento de datos 1211 y el elemento de datos M 3212 del grupo de datos 210. El repetidor puede estar asociado directamente con un subconjunto de grupo de datos 3213 del grupo de datos 210. Por ejemplo, se puede utilizar un repetidor para crear cinco agrupaciones diferentes de texto e imágenes. Cada agrupación puede colocar automáticamente el texto y las imágenes con las mismas proporciones y disposición. No obstante, en algunas realizaciones, el contenido real del texto y las imágenes puede ser diferente en cada agrupación.
[0464] La Figura 33 es un diagrama esquemático que muestra los componentes implicados en la generación de páginas web virtuales, de acuerdo con algunas realizaciones de la presente divulgación. Como se muestra en la FIG.33, la plantilla de página web 2704, similar a las páginas web indexables, puede estar asociada con el grupo de datos 210 y otros grupos de datos. Como se ha comentado anteriormente, el enrutador basado en software 3310 puede utilizarse para enlazar elementos de datos en un grupo de datos 210 y puede aplicarse a la plantilla de página web 2704 para generar páginas web virtuales 3111, 3313 y 3312. El enrutador basado en software 3310 puede seleccionar/filtrar/ordenar elementos de datos en el grupo de datos 210 para aplicarlos a la plantilla de página web 2704 y a los grupos de páginas web virtuales basándose en la URL enviada por un usuario. El software router 3310 identifica la plantilla de página web 2704 basándose en un prefijo URL. El enrutador basado en software 3310 puede identificar elementos de datos en el grupo de datos 210 para ser aplicados a la plantilla de página web 2704 para generar páginas web virtuales basadas en elementos URL (por ejemplo, componentes de sufijo, segmentos de texto o valores de parámetros) siguiendo el prefijo URL. En algunas realizaciones, el prefijo URL "prefix1" identifica el enrutador basado en software 3310 para la plantilla de página web 2704. El enrutador basado en software 3310 puede generar las páginas web virtuales 3111 y 3312 basándose en el valor del sufijo "label1" y "label2" respectivamente. El enrutador basado en software 3310 puede generar un mapa del sitio prefijo 1 mapa del sitio 3313 que enumera las posibles URL de todas las páginas web virtuales que pueden generarse utilizando la plantilla de página web 2704 y el grupo de datos 210 asociado, así como otros grupos de datos. El prefijo 1 mapa del sistema 3313 puede ayudar en la indexación de las páginas web virtuales 3111 y 3312 por parte del motor de búsqueda 170.
[0465] La Figura 34 es el diagrama de flujo 3400 que muestra las etapas implicados en la generación y previsualización de páginas web virtuales, de acuerdo con algunas realizaciones de la presente divulgación. El diagrama de flujo 3400 representa las etapas que pueden realizarse en las realizaciones del sistema descritas anteriormente.
[0466] Tal como se muestra en la FIG. 34, en la etapa 3410, un sistema de vista previa dinámica 3000 puede almacenar elementos de datos en la base de datos de área de sitio 124. Como ya se ha comentado, los elementos de datos pueden adoptar una variedad de formas, tales como texto, imágenes, vídeos, fondos, así como registros consistentes en una combinación de cualquiera de estos tipos de objetos.
[0467] En la etapa 3420, el sistema de vista previa dinámica 3000 puede almacenar instrucciones que permiten la organización de los elementos de datos almacenados en grupos de datos. Por ejemplo, los grupos pueden definirse en bases de datos. Además, los grupos pueden definirse por las relaciones entre los elementos del grupo, o por los campos de los elementos de datos cuyos valores dependen de otros campos. De acuerdo con las realizaciones anteriores, los grupos de datos pueden definirse antes de que se definan los elementos visuales, los campos o las páginas web específicas.
[0468] En la etapa 3430, el sistema de vista previa dinámica 3000 puede proporcionar instrucciones adicionales al navegador web que muestra la interfaz de editor en línea 243 para permitir la adición de elementos de datos adicionales a grupos de datos creados previamente en la base de datos de área de sitio 124. De este modo, los grupos existentes pueden completarse o editarse para contener elementos diferentes o adicionales. Un usuario puede repetir la etapa 3420 y puede volver en cualquier momento para añadir más elementos de datos. Del mismo modo, este paso puede incluir instrucciones para realizar operaciones adicionales en los elementos de datos, tales como la eliminación y la actualización. Por ejemplo, un usuario puede alternar entre las etapas 3410, 3420 y 3430, o proceder a la etapa 3430. En la etapa 3440, el sistema de vista previa dinámica 3000 puede ejecutar instrucciones para ayudar a asociar elementos de datos previamente insertados de grupos de datos almacenados en la base de datos de área de sitio 124 al sitio web que se está editando en la interfaz de editor en línea 243. Un usuario puede repetir la etapa 3420 y puede volver en cualquier momento para crear más asociaciones entre páginas web del sitio web que se está construyendo y elementos de datos organizados como grupos de datos almacenados en la base de datos del área del sitio 124. En la etapa 3450, el sistema de vista previa dinámica 3000 proporciona instrucciones para ayudar a asociar grupos de elementos de datos con las páginas web de un sitio web. Esto puede implicar, como se ha comentado anteriormente, vincular los campos de un formulario entre sí tanto para activar/desactivar como para filtrar los valores potenciales permitidos para un campo (por ejemplo, un formulario para rellenar la dirección puede listar en el campo de la ciudad valores que dependen de la selección en el campo del estado).
[0469] En la etapa 3460, el sistema de vista previa dinámica 3000 proporciona instrucciones a la interfaz de editor en línea 3000 para permitir la vista previa de páginas web de un sitio web que se está construyendo en la interfaz de editor en línea 243. Las vistas previas pueden permitir al usuario editar en tiempo real, como se ha comentado anteriormente. Un usuario puede repetir las etapas 3430, 3440, 3450, 3460 cualquier número de veces y repetirlos en cualquier orden. La Figura 35 es un diagrama esquemático de usuarios interactuando con un sistema de alojamiento de sitios web 3500, de acuerdo con algunas realizaciones de la presente divulgación. Como se muestra en la FIG.35, El sistema de alojamiento de sitios web 3500 incluye el servidor de alojamiento 3510, que incluye uno o más sistemas para construir y visualizar sitios web, el servidor de complementos 3520 que ejecuta el código de los complementos, el procesador 260, la memoria 820 que almacena los componentes y el código de los complementos, una interfaz 3570 para desarrollar y cargar el código de los complementos y otros componentes.
[0470] El servidor de alojamiento 3510 puede ser uno o más servidores que alojan sitios web alojados conjuntamente 3511, 3512 y 3513. El servidor de alojamiento 3510 puede ser una instancia de ejecución de un servidor web en el sistema bajo demanda 800, por ejemplo, o en otro tipo de sistema de alojamiento de sitios web. En algunas realizaciones, el servidor de alojamiento 3510 puede ser múltiples instancias de ejecución del servidor web en el sistema bajo demanda 800. El servidor de alojamiento 3510 también puede ser el SCW 100 que almacena los sitios web editados y a los que acceden el desarrollador/diseñador 1540 y el usuario final 1530, como se ha comentado anteriormente.
[0471] Las herramientas de edición 411, como se ha comentado anteriormente, son herramientas comunes para editar un sitio web compartido por sitios web alojados por el servidor de alojamiento 3510. En algunas realizaciones, las herramientas de edición 411 pueden ser compartidas a través de múltiples servidores de alojamiento 3510 que alojen sitios web 3511-3513 co-alojados.
[0472] El servidor de complemento 3520 puede ser uno o más servidores que ejecutan código de complemento en un entorno de aislamiento 3521. En algunas realizaciones, el servidor de complementos 3520 utiliza la misma infraestructura que el servidor de alojamiento 3510 (que pueden ser servidores físicos o instancias de ejecución de servidores web, como se ha indicado anteriormente). El complemento 3530 está presente en la memoria 820 y es visible o accesible a través de una interfaz de usuario 3531, código de complemento de extremo delantero 3532, y código de complemento de extremo trasero 3533.
[0474] Los usuarios 3540-3560 pueden acceder a las herramientas de edición 411 desde el servidor de alojamiento 3510 para editar los sitios web 3511-3513 respectivamente. En algunas realizaciones, por ejemplo, el sitio web 3511 que está siendo editado por el usuario 3540 puede incluir un complemento 3530. Por ejemplo, la página web 3511 puede reproducir vídeo a través de un reproductor de vídeo complemento 3530 cuando se accede a la página web 3511 utilizando el navegador web 131 en el dispositivo de visualización web 130. El usuario 3540 puede modificar el sitio web 3511 editando y cargando el código del complemento a través de la interfaz 3570. En algunas realizaciones, la interfaz 3570 puede ser parte de las herramientas de edición 411.
[0476] Los usuarios 3540-3560 interactúan con los sitios web 3511-13 en el servidor de alojamiento 3510 a través de la plataforma compartida 3580. La plataforma compartida 3580 permite a grupos de usuarios editar grupos de sitios web. La plataforma compartida 3580 puede estar configurada mediante software para determinar qué grupos de usuarios 3540-3560 tienen acceso a editar qué páginas web 3511-13. En algunas realizaciones, el servidor de alojamiento 3510 que aloja múltiples sitios web 3511-13 puede actuar como plataforma compartida 3580.
[0478] El usuario final 1530 que visualiza el sitio web 3511 utilizando el navegador web 131 en el dispositivo de visualización web 130 puede incluir la interfaz de usuario 3531 del complemento 3530. Por ejemplo, el complemento 3530 puede ser un reproductor de vídeo y la interfaz de usuario 3531 puede incluir botones de control de reproducción estilizados para el complemento 3530 reproductor de vídeo. El código de complemento de extremo delantero 3532 también puede ser transmitido a través de la interfaz de usuario 3531 cuando el usuario final 3540 accede a un sitio web. El usuario final 1530 interactuando con la interfaz de usuario 3531 del complemento 3530 puede resultar en que el código de extremo delantero del complemento 3532 del complemento 3530 se ejecute en el navegador web 131. En algunas realizaciones, la interacción del usuario final 1530 con el sitio web 3511 también puede resultar en la ejecución del código de complemento de extremo trasero 3533 en el servidor de complemento 3520. Por ejemplo, si el usuario final 3540 hace clic en los controles de reproducción de un complemento de reproductor de vídeo, el código de complemento de extremo delantero 3532 se ejecuta y realiza una solicitud para transmitir el vídeo, y el código de complemento de extremo trasero 3533 puede comprimir el vídeo en función de la disponibilidad de ancho de banda de la red.
[0480] La Figura 36 representa una técnica de acceso controlado a sitios web co-alojados, de acuerdo con algunas realizaciones de la presente divulgación. Como se muestra en la FIG.36, los usuarios 3540, 3550 se agrupan y se les permite el acceso a los sitios web co-alojados 13511 y 3512. Los usuarios 3621 y 3622 pueden tener acceso a los sitios web co-alojados 23611 y 3612. Los usuarios pueden acceder a uno o más sitios web co-alojados, pero no pueden acceder a sitios web que no formen parte del grupo permitido. Los usuarios pueden tener definidos sus derechos de acceso, por ejemplo, en función de si son propietarios de determinadas páginas web, si son usuarios registrados, si se han autentificado, etc.
[0482] La Figura 37 muestra grupos de sitios web co-alojados que comparten código de complemento bajo rutas comunes, de acuerdo con algunas realizaciones de la presente divulgación. Como se muestra en la FIG. 37, el sistema de alojamiento web 3500 tiene dos conjuntos de sitios web co-alojados, cada conjunto difiere del otro por una ruta URL. Por ejemplo, los sitios web co-alojados de la ruta común 13711 pueden compartir el dominio www.a.com y los sitios web co-alojados de la ruta común 23731 pueden compartir el dominio www.b.com. Alternativamente, los sitios web co-alojados de ruta común 13711 pueden tener un subdominio común a.wixsite.com y los sitios web co-alojados de ruta común 23731 pueden tener un subdominio común b.wixsite.com. Los sitios web con rutas comunes pueden alojarse conjuntamente en un servidor o entorno de alojamiento para crear un entorno de aislamiento y eliminar la interacción con otros conjuntos de sitios web alojados conjuntamente. Los sitios web co-alojados también pueden tener diferentes servidores de complementos para crear entornos aislados para la ejecución del código del complemento. Los sitios web co-alojados de la ruta común 13711 y los sitios web co-alojados de la ruta común 23731 pueden compartir el mismo procesador 260 y memoria 820 o tener procesadores y memoria diferentes. La Figura 38 muestra entornos de ejecución aislados del código de complemento de extremo trasero 3533, de acuerdo con algunas realizaciones de la presente divulgación. Como se muestra en la FIG.38, código de complemento de extremo trasero 3533 del complemento 3530 El entorno de aislamiento puede basarse en un contenedor (por ejemplo, Docker) 3810 o máquina virtual 3820 o proceso de sistema operativo 3830. En algunas realizaciones, el entorno de aislamiento 3521 puede incluir uno o más contenedor 3810, máquina virtual 3820, y proceso de sistema Operativo 3830 (por ejemplo, código sin servidor), cada uno ejecutando código de extremo trasero de complemento 3533 separado. En algunas realizaciones, un servidor de complementos que aloja el complemento 3530 puede incluir múltiples entornos de aislamiento.
[0484] La Figura 39 representa un acceso controlado y ejecución del código de complemento de extremo delantero 3532, de acuerdo con algunas realizaciones de la presente divulgación. Como se muestra en la FIG.39, el acceso a la página web 3511 puede dar lugar al acceso al extremo delantero complemento 1 código 3532 del complemento 3530 y al de extremo delantero complemento 2 código 3931 de otro complemento. El sitio web 3511 puede asegurarse de ejecutar cada uno de los complementos en sub-regiones separadas 3910 y 3930 respectivamente. El sistema de alojamiento de sitios web 3500 también puede crear un canal de comunicación seguro (por ejemplo, SSL, túnel seguro, etc.) para permitir que sólo se pueda acceder a ciertas otras subregiones del sitio web. El canal de comunicación seguro puede restringir el acceso de un complemento de extremo delantero a otras subregiones del sitio web. Por ejemplo, el código 3532 del complemento de extremo delantero 1 ejecutándose en la Sub-Región 3910 puede comunicarse con otra Sub-Región 3920 pero se le puede negar el acceso a la sub-región 3940. Las subregiones accesibles de un complemento pueden enumerarse en forma de tabla, en un registro de confianza, en un archivo de configuración o en una base de datos segura. Por ejemplo, en un arreglo basado en computación en nube, una plataforma orquestadora de nube puede mantener una lista o mapeo de recursos de computación virtual (por ejemplo, sub-región 3910, sub-región 3920, sub-región 3940, etc.) y puede definir sus permisos de conexión. Dicha lista o asignación puede permitir conexiones o acciones específicas por parte de la sub-región 3910, la sub-región 3920 y la sub-región 3940 y denegar otras conexiones o acciones. En algunas realizaciones, el canal de comunicación seguro se proporciona permitiendo que todas las comunicaciones pasen a través de uno o más concentradores (por ejemplo, un concentrador que realiza verificaciones de autenticación o autorización). Dichos concentradores pueden ser, por ejemplo, residentes en un cliente del sistema, en un servidor del sistema o en ambos. También se puede establecer una comunicación segura verificando el identificador único de subregión de origen de la comunicación. Por ejemplo, se puede utilizar una llamada al procedimiento getId() para identificar el id de subregión de origen de un mensaje de comunicación y determinar si está en la lista o asignación permitida.
[0485] La Figura 40 representa la ejecución aislada del código del complemento en el lado del cliente, de acuerdo con algunas realizaciones de la presente divulgación. Como se muestra en la FIG.40, el acceso a la página web 3511 mediante el navegador web 131 por parte de un usuario final 1530 puede dar lugar al acceso al código del complemento de extremo delantero 3532 del complemento 3530. El acceso del usuario final 1530 puede resultar en la creación de un iframe para ejecutar el código del complemento de extremo delantero 3532 de forma aislada. En algunas realizaciones, el código de complemento de extremo delantero 3532 puede copiarse en diferentes Subregiones 3712-3713 del sitio web 3511 para su ejecución aislada. Por ejemplo, el sitio web 3511 puede mostrar múltiples reproductores de video, cada uno transmitiendo diferentes flujos de video pero usando el mismo código de complemento. En algunas realizaciones, el código de complemento 3532-3533 ejecutándose en un Iframe puede no tener acceso a cookies del lado del cliente (por ejemplo, cookies HTTP).
[0486] La Figura 41 es un diagrama de flujo que muestra las etapas implicadas en el acceso y la ejecución del código del sitio web y del complemento, de acuerdo con algunas realizaciones de la presente divulgación. Como se muestra en la FIG.41, en la etapa 4110, el sistema de alojamiento de sitios web 3500 aloja sitios web que comparten uno o más elementos de datos, plantillas, porciones de código, rutas u otras funcionalidades comunes en un servidor o conjunto de servidores alojados comunes. Los servidores también pueden alojarse conjuntamente en función de la propiedad o de los privilegios administrativos y de edición de la pluralidad de usuarios. Por ejemplo, el sistema de alojamiento de sitios web 3500 puede alojar sitios web creados y gestionados por varias entidades o personas independientes y no afiliadas.
[0487] En la etapa 4120, el sistema de alojamiento de sitios web 3500 proporciona acceso a las herramientas de edición 411 para seguir editando los sitios web co-alojados por el sistema. Como se ha comentado anteriormente, las herramientas de edición 411 pueden permitir al usuario editar numerosos aspectos de las páginas web.
[0488] En la etapa 4130, un esfuerzo por parte de un usuario para acceder a un sitio web con fines de edición da lugar a que el sistema de alojamiento web 3500 evalúe si el usuario que realiza la solicitud tiene acceso o privilegios para editar el sitio web. La evaluación puede depender de la titularidad de un determinado sitio web. En algunas realizaciones, el propietario o administrador de un sitio web puede proporcionar acceso de administración y/o edición a otros usuarios mediante las herramientas de edición 411. Además, en algunas realizaciones, los derechos de edición pueden depender de si el usuario es un usuario registrado o ha sido autenticado para acceder al sistema de alojamiento web 3500.
[0489] Si la respuesta a la etapa 4130 es no, se deniega el acceso solicitado al sitio web y el usuario puede necesitar solicitar privilegios de edición al administrador del sitio web. El proceso 4100 se considera finalizado al fallar el acceso para editar el sitio web. Alternativamente, el proceso 4100 puede volver a la etapa 4120 o 4130.
[0490] Si la respuesta a la etapa 4130 es afirmativa, el proceso 4110 procede a la etapa 4150. En la etapa 4150, se presenta una interfaz para cargar el complemento al usuario que solicita acceso para editar un sitio web. La interfaz puede ser similar a las comentadas anteriormente para que los usuarios editen el código del extremo delantero o del extremo trasero.
[0491] En la etapa 4160 el sistema de alojamiento de sitio web 3500 recibe los cambios del complemento y los almacena. Un complemento cargado por el usuario puede, por ejemplo, incluir ediciones al código de complemento de extremo trasero 3533 del complemento 3530. En algunas realizaciones, las ediciones del usuario pueden incluir ediciones al código de complemento de extremo delantero 3532 del complemento 3530. Alternativamente, un usuario también puede editar la interfaz de usuario 3531 del complemento 3530. En algunas realizaciones, un usuario puede editar toda la interfaz de usuario 3531, el código de complemento de extremo delantero 3532, y el código de complemento de extremo trasero 3533.
[0492] Un usuario que edita código de complemento (por ejemplo, el código de complemento de extremo delantero3532 o el código de complemento de extremo trasero 3533) puede editar código de complemento a lo largo de múltiples sesiones dando como resultado la repetición de las etapas 4120 a 4160, así como menos pasos o pasos adicionales.
[0493] En la etapa 4170, el sistema de alojamiento web 3500 ejecuta el complemento 3530 cuando el sitio web 3511 es accedido por un usuario (por ejemplo, el usuario final 1530, 3540, 3550, 3560). La ejecución del código del complemento incluye la creación de un entorno de aislamiento 3521 para ejecutar el código. El entorno de aislamiento 3521 puede incluir aislamiento en el lado del cliente en un navegador web y en el lado del servidor para ejecutar el código de complemento de extremo delantero 3532 y el código de complemento de extremo trasero 3533 3530 respectivamente.
[0494] La Figura 42 es un ejemplo de interfaz de usuario para editar una página web y crear una colección de bases de datos, de acuerdo con algunas realizaciones de la presente divulgación. Por ejemplo, la página web puede ser generada a través de un sistema de desarrollo de páginas web, como el proporcionado por WIX.COM. Como se ilustra, se puede crear una base de datos que soporte una o más páginas web dinámicas.
[0495] Una barra lateral 4202 de estructura del sitio puede incluir varias opciones para editar y configurar el sitio web, tales como un listado de diferentes páginas (por ejemplo, INICIO, ACADÉMICOS, EVENTOS, EXPOSICIONES, ÁREA ESTUDIANTIL, Cursos por Titulación y NOTICIAS), así como opciones para características Públicas, funcionalidad de extremo trasero y funcionalidad de base de datos. Además, una barra de herramientas 4204 puede incluir varias opciones para añadir y editar contenido en las páginas web.
[0496] Como se ilustra, la interfaz 4206 permite a un usuario configurar una base de datos. La interfaz 4206 puede generarse, por ejemplo, si un usuario selecciona la opción "base de datos" de la barra lateral estructura del sitio 4202. El usuario puede personalizar la base de datos dándole un nombre único en el campo 4208. En este ejemplo, la base de datos puede denominarse base de datos "cursos".
[0497] La Figura 43 es un ejemplo de interfaz de usuario para editar una página web y configurar permisos para una colección de bases de datos, de acuerdo con algunas realizaciones de la presente divulgación. Por ejemplo, continuando con el ejemplo anterior, un usuario que crea una base de datos de "cursos" puede acceder a varias opciones diferentes de permisos 4310 para la base de datos y las correspondientes páginas dinámicas que pueden basarse en ella. Los permisos 4310 pueden referirse al contenido de las páginas web, la introducción de datos en los formularios, el contenido generado por los usuarios de la página, el contenido restringido a los miembros registrados, los formularios que sólo pueden rellenar los miembros registrados y ciertos datos privados a los que sólo pueden acceder determinados usuarios (por ejemplo, los administradores).
[0498] La Figura 44 es un ejemplo de interfaz de usuario para editar una página web y entradas en una colección de bases de datos, de acuerdo con algunas realizaciones de la presente divulgación. Por ejemplo, la base de datos "cursos" puede estar compuesta por los campos 4412 (título), 4414 (descripción), 4416 (imagen), 4418 (profesores), y otros. Estos campos pueden incluir información sobre cursos que puede extraerse de la base de datos e incluirse en páginas web dinámicas específicas. En particular, los campos pueden contener contenido textual (por ejemplo, los campos 4412, 4414 y 4418), así como otros contenidos, tales como imágenes o vídeos (por ejemplo, el campo 4316). Tal como se ilustra, el campo 4416 incluye una imagen correspondiente al curso alicatado TING. En algunas realizaciones, un usuario puede definir además el tipo o diseño de cada página web dinámica y especificar una URL para cada página dinámica. Por ejemplo, los sufijos de la URL pueden corresponder a columnas de la base de datos (por ejemplo, Título).
[0499] La Figura 45 es un ejemplo de interfaz de usuario para editar una página web y mostrar resultados de una colección de bases de datos, de acuerdo con algunas realizaciones de la presente divulgación. Por ejemplo, en una página web dinámica que se haya creado, puede incluirse contenido de la base de datos. Como se ilustra, el contenido 4520 incluye una descripción de un curso de la base de datos. El contenido 4520 se extrae automáticamente de la base de datos sin que el usuario tenga que copiarlo manualmente en la página web. Con esta técnica se pueden crear numerosas páginas dinámicas, cada una de las cuales enlaza con una parte diferente de la base de datos y tiene una disposición única del contenido en función de su enlace a la base de datos.
[0500] La Figura 46 es un ejemplo de interfaz de usuario para editar una página web y crear una función repetidora, de acuerdo con algunas realizaciones de la presente divulgación. Como se ha descrito anteriormente, se puede añadir una función de repetición a un sitio web o página para crear dos o más instancias de elementos (por ejemplo, combinaciones de texto e imágenes) que sean similares en estructura o diseño. Utilizando un repetidor, pueden crearse dos o más instancias de elementos que difieran al menos en un aspecto (por ejemplo, que tengan texto, imágenes, etc. diferentes).
[0501] Como se muestra, un usuario puede acceder a un menú de repetidores 4622 para configurar un repetidor. Por ejemplo, utilizando la barra de herramientas 4204, un usuario puede seleccionar la opción Listas y cuadrículas, que permite la creación de repetidores y otros elementos que muestran múltiples objetos. Con el fin de poblar instancias de repetición con contenido, un usuario puede enlazar al repetidor o a instancias individuales con los conjuntos de datos, tales como datos almacenados en una base de datos.Enalgunas realizaciones, un usuario puede decidir añadir un elemento a cada una de las instancias de forma idéntica. Al añadir el elemento a una instancia, puede añadirse automáticamente a cada instancia. Alternativamente, un usuario puede desear especificar (por ejemplo, a través de código de extremo trasero o de extremo delantero) que cada instancia creada por un repetidor debe tener un contenido diferente.
[0503] La Figura 47 es un ejemplo de interfaz de usuario para editar una página web y mostrar el resultado de una función de repetición, de acuerdo con algunas realizaciones de la presente divulgación. Como se ilustra, un usuario ha creado tres combinaciones de elementos 4724 a través de un repetidor. Cada combinación 4247 tiene una estructura similar de una imagen, texto (nombre del lugar), texto (descripción) y un icono de hipervínculo "Leer más".Enel modo de edición, el usuario puede editar aún más el diseño y la apariencia de estas instancias, por ejemplo, reposicionando la imagen en relación con los elementos de texto, cambiando el hipervínculo, redimensionando los campos, etc. Además, como se ha comentado anteriormente, cada elemento de las instancias puede conectarse a una parte diferente de una base de datos. Por ejemplo, las tres combinaciones de elementos 4724 pueden enlazar cada una a una columna diferente de una base de datos correspondiente al contenido que cada una de ellas debe extraer de la base de datos. De este modo, aunque las tres combinaciones de elementos 4724 tienen un diseño común, cada una tiene un contenido textual o gráfico diferente.
[0505] En la presente memoria descriptiva se describen diversas operaciones o funciones, que pueden implementarse o definirse como código o instrucciones de software. Dicho contenido puede ser directamente ejecutable ("objeto" o forma "ejecutable"), código fuente o código de diferencias ("delta" o código "parche"). Las implementaciones de software de las realizaciones aquí descritas pueden proporcionarse a través de un artículo de fabricación con el código o las instrucciones almacenadas en el mismo, o a través de un procedimiento de funcionamiento de una interfaz de comunicación para enviar datos a través de la interfaz de comunicación. Una máquina o medio de almacenamiento legible por ordenador puede hacer que una máquina realice las funciones u operaciones descritas e incluye cualquier mecanismo que almacene información en una forma accesible por una máquina (por ejemplo, dispositivo informático, sistema electrónico y similares), tales como medios grabables/no grabables (por ejemplo, memoria de sólo lectura (MSL), memoria de acceso aleatorio (MAA), medios de almacenamiento en disco magnético, medios de almacenamiento óptico, dispositivos de memoria flash y similares). Una interfaz de comunicación incluye cualquier mecanismo que interactúe con un medio cableado, inalámbrico, óptico, etc., para comunicarse con otro dispositivo, tal como una interfaz de bus de memoria, una interfaz de bus de procesador, una conexión a Internet, un controlador de disco, etc. La interfaz de comunicación puede configurarse proporcionando parámetros de configuración y/o enviando señales para preparar la interfaz de comunicación para proporcionar una señal de datos que describa el contenido del software. Se puede acceder a la interfaz de comunicación mediante uno o varios comandos o señales enviados a la interfaz de comunicación.
[0507] La presente divulgación también se relaciona con un sistema para realizar las operaciones aquí descritas. Este sistema puede estar especialmente construido para los fines requeridos, o puede comprender un ordenador de propósito general activado o reconfigurado selectivamente por un programa informático almacenado en el ordenador. Dicho programa informático puede almacenarse en un medio de almacenamiento legible por ordenador, como por ejemplo, aunque no exclusivamente, cualquier tipo de disco, incluidos disquetes, discos ópticos, CDROM y discos magnetoópticos, memorias de sólo lectura (MSL), memorias de acceso aleatorio (MAA), EPROM, EEPROM, tarjetas magnéticas u ópticas, o cualquier tipo de medio adecuado para almacenar instrucciones electrónicas, cada uno de ellos acoplado a un bus de sistema informático.
[0509] Las realizaciones de la presente divulgación pueden implementarse con instrucciones ejecutables por ordenador. Las instrucciones ejecutables por ordenador pueden organizarse en uno o más componentes o módulos ejecutables por ordenador. Los aspectos de la divulgación pueden implementarse con cualquier número y organización de tales componentes o módulos. Por ejemplo, los aspectos de la divulgación no se limitan a las instrucciones específicas ejecutables por ordenador o a los componentes o módulos específicos ilustrados en las figuras y descritos en la presente memoria descriptiva. Otras realizaciones pueden incluir diferentes instrucciones ejecutables por ordenador o componentes con más o menos funcionalidad que la ilustrada y descrita aquí.
[0511] Los programas de ordenador basados en la descripción escrita y los procedimientos de esta especificación están dentro de la habilidad de un desarrollador de software. Los distintos programas o módulos de programa pueden crearse utilizando una variedad de técnicas de programación. Por ejemplo, las secciones del programa o los módulos del programa pueden diseñarse mediante JavaScript, Scala, python, Java, C, C++, lenguaje ensamblador o cualquiera de estos lenguajes de programación, así como lenguajes de codificación de datos (tales como XML, JSON, etc.), lenguajes de consulta (tales como SQL), lenguajes relacionados con la presentación (tales como HTML, CSS, etc.) y lenguaje de transformación de datos (tales como XSL). Una o más de estas secciones o módulos de software pueden integrarse en un sistema informático, un medio legible por ordenador no transitorio o un software de comunicaciones existente.
[0513] Las palabras "que comprenda", "que tenga", "que contenga" e "incluyendo" y otras formas similares pretenden ser equivalentes en significado y ser interpretadas como abiertas, en el sentido de que, un elemento o elementos que sigan a cualquiera de estas palabras no pretenden ser una enumeración exhaustiva de dicho elemento o elementos, ni pretenden limitarse únicamente al elemento o elementos enumerados. Las formas singulares “un”, “una”, “el” y “la” incluyen referencias en plural salvo que el contexto indique claramente otra cosa.
[0514] Habiendo descrito aspectos de las realizaciones en detalle, será evidente que son posibles modificaciones y variaciones sin apartarse del alcance de los aspectos de la invención tal como se definen en las reivindicaciones adjuntas. Dado que podrían realizarse diversos cambios en las construcciones, productos y procedimientos anteriores sin apartarse del alcance de los aspectos de la invención, se indica que toda la materia contenida en la descripción anterior y mostrada en los dibujos adjuntos se interpretará como ilustrativa y no en un sentido limitativo.

Claims (19)

1. REIVINDICACIONES
1. Un procedimiento implementado por ordenador (600) para la creación de sitios web en línea utilizando funcionalidades de extremo trasero personalizadas, el procedimiento comprende:
proporcionar una base de datos en línea (124) que comprenda una biblioteca de elementos de construcción de sitios web para configurar un extremo delantero (126) de una página web indexable (125);
transmitir (620) primeras instrucciones (240) a un cliente (140), las primeras instrucciones que permiten al cliente acceder a una pluralidad de herramientas de construcción (121) almacenadas en la base de datos en línea (124) a través de una interfaz unificada (410) visualizable por el cliente, y permitir a un usuario del cliente construir el extremo delantero de la página web indexable utilizando la pluralidad de herramientas de construcción, donde la interfaz unificada proporciona al usuario acceso a la pluralidad de herramientas de construcción y representaciones tanto del extremo delantero como de un extremo trasero (127) asociado con la página web indexable;
generar automáticamente (630), basándose en reglas almacenadas en la base de datos en línea, el código de una herramienta de la pluralidad de herramientas, y transmitir (640) el código al cliente;
proporcionar acceso (650), al usuario del cliente, a la funcionalidad de }extremo trasero asociada a la página web para permitir la recepción (660) de especificaciones del usuario del cliente para configurar un evento programable para activar código editable por el usuario que implemente la funcionalidad de extremo trasero asociada a la página web indexable;
almacenar (680) el código editable por el usuario en un sistema de almacenamiento de códigos en comunicación con la base de datos en línea; y
en respuesta a un desencadenante asociado con el evento programable, ejecutar el código editable por el usuario para implementar la funcionalidad de extremo trasero.
2. El procedimiento implementado por ordenador (600) de la reivindicación 1, comprende además, en respuesta al activador, obtener datos externos a la base de datos en línea (124) y externos al cliente (140) para utilizarlos en la ejecución del código editable por el usuario para implementar la funcionalidad de extremo trasero.
3. El procedimiento implementado por ordenador (600) de la reivindicación 1 o 2, en el que al menos algunas partes del código editable por el usuario son accesibles para su edición por el usuario en forma de segmentos de código seleccionables.
4. El procedimiento implementado por ordenador (600) de cualquier reivindicación anterior, en el que la ejecución del código editable por el usuario para implementar la funcionalidad de extremo trasero se produce basándose en un gancho que provoca la ejecución del código editable por el usuario.
5. El procedimiento implementado por ordenador (600) de la reivindicación 4, en el que el gancho es al menos uno de un gancho web, un gancho de datos o un gancho de enrutador de enlace de datos.
6. El procedimiento implementado por ordenador (600) de cualquier reivindicación anterior, en el que el código al que se accede automáticamente incluye una función asociada con el elemento de construcción del sitio web seleccionado por el usuario y un fragmento de código asociado con esa función.
7. El procedimiento implementado por ordenador (600) de cualquier reivindicación precedente, en el que la interfaz unificada (410) desplegable por el cliente (140) incluye una ventana de edición de sitio web de extremo delantero y una ventana de edición de extremo trasero personalizada.
8. El procedimiento implementado por ordenador (600) de cualquier reivindicación precedente, en el que el activador incluye al menos uno de:
actividad de datos relacionada con un conjunto de datos concreto asociado a la funcionalidad de extremo trasero dinámica personalizada;
una actualización introducida en la página web indexable (125);
una transición de página en la página web indexable; o
una interacción definida entre el usuario y la página web indexable.
9. El procedimiento implementado por ordenador (600) de cualquier reivindicación anterior, que comprende además, en respuesta al desencadenante asociado con el evento programable, ejecutar el código editable por el usuario para implementar una pluralidad de funcionalidades de extremo trasero.
10. El procedimiento implementado por ordenador (600) de cualquiera de las reivindicaciones 1 a 8, comprende además, en respuesta a una pluralidad de disparadores asociados con una pluralidad de eventos programables, ejecutar el código editable por el usuario para implementar la funcionalidad de extremo trasero.
11. El procedimiento implementado por ordenador (600) de cualquier reivindicación precedente, en el que el sistema de almacenamiento de código está configurado para almacenar código para un enrutador basado en software que gestiona las peticiones entrantes del cliente a la página web indexable (125).
12. El procedimiento implementado por ordenador (600) de cualquier reivindicación anterior, en el que el sistema de almacenamiento de códigos y la base de datos en línea (124) son el mismo sistema de almacenamiento.
13. El procedimiento implementado por ordenador (600) de cualquier reivindicación anterior, en el que la página web indexable (125) es una página web dinámica que cambia de apariencia basándose en la funcionalidad del extremo trasero.
14. El procedimiento implementado por ordenador (600) de cualquier reivindicación anterior, en el que el cliente (140) funciona en al menos uno de los siguientes dispositivos: un ordenador personal, un dispositivo móvil o una tableta.
15. El procedimiento implementado por ordenador (600) de cualquier reivindicación anterior, que comprende además: recibir una selección, por parte de un usuario, de la herramienta para construir el extremo delantero de la página web indexable.
16. El procedimiento implementado por ordenador (600) de la reivindicación 15, que comprende además: recibir, del usuario, el evento programable configurado por el usuario para activar el código editable por el usuario.
17. El procedimiento implementado por ordenador (600) de la reivindicación 16, que comprende además: recibir ediciones del usuario en el código editable por el usuario para implementar la funcionalidad de extremo trasero asociada con el evento programable.
18. Un sistema de creación de sitios web en línea configurado para permitir a los creadores de sitios web añadir funcionalidad de extremo trasero a un sitio web alojado centralmente, el sitio web alojado centralmente incluyendo páginas web (125) indexables por un motor de búsqueda, el sistema comprende:
la base de datos en línea (124); y
al menos un procesador configurado para ejecutar el procedimiento de cualquiera de las reivindicaciones anteriores.
19. Un medio legible por ordenador que almacena instrucciones ejecutables por el ordenador que, cuando son ejecutadas por uno o más procesadores, hacen que el uno o más procesadores realicen el procedimiento de cualquiera de las reivindicaciones 1 a17.
ES23180890T 2017-07-24 2018-07-24 Editing a database during preview of a virtual web page Active ES3058727T3 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201762536403P 2017-07-24 2017-07-24
US201862702278P 2018-07-23 2018-07-23

Publications (1)

Publication Number Publication Date
ES3058727T3 true ES3058727T3 (en) 2026-03-12

Family

ID=65014202

Family Applications (2)

Application Number Title Priority Date Filing Date
ES18848030T Active ES2970458T3 (es) 2017-07-24 2018-07-24 Edición de una base de datos durante la previsualización de una página web virtual
ES23180890T Active ES3058727T3 (en) 2017-07-24 2018-07-24 Editing a database during preview of a virtual web page

Family Applications Before (1)

Application Number Title Priority Date Filing Date
ES18848030T Active ES2970458T3 (es) 2017-07-24 2018-07-24 Edición de una base de datos durante la previsualización de una página web virtual

Country Status (9)

Country Link
US (12) US11106860B2 (es)
EP (3) EP4664326A3 (es)
JP (5) JP7546481B2 (es)
AU (3) AU2018319444B2 (es)
BR (1) BR112019024309A2 (es)
CA (1) CA3060362A1 (es)
ES (2) ES2970458T3 (es)
IL (1) IL271915A (es)
WO (1) WO2019038588A1 (es)

Families Citing this family (81)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8671352B1 (en) 2013-05-07 2014-03-11 Axure Software Solutions, Inc. Variable dimension version editing for graphical designs
US9158656B1 (en) * 2014-07-15 2015-10-13 American Express Travel Related Services Company, Inc. Systems and methods for progressively launching websites
US11106860B2 (en) 2017-07-24 2021-08-31 Wix.Com Ltd. Common database for live operation and testing of a website
US20190065487A1 (en) * 2017-08-22 2019-02-28 Salesforce.Com, Inc. Filter logic in a dynamic page previewer
US11392664B1 (en) 2017-08-29 2022-07-19 Massachusetts Mutual Life Insurance Company Dynamic web application based on events
GB201804904D0 (en) * 2018-03-27 2018-05-09 Palantir Technologies Inc Code correction
JP2019211827A (ja) * 2018-05-31 2019-12-12 ファナック株式会社 支援装置
CN109213486A (zh) * 2018-08-20 2019-01-15 北京百度网讯科技有限公司 用于生成用户定制的可视化组件的方法和装置
US10592589B1 (en) 2018-08-21 2020-03-17 Axure Software Solutions, Inc. Multi-view masters for graphical designs
US10691428B2 (en) * 2018-10-24 2020-06-23 Sap Se Digital compliance platform
JP7373563B2 (ja) 2018-11-14 2023-11-02 ウィックス.コム リミテッド. ウェブサイト構築システム用の構成可能なアプリケーションの作成および処理のためのシステムおよび方法
US10757009B2 (en) 2018-11-20 2020-08-25 Amazon Technologies, Inc. Global-scale connectivity using scalable virtual traffic hubs
US11579908B2 (en) 2018-12-18 2023-02-14 Vmware, Inc. Containerized workload scheduling
JP2022100419A (ja) * 2019-04-23 2022-07-06 株式会社ラキール 情報処理システム、情報処理装置、情報処理方法及びプログラム
US12271749B2 (en) 2019-04-25 2025-04-08 VMware LLC Containerized workload scheduling
US11134028B2 (en) 2019-04-26 2021-09-28 NM Nevada Trust Devices, systems and methods for optimizing workload performance of user facing web applications during high load events
CN110362299B (zh) * 2019-06-14 2020-06-26 杭州古德微机器人有限公司 一种基于blockly和树莓派的在线图形化编程系统及其使用方法
US11349839B2 (en) * 2019-06-28 2022-05-31 Google Llc Systems and methods using modular user interfaces for managing network permissions
CN110286896B (zh) * 2019-06-28 2023-03-31 百度在线网络技术(北京)有限公司 可视化编辑方法、装置、设备及存储介质
US11635990B2 (en) 2019-07-01 2023-04-25 Nutanix, Inc. Scalable centralized manager including examples of data pipeline deployment to an edge system
US11501881B2 (en) 2019-07-03 2022-11-15 Nutanix, Inc. Apparatus and method for deploying a mobile device as a data source in an IoT system
US11457009B2 (en) * 2019-07-17 2022-09-27 Infiltron Holdings, Inc. Systems and methods for securing devices in a computing environment
US10789195B1 (en) * 2019-07-17 2020-09-29 Capital One Services, Llc Article, device, and techniques for serverless streaming message processing
CN110389807B (zh) * 2019-07-23 2022-10-25 北京字节跳动网络技术有限公司 一种界面翻译方法、装置、电子设备及存储介质
US11132418B2 (en) * 2019-08-01 2021-09-28 Kindest, Inc. Systems and methods for generating floating button interfaces on a web browser
US11172014B2 (en) * 2019-08-21 2021-11-09 Open Text Sa Ulc Smart URL integration using serverless service
US11645047B2 (en) 2019-09-13 2023-05-09 Axure Software Solutions, Inc. Focused specification generation for interactive designs
WO2021051032A1 (en) * 2019-09-13 2021-03-18 Oracle International Corporation System and method for automatic suggestion and automatic selection for dynamic site compilation within a cloud-based content hub environment
US11727083B2 (en) * 2019-09-13 2023-08-15 Oracle International Corporation System and method for automatic selection for dynamic site compilation within a cloud-based content hub environment
US11531725B2 (en) 2019-09-13 2022-12-20 Oracle International Corporation System and method for providing custom component compilation within a cloud-based con tent hub environment
US11853806B2 (en) 2019-09-27 2023-12-26 Cloudflare, Inc. Cloud computing platform that executes third-party code in a distributed cloud computing network and uses a distributed data store
US11853752B2 (en) * 2019-09-30 2023-12-26 EMC IP Holding Company LLC Migration of web applications between different web application frameworks
US12155731B2 (en) 2019-10-09 2024-11-26 Nutanix, Inc. Platform-as-a-service deployment including service domains
US10997341B1 (en) * 2019-12-12 2021-05-04 Salesforce.Com, Inc. System editing plugin
AU2020100253A4 (en) * 2020-02-21 2020-03-26 Soul & Wolf Pty Ltd Automation of CMS Development for a Website or Web Application
US11023558B1 (en) 2020-04-03 2021-06-01 International Business Machines Corporation Executing functions on-demand on a server utilizing web browsers
CN111625222B (zh) * 2020-05-26 2023-08-04 北京互金新融科技有限公司 前端代码的线上验证系统及验证方法
US11553030B2 (en) * 2020-06-01 2023-01-10 Microsoft Technology Licensing, Llc Service worker configured to serve multiple single page applications
US11514132B2 (en) * 2020-07-14 2022-11-29 Snap Inc. Automatic website data migration
US11848084B1 (en) * 2020-07-23 2023-12-19 Express Scripts Strategic Development, Inc. Automated on-demand generation of custom physical labels for medication containers
US11204975B1 (en) * 2020-08-10 2021-12-21 Coupang Corp. Program interface remote management and provisioning
US12306733B2 (en) 2020-10-21 2025-05-20 Nutanix, Inc. Key value store in a clustered containerized system
US11762531B2 (en) * 2020-10-28 2023-09-19 Axure Software Solutions, Inc. Stateful widget container management for interactive designs
US11321412B1 (en) * 2020-11-04 2022-05-03 Capital One Services, Llc Customized navigation flow
US11726764B2 (en) 2020-11-11 2023-08-15 Nutanix, Inc. Upgrade systems for service domains
US11665221B2 (en) 2020-11-13 2023-05-30 Nutanix, Inc. Common services model for multi-cloud platform
US11271987B1 (en) * 2020-11-26 2022-03-08 Digital.Ai Software, Inc. Universal webhook connectivity via multi-step HTTP transformation
CN112596719B (zh) * 2020-12-25 2024-07-05 中国农业银行股份有限公司 一种生成前后端代码的方法和系统
US11175972B1 (en) * 2021-02-24 2021-11-16 Contentful GmbH Application framework for integrating APPs for editing content of a content management system
US11736585B2 (en) 2021-02-26 2023-08-22 Nutanix, Inc. Generic proxy endpoints using protocol tunnels including life cycle management and examples for distributed cloud native services and applications
WO2022203387A1 (ko) * 2021-03-23 2022-09-29 (주)인스웨이브시스템즈 소스 컴파일러를 구비한 사용자 인터페이스 플랫폼 통합 개발 시스템 및 방법
US11824773B2 (en) 2021-03-30 2023-11-21 Amazon Technologies, Inc. Dynamic routing for peered virtual routers
US12160366B2 (en) 2021-03-30 2024-12-03 Amazon Technologies, Inc. Multi-tenant offloaded protocol processing for virtual routers
US11907402B1 (en) * 2021-04-28 2024-02-20 Wells Fargo Bank, N.A. Computer-implemented methods, apparatuses, and computer program products for frequency based operations
JP2024517703A (ja) 2021-05-04 2024-04-23 ウィックス.コム リミテッド. ツールキャスト管理システム
CN113282291B (zh) * 2021-06-10 2024-07-26 豆盟(北京)科技股份有限公司 小程序的生成方法、装置、设备及存储介质
CN113176878B (zh) * 2021-06-30 2021-10-08 深圳市维度数据科技股份有限公司 自动查询方法、装置和设备
US20230035835A1 (en) * 2021-07-29 2023-02-02 Spark. Orange, LLC System and method of a modular framework for configuration and reuse of web components
US11558448B1 (en) * 2021-09-22 2023-01-17 International Business Machines Corporation Sparse information sharing system
US11562043B1 (en) * 2021-10-29 2023-01-24 Shopify Inc. System and method for rendering webpage code to dynamically disable an element of template code
US12536244B2 (en) * 2021-12-30 2026-01-27 Rakuten Group, Inc. System, method, and computer program for providing an end-to-end solution for frontend page generation
US11989255B2 (en) * 2021-12-30 2024-05-21 Monday.com Ltd. Client-side sorting and updating of paginated data obtained from a server
WO2023132913A1 (en) * 2022-01-07 2023-07-13 Mastercard International Incorporated Systems and methods for use in imposing a common domain
US12216728B2 (en) 2022-02-23 2025-02-04 Wix.Com Ltd. Concurrent website editing system having conflict handling protocol
WO2023194923A1 (en) * 2022-04-05 2023-10-12 Content Square SAS Tracking session events for a webpage iframe
US11922116B2 (en) * 2022-04-11 2024-03-05 Contentful GmbH Annotations in a content model of a content management system
US12147690B2 (en) 2022-11-22 2024-11-19 Red Hat, Inc. Sharing node storage resources with the entire cluster
JP2026500736A (ja) 2022-12-27 2026-01-08 ウィックス.コム リミテッド. 信頼できるコードコンポーネント及び信頼できないコードコンポーネントに基づいたハイブリッドウェブサイトインターフェースのレンダリングをセキュアに可能にすること
WO2024142016A1 (en) 2022-12-30 2024-07-04 Wix.Com Ltd. System and method for integrated temporal external resource allocation
US12436746B2 (en) * 2023-01-10 2025-10-07 Palantir Technologies Inc. Method and system for hosting third-party web widgets for application development
WO2024166066A1 (en) 2023-02-10 2024-08-15 Wix.Com Ltd. System and method for network transaction facilitator support within a website building system
US12021743B1 (en) 2023-03-27 2024-06-25 Amazon Technologies, Inc. Software-defined multi-network-segment gateways for scalable routing of traffic between customer-premise network segments and cloud-based virtual networks
US12483499B2 (en) 2023-03-27 2025-11-25 Amazon Technologies, Inc. Custom configuration of cloud-based multi-network-segment gateways
US20240386197A1 (en) 2023-05-15 2024-11-21 Wix.Com Ltd. System and method for enhanced model interaction integration within a website building system
US12541284B2 (en) 2023-06-12 2026-02-03 Wix.Com Ltd. System and method for integrating custom content object repositories within a website building system
US12489707B1 (en) 2023-06-21 2025-12-02 Amazon Technologies, Inc. Modification of routing and forwarding information for cloud network traffic using customer-specified rules
US20240427832A1 (en) 2023-06-23 2024-12-26 Wix.Com Ltd. System and method for ai-based generation of responsive websites using a website building system
WO2025023987A1 (en) * 2023-07-21 2025-01-30 Inkit, Inc. Methods and systems for file generation and storage
US12278881B1 (en) 2023-10-25 2025-04-15 Microsoft Technology Licensing, Llc Domain agnostic offline runtime for single page applications
US12556633B2 (en) * 2023-12-19 2026-02-17 Genesys Cloud Services, Inc. Dynamic content generation for contact center interactions using artificial intelligence
US12536004B1 (en) 2025-05-13 2026-01-27 Morgan Stanley Services Group Inc. System and method for round-robinediting of a generated user interface

Family Cites Families (155)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6247032B1 (en) * 1997-06-19 2001-06-12 International Business Machines Corp. Automated system and method for approving web site content
WO2000050969A2 (en) * 1999-02-26 2000-08-31 Henry Haugland Mass generation of individual virtual servers, virtual web sites and virtual web objects
US7596606B2 (en) * 1999-03-11 2009-09-29 Codignotto John D Message publishing system for publishing messages from identified, authorized senders
US7289964B1 (en) * 1999-08-31 2007-10-30 Accenture Llp System and method for transaction services patterns in a netcentric environment
US6636242B2 (en) * 1999-08-31 2003-10-21 Accenture Llp View configurer in a presentation services patterns environment
US6728762B1 (en) * 2000-01-04 2004-04-27 International Business Machines Corporation System and method for browser definition of workflow documents
US8065399B2 (en) * 2000-04-17 2011-11-22 Circadence Corporation Automated network infrastructure test and diagnostic system and method therefor
US20020065851A1 (en) * 2000-06-02 2002-05-30 Watson Emerson C. System and method for creating a website
US6732332B1 (en) * 2000-08-28 2004-05-04 Und Aerospace Foundation Automated web site creation system
US6901424B1 (en) * 2000-10-10 2005-05-31 Markettools, Inc. System and method for creating a sample pool for a web-based survey
US20020099738A1 (en) * 2000-11-22 2002-07-25 Grant Hugh Alexander Automated web access for back-end enterprise systems
JP2002202937A (ja) * 2000-12-28 2002-07-19 Ibi Kk ウェブサイト自動作成装置、ウェブサイト自動作成システム、ウェブサイト自動作成方法、及び、記録媒体
US20020165936A1 (en) * 2001-01-25 2002-11-07 Victor Alston Dynamically branded web sites
EP1402352A4 (en) 2001-02-22 2010-08-25 Accenture Global Services Gmbh DISTRIBUTED DEVELOPMENT ENVIRONMENT FOR BUILDING INTERNET APPLICATIONS BY DEVELOPERS AT DISCONTINUED LOCATIONS
US8601492B2 (en) * 2001-03-31 2013-12-03 Siebel Systems, Inc. User interface for multi-channel communication
US7546576B2 (en) * 2001-06-15 2009-06-09 Lightsurf Technology, Inc. Software framework for web-based applications
US7000218B2 (en) * 2001-06-29 2006-02-14 International Business Machines Corporation System and method for developing custom programmable tags
US6985939B2 (en) * 2001-09-19 2006-01-10 International Business Machines Corporation Building distributed software services as aggregations of other services
JP2003150377A (ja) 2001-11-16 2003-05-23 Nec Corp 画面出力モジュール開発システム、画面出力モジュール開発方法及びプログラム並びに記録媒体
US7178108B1 (en) * 2001-12-28 2007-02-13 Sprint Communications Company L.P. System and method for development, maintenance and modification of multiple web sites
JP2004005527A (ja) * 2002-03-28 2004-01-08 Yosuke Hiratsuka 階層型サイト情報作成プログラム
JP2004062402A (ja) * 2002-07-26 2004-02-26 Fujitsu Ltd タイムアウト管理システム、タイムアウト管理サーバ、およびタイムアウト管理プログラム
CA2406876A1 (en) * 2002-10-04 2004-04-04 Ibm Canada Limited-Ibm Canada Limitee Method and apparatus for managing a collection of portlets in a portal server
US7240077B1 (en) * 2002-12-30 2007-07-03 Amazon.Com, Inc. Web site content change management
US7062506B2 (en) * 2003-01-24 2006-06-13 The Cobalt Group, Inc. Staged publication and management of dynamic webpages
US7613687B2 (en) * 2003-05-30 2009-11-03 Truelocal Inc. Systems and methods for enhancing web-based searching
US9778919B2 (en) * 2003-06-27 2017-10-03 Adobe Systems Incorporated Dual context interaction with a content object for facilitating content creation and software development
US7640506B2 (en) * 2003-06-27 2009-12-29 Microsoft Corporation Method and apparatus for viewing and managing collaboration data from within the context of a shared document
US20040268238A1 (en) * 2003-06-30 2004-12-30 Peiya Liu Systems and methods for processing documents using an XML-based process flow description language
US7308643B1 (en) * 2003-07-03 2007-12-11 Google Inc. Anchor tag indexing in a web crawler system
US7403491B2 (en) * 2004-04-15 2008-07-22 Alcatel Lucent Framework for template-based retrieval of information from managed entities in a communication network
JP2006146506A (ja) * 2004-11-18 2006-06-08 Image:Kk Webサイト更新システム、Webサイト更新方法およびWebサイト更新プログラム
US8019749B2 (en) * 2005-03-17 2011-09-13 Roy Leban System, method, and user interface for organizing and searching information
US7689663B2 (en) * 2005-03-24 2010-03-30 Hewlett-Packard Development Company, L.P. Embedded web-based management method
US7536641B2 (en) * 2005-04-29 2009-05-19 Google Inc. Web page authoring tool for structured documents
US7734644B2 (en) * 2005-05-06 2010-06-08 Seaton Gras System and method for hierarchical information retrieval from a coded collection of relational data
US7734722B2 (en) * 2005-06-02 2010-06-08 Genius.Com Incorporated Deep clickflow tracking
EP1934800A4 (en) * 2005-08-17 2010-12-08 Wideport Com Inc AUTOMATIC WEBSITE GENERATOR
US8117531B1 (en) * 2005-09-23 2012-02-14 Google Inc. Interpreted language translation system and method
US8301997B2 (en) * 2006-01-10 2012-10-30 International Business Machines Corporation System and method for serving multiple data objects and formatting functions in a single request
GB2434947B (en) * 2006-02-02 2011-01-26 Identum Ltd Electronic data communication system
US20070220419A1 (en) * 2006-03-10 2007-09-20 Web.Com, Inc. Systems and Methods of Providing Web Content to Multiple Browser Device Types
US7974956B2 (en) * 2006-07-21 2011-07-05 Yahoo! Inc. Authenticating a site while protecting against security holes by handling common web server configurations
US20080071929A1 (en) * 2006-09-18 2008-03-20 Yann Emmanuel Motte Methods and apparatus for selection of information and web page generation
US20090210631A1 (en) * 2006-09-22 2009-08-20 Bea Systems, Inc. Mobile application cache system
GB0622823D0 (en) * 2006-11-15 2006-12-27 British Broadcasting Corp Accessing content
WO2008063624A2 (en) * 2006-11-17 2008-05-29 Globaltel Media, Inc. System and method for delivering web content to a mobile network
JP5312349B2 (ja) * 2007-02-09 2013-10-09 ノキア コーポレイション 情報コンテンツの一部分をクライアント装置に与える方法およびシステム
US20080243852A1 (en) * 2007-03-26 2008-10-02 International Business Machines Corporation System and Methods for Enabling Collaboration in Online Enterprise Applications
US8499237B2 (en) * 2007-03-29 2013-07-30 Hiconversion, Inc. Method and apparatus for application enabling of websites
WO2008156923A2 (en) * 2007-05-03 2008-12-24 3Dlabs Inc., Ltd. Method for remotely configuring user interfaces for portable devices
US8838728B2 (en) * 2007-05-22 2014-09-16 Nokia Corporation Method, system, apparatus, network entity and computer program product for providing a user with an editable webpage
US10019570B2 (en) * 2007-06-14 2018-07-10 Microsoft Technology Licensing, Llc Protection and communication abstractions for web browsers
US8181246B2 (en) * 2007-06-20 2012-05-15 Imperva, Inc. System and method for preventing web frauds committed using client-scripting attacks
US8577835B2 (en) * 2007-06-28 2013-11-05 Salesforce.Com, Inc. Method and system for sharing data between subscribers of a multi-tenant database service
US8584094B2 (en) * 2007-06-29 2013-11-12 Microsoft Corporation Dynamically computing reputation scores for objects
US7779161B2 (en) * 2007-07-24 2010-08-17 Hiconversion, Inc. Method and apparatus for general virtual application enabling of websites
US8464228B2 (en) * 2007-08-23 2013-06-11 Accenture Global Services Limited Binary library
US9268849B2 (en) * 2007-09-07 2016-02-23 Alexander Siedlecki Apparatus and methods for web marketing tools for digital archives—web portal advertising arts
US8387006B1 (en) * 2007-12-05 2013-02-26 Adobe Systems Incorporated System and method for authoring a web page to be run-time editable
CA2710346A1 (en) * 2007-12-20 2009-07-02 Hsbc Technologies Inc. Automated methods and systems for developing and deploying projects in parallel
JP2009176296A (ja) * 2007-12-27 2009-08-06 Nippon Institute Of Agroinformatics Ltd Web文書編集方法
CN101488135B (zh) 2008-01-14 2012-07-04 盛大计算机(上海)有限公司 延后个性化网页的设计和获取方法
US7886021B2 (en) * 2008-04-28 2011-02-08 Oracle America, Inc. System and method for programmatic management of distributed computing resources
US8341200B2 (en) * 2008-06-12 2012-12-25 Pomian & Corella, Llc Protecting a web application against attacks through shared files
MY154409A (en) * 2008-07-21 2015-06-15 Secure Corp M Sdn Bhd F Website content regulation
US8627288B2 (en) * 2008-07-22 2014-01-07 Webtrends Inc. Method and system for web-site testing
JP5476709B2 (ja) * 2008-12-09 2014-04-23 富士通株式会社 Webページ編集プログラム及びWebページ編集装置
JP2010181978A (ja) * 2009-02-03 2010-08-19 Seiko Epson Corp 共同作業装置及び共同作業の制御方法
US9691170B2 (en) * 2009-03-18 2017-06-27 Shutterfly, Inc. Proactive creation of photo products
GB0909695D0 (en) * 2009-06-05 2009-07-22 Maxymiser Ltd On page console
CN102257477B (zh) 2009-09-17 2015-04-15 株式会社三菱东京Ufj银行 应用开发支援装置
US9883008B2 (en) * 2010-01-15 2018-01-30 Endurance International Group, Inc. Virtualization of multiple distinct website hosting architectures
US8438648B2 (en) * 2010-02-16 2013-05-07 Celartem, Inc. Preventing unauthorized font linking
US8850219B2 (en) * 2010-05-13 2014-09-30 Salesforce.Com, Inc. Secure communications
WO2012014248A1 (ja) * 2010-07-25 2012-02-02 株式会社 コアアプリ ファイル公開管理コンピュータプログラム、ファイル公開管理コンピュータシステム
US8966446B1 (en) * 2010-09-29 2015-02-24 A9.Com, Inc. Systems and methods of live experimentation on content provided by a web site
US20120131645A1 (en) * 2010-11-18 2012-05-24 Harm Michael W User Scriptable Server Initiated User Interface Creation
US8839093B1 (en) * 2011-01-12 2014-09-16 Optimizely, Inc. Systems and methods for website optimization
JP5843459B2 (ja) 2011-03-30 2016-01-13 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 情報処理システム、情報処理装置、スケーリング方法、プログラムおよび記録媒体
US8910156B1 (en) * 2011-04-29 2014-12-09 Netapp, Inc. Virtual machine dependency
US8938791B2 (en) * 2011-06-10 2015-01-20 International Business Machines Corporation System and method to control display of a realm name
US8874593B2 (en) * 2011-07-01 2014-10-28 Salesforce.Com, Inc. Testing data silo
US8959427B1 (en) * 2011-08-05 2015-02-17 Google Inc. System and method for JavaScript based HTML website layouts
US8474056B2 (en) 2011-08-15 2013-06-25 Bank Of America Corporation Method and apparatus for token-based virtual machine recycling
WO2013067437A1 (en) * 2011-11-02 2013-05-10 Hoffman Michael Theodor Systems and methods for dynamic digital product synthesis, commerce, and distribution
US20130117152A1 (en) * 2011-11-03 2013-05-09 Cbs Interactive, Inc. Javascript Widget Storefront
US8671417B2 (en) * 2011-12-12 2014-03-11 Microsoft Corporation Lightweight framework for web applications
US8793660B2 (en) * 2011-12-30 2014-07-29 Cellco Partnership Automated testing of programming code for a web service
WO2013106708A1 (en) * 2012-01-11 2013-07-18 Endurance International Group, Inc. Guided workflows for establishing a web presence
DE102013202782A1 (de) 2012-02-20 2013-08-22 Wixpress Ltd Server-basiertes Webseiten-Designsystem, das ein dynamisches Layout und dynamischen Inhalt integriert
WO2013142273A1 (en) * 2012-03-19 2013-09-26 Citrix Systems, Inc. Systems and methods for providing user interfaces for management applications
US9430449B2 (en) * 2012-03-30 2016-08-30 Sdl Plc Systems, methods, and media for managing editable previews of webpages
US9262420B1 (en) * 2012-04-23 2016-02-16 Google Inc. Third-party indexable text
US9672283B2 (en) * 2012-06-06 2017-06-06 Data Record Science Structured and social data aggregator
US20130346849A1 (en) * 2012-06-06 2013-12-26 Minds + Machines Automatic uploading and synchronization of media assets
US8943086B2 (en) * 2012-06-29 2015-01-27 Sap Se Model-based backend service adaptation of business objects
US20140047413A1 (en) * 2012-08-09 2014-02-13 Modit, Inc. Developing, Modifying, and Using Applications
US8522134B1 (en) * 2012-08-13 2013-08-27 Volusion, Inc. Methods and apparatus for in-line editing of web page content with reduced disruption of logical and presentational structure of content
US20140053060A1 (en) * 2012-08-17 2014-02-20 Launchbase, LLC Website development tool
US10585981B2 (en) * 2012-09-13 2020-03-10 Samir Issa Method of data capture, storage and retrieval through user created form templates and data item templates by executing computer-executable instructions stored on a non-transitory computer-readable medium
US9317490B2 (en) * 2012-09-19 2016-04-19 TagMan Inc. Systems and methods for 3-tier tag container architecture
US20140096009A1 (en) * 2012-09-28 2014-04-03 Interactive Memories, Inc. Methods for Searching for Best Digital Color Options for Reproduction of Image-Based Layouts Created through an Electronic Interface
US11449952B2 (en) * 2012-10-01 2022-09-20 Oracle International Corporation Efficiently modeling database scenarios for later use on live data
US9195477B1 (en) * 2012-10-09 2015-11-24 Sencha, Inc. Device profiles, deep linking, and browser history support for web applications
US9185078B2 (en) * 2012-12-18 2015-11-10 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing cross organizational data sharing
US9002997B2 (en) * 2013-01-22 2015-04-07 Amazon Technologies, Inc. Instance host configuration
US10089406B2 (en) * 2013-01-30 2018-10-02 Oracle International Corporation Generating web pages with integrated content
US9712593B2 (en) * 2013-02-04 2017-07-18 Oracle International Corporation Javascript API for WebRTC
US9307031B2 (en) * 2013-02-04 2016-04-05 Oracle International Corporation Generic model for customizing protocol behavior through javascript
WO2014124310A1 (en) * 2013-02-07 2014-08-14 MaxPoint Interactive, Inc. A system for improving shape-based targeting by using interest level data
IL309008B2 (en) 2013-02-10 2025-04-01 Wix Com Ltd Communication interface for third-party applications
US9465586B2 (en) 2013-02-27 2016-10-11 Google Inc. Third party application scriptability
EA201591779A1 (ru) * 2013-03-14 2016-03-31 Викс.Ком Лтд. Система и способ персонализации диалогов
US9971790B2 (en) * 2013-03-15 2018-05-15 Google Llc Generating descriptive text for images in documents using seed descriptors
US20170147480A1 (en) * 2013-04-23 2017-05-25 Google Inc. Test script generation
US20150011338A1 (en) * 2013-07-02 2015-01-08 Jeremy Russotti Training device
US10362145B2 (en) * 2013-07-05 2019-07-23 The Boeing Company Server system for providing current data and past data to clients
US9836330B2 (en) 2013-07-16 2017-12-05 Hitachi, Ltd. Virtual resource management tool for cloud computing service
US9513885B2 (en) * 2013-08-22 2016-12-06 Peter Warren Web application development platform with relationship modeling
US20150058339A1 (en) 2013-08-26 2015-02-26 Go DaddyOperating Company, LLC Method for automating search engine optimization for websites
US9229702B1 (en) * 2013-08-28 2016-01-05 Lithium Technologies, Inc. Systems and methods for application plugin deployment for websites
US9870349B2 (en) * 2013-09-20 2018-01-16 Yottaa Inc. Systems and methods for managing loading priority or sequencing of fragments of a web object
US10853837B2 (en) * 2013-10-07 2020-12-01 Adobe Inc. Integrated testing, targeting and measuring of web site components
US9519525B2 (en) * 2013-11-14 2016-12-13 Dropbox, Inc. File-level commenting
US9817801B2 (en) 2013-12-04 2017-11-14 Go Daddy Operating Company, LLC Website content and SEO modifications via a web browser for native and third party hosted websites
US9607332B1 (en) * 2014-02-07 2017-03-28 Google Inc. Embedded web application gallery
WO2015121813A1 (en) 2014-02-11 2015-08-20 Wix.Com Ltd. System for synchronization of changes in edited websites and interactive applications
US9305000B1 (en) 2014-03-27 2016-04-05 Veritas Us Ip Holdings Llc Creating and publishing service level representations of applications from operational representations
CA2949397A1 (en) * 2014-05-18 2015-11-26 Kai ZHOU Performance testing system and method
US20150363503A1 (en) * 2014-06-12 2015-12-17 Go Daddy Operating Company, LLC System and methods for proposing media for a web page
JP6114480B2 (ja) * 2014-08-11 2017-04-12 日本電信電話株式会社 構築装置、構築方法、および、構築プログラム
US9954936B2 (en) 2015-03-02 2018-04-24 International Business Machines Corporation Migrating legacy applications to a multi-tenant computing environment
EP3070618A1 (en) 2015-03-20 2016-09-21 Michael Weller Computer system and method for dynamic website instantiation
IL271671B2 (en) 2015-06-07 2025-08-01 Wix Com Ltd System and method for the generation of an adaptive user interface in a website building system
US10726371B2 (en) * 2015-06-08 2020-07-28 Sap Se Test system using production data without disturbing production system
WO2016205977A1 (en) 2015-06-26 2016-12-29 Intel Corporation Techniques to run one or more containers on virtual machine
US9864735B1 (en) * 2015-08-27 2018-01-09 Google Llc In-domain webpage editing
US10229214B2 (en) * 2015-12-31 2019-03-12 Ca, Inc. Dynamic web page navigation
US10148790B2 (en) * 2016-03-04 2018-12-04 Bank Of America Corporation Deployment of integrative HTML-based engine from an edge server
US10684839B2 (en) * 2016-06-15 2020-06-16 Red Hat Israel, Ltd. Plugin for software deployment
US10678995B2 (en) * 2016-08-12 2020-06-09 Netsuite, Inc. System and methods for control of content presented on web pages
US20180052809A1 (en) * 2016-08-16 2018-02-22 Microsoft Technology Licensing, Llc Inferring user interaction with an iframe
US10025924B1 (en) * 2016-08-26 2018-07-17 Parallels IP Holdings GmbH Taskless containers for enhanced isolation of users and multi-tenant applications
US10223078B2 (en) * 2016-09-29 2019-03-05 Ca, Inc. Application-type independent dynamic plug-in evaluation tool
US20180097820A1 (en) * 2016-10-03 2018-04-05 Adobe Systems Incorporated Managing content upload and content retrieval
US11537272B2 (en) * 2016-12-21 2022-12-27 Aon Global Operations Se, Singapore Branch Content management system extensions
US10250389B2 (en) * 2017-01-17 2019-04-02 Go Daddy Operating Company, LLC Script verification using a hash
US10671570B2 (en) * 2017-02-01 2020-06-02 Open Text Sa Ulc Web application open platform interface (WOPI) server architecture and applications for distributed network computing environments
US11003668B2 (en) * 2017-02-21 2021-05-11 Sap Se Programming language independent software testing environment
US20180309720A1 (en) * 2017-04-25 2018-10-25 Verisign, Inc. Systems, devices, and methods for automatic website generation and domain name suggestion
US10572361B2 (en) * 2017-04-28 2020-02-25 The Boeing Company Concurrent production use of a production enterprise system and testing of a modified enterprise system
US11106860B2 (en) 2017-07-24 2021-08-31 Wix.Com Ltd. Common database for live operation and testing of a website
US10866935B2 (en) * 2017-08-18 2020-12-15 Benjamin J. Chung File management method
US20200057714A1 (en) * 2018-08-17 2020-02-20 Google Llc Testing data changes in production systems

Also Published As

Publication number Publication date
AU2025237969A1 (en) 2025-10-16
JP2025128112A (ja) 2025-09-02
US10719300B2 (en) 2020-07-21
JP2026063014A (ja) 2026-04-10
US20250335696A1 (en) 2025-10-30
JP2024075645A (ja) 2024-06-04
US20190028531A1 (en) 2019-01-24
IL271915A (en) 2020-02-27
US20190026443A1 (en) 2019-01-24
JP2025000885A (ja) 2025-01-07
US10397305B1 (en) 2019-08-27
US12346650B2 (en) 2025-07-01
US11106860B2 (en) 2021-08-31
EP4235461A2 (en) 2023-08-30
US20210397776A1 (en) 2021-12-23
JP2020530610A (ja) 2020-10-22
US20190149591A1 (en) 2019-05-16
US20190026296A1 (en) 2019-01-24
US20190258459A1 (en) 2019-08-22
JP7804129B2 (ja) 2026-01-21
EP4664326A3 (en) 2026-05-06
AU2018319444B2 (en) 2023-11-16
US20190026382A1 (en) 2019-01-24
US10326821B2 (en) 2019-06-18
EP4235461B1 (en) 2025-10-29
US10379820B1 (en) 2019-08-13
US10915300B2 (en) 2021-02-09
AU2024200221A1 (en) 2024-02-01
EP3593254B1 (en) 2023-08-02
AU2024200221B2 (en) 2025-07-03
US20190245910A1 (en) 2019-08-08
JP7546481B2 (ja) 2024-09-06
CA3060362A1 (en) 2019-02-28
WO2019038588A1 (en) 2019-02-28
US11875104B2 (en) 2024-01-16
BR112019024309A2 (pt) 2020-11-03
JP7611443B2 (ja) 2025-01-09
EP3593254A4 (en) 2021-01-20
US20190026082A1 (en) 2019-01-24
US10521198B2 (en) 2019-12-31
US20240220706A1 (en) 2024-07-04
EP3593254A1 (en) 2020-01-15
EP4664326A2 (en) 2025-12-17
US10331420B2 (en) 2019-06-25
ES2970458T3 (es) 2024-05-28
JP7719932B2 (ja) 2025-08-06
US10209966B2 (en) 2019-02-19
US20190026083A1 (en) 2019-01-24
AU2018319444A1 (en) 2019-10-31
EP4235461A3 (en) 2023-11-15

Similar Documents

Publication Publication Date Title
US12346650B2 (en) On-demand web-server execution instance for website hosting with custom back-end functionality
Zabir Building a Web 2.0 Portal with ASP. NET 3.5: Learn How to Build a State-of-the-Art Ajax Start Page Using ASP. NET,. NET 3.5, LINQ, Windows WF, and More
Manfield Joomla for Developers
Oikonomou Development of web-based content management software using open technologies
WO2015166243A1 (en) Web site deployment system and method
Williams et al. Microsoft SharePoint 2013 Administration Inside Out