Efficient bundling and delivery of client-side scripts

US10983770B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-10983770-B2
Application numberUS-202016896880-A
CountryUS
Kind codeB2
Filing dateJun 9, 2020
Priority dateNov 8, 2018
Publication dateApr 20, 2021
Grant dateApr 20, 2021

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

A computing system may include a computing device configured to build modules of script code into bundles, and a bundler application executable to perform operations comprising: obtaining one or more of the modules of script code that are designated for bundling with one another; organizing the modules of script code into one or more chunks; for each respective chunk of the one or more chunks: (i) determining whether the respective chunk is to be assigned a deterministic chunk identifier or a non-deterministic chunk identifier, and (ii) assigning the respective chunk a chunk identifier as determined, where deterministic chunk identifiers are usable for referencing by additional modules of script code both within and not within in the respective chunk, and where the deterministic chunk identifiers are independent of characteristics of the computing device; and writing the one or more chunks to a bundle.

First claim

Opening claim text (preview).

What is claimed is: 1. A method, comprising: determining dependency information for a plurality of modules, wherein each of the plurality of modules comprises script code; organizing the plurality of modules into a plurality of chunks based at least in part on the dependency information of the plurality of modules; for each chunk of the plurality of chunks: determining whether the chunk should be assigned a deterministic chunk identifier (ID) or a non-deterministic chunk ID based at least in part on the dependency information of the plurality of modules; in response to determining that the chunk should be assigned the deterministic chunk ID, assigning the chunk the deterministic chunk ID; and in response to determining that the chunk should be assigned the non-deterministic chunk ID, assigning the chunk the non-deterministic chunk ID; creating a first bundle by combining a first portion of the plurality of chunks based at least in part on the dependency information of the plurality of modules; and creating a second bundle by combining a second portion of the plurality of chunks based at least in part on the dependency information of the plurality of modules. 2. The method of claim 1 , comprising receiving, from a web client, a request for the first bundle, and, in response, providing the first bundle to the web client. 3. The method of claim 2 , wherein the request received from the web client also requests the second bundle, and wherein the method comprises: determining that the first bundle and the second bundle both include a particular chunk having the same deterministic chunk ID; and providing the second bundle to the web client without providing the particular chunk as part of the second bundle. 4. The method of claim 1 , wherein assigning the chunk the deterministic chunk ID comprises generating the deterministic chunk ID based on a combination of names of one or more modules of the chunk, or versions of the one or more modules of the chunk, or any combination thereof. 5. The method of claim 1 , comprising: for each module of the plurality of modules: determining whether the module should be assigned a deterministic module identifier (ID) based on the dependency information of the module; in response to determining that the module should be assigned the deterministic module ID, assigning the module the deterministic module ID; and in response to determining that the module should be assigned a non-deterministic module ID, assigning the module the non-deterministic module ID. 6. The method of claim 1 , comprising: for each chunk of the plurality of chunks: performing minification of the chunk before determining whether the chunk should be assigned the deterministic ID, wherein minification reduces an overall size of the chunk without changing functionality of the one or more modules of the chunk. 7. The method of claim 6 , wherein performing minification comprises removing characters that do not contribute to the functionality of the modules of the chunk, wherein the characters comprise whitespace, comments, newline characters, or a combination thereof. 8. The method of claim 1 , wherein determining the dependency information for the plurality of modules comprises accessing a configuration file to determine the dependency information for the plurality of modules. 9. The method of claim 1 , wherein each of the plurality of modules comprises a JavaScript module. 10. The method of claim 1 , wherein creating the first bundle comprises: bundling, along with the first portion of the plurality of chunks, one or more static resources referenced by the first portion of the plurality of chunks to create the first bundle, wherein the static resources comprise image files, cascading style sheet (CSS) definitions, or a combination thereof. 11. A system comprising: a memory configured to store a plurality of bundles, wherein the plurality of bundles includes: a first bundle having a first chunk with a first deterministic chunk identifier (ID); a second bundle having a second chunk with a second deterministic chunk ID; a processor configured to execute instructions to cause the system to perform action comprising: receiving, from a web client, a request for both the first bundle and the second bundle; comparing the first deterministic chunk ID and the second deterministic chunk ID; in response to determining that the first deterministic chunk ID and the second deterministic chunk ID are different, providing, to the web client, the first bundle and the second bundle; and in response to determining that the first deterministic chunk ID and the second deterministic chunk ID are the same, providing, to the web client, the first bundle and the second bundle without providing the second chunk as part of the second bundle. 12. The system of claim 11 , wherein the processor is configured to execute the instructions to cause the system to perform action comprising: determining dependency information for a plurality of modules, wherein each of the plurality of modules comprise script code; organizing the plurality of modules into a plurality of chunks based at least in part on the dependency information of the plurality of modules; for each chunk of the plurality of chunks: determining whether the chunk should be assigned a deterministic chunk identifier (ID) or a non-deterministic chunk ID based at least in part on the dependency information of the plurality of modules; in response to determining that the chunk should be assigned the deterministic chunk ID, assigning the chunk the deterministic chunk ID; and in response to determining that the chunk should be assigned the non-deterministic chunk ID, assigning the chunk the non-deterministic chunk ID; creating the first bundle in the memory, wherein the first bundle comprises a first portion of the plurality of chunks, including the first chunk; and creating a second bundle in the memory, wherein the second bundle comprises a second portion of the plurality of chunks, including the second chunk. 13. The system of claim 11 , wherein the first chunk contains a single script code module. 14. The system of claim 11 , wherein the first bundle and the second bundle comprise additional chunks having respective non-deterministic chunk IDs. 15. The system of claim 11 , wherein the second bundle includes a third chunk having a third deterministic chunk ID. 16. The system of claim 15 , wherein a module of the first chunk of the first bundle is dependent on a module of the third chunk of the second bundle. 17. A non-transitory, computer-readable medium storing instructions executable by a processor of a computer system, the instructions comprising instructions to: determine dependency information for a plurality of modules, wherein each of the plurality of modules comprise script code; organize the plurality of modules into a plurality of chunks based at least in part on the dependency information of the plurality of modules; for each chunk of the plurality of chunks: determine whether the chunk should be assigned a deterministic chunk identifier (ID) or a non-deterministic chunk ID based at least in part on the dependency information of the plurality of modules; in response to determining that the chunk should be assigned the deterministic chunk ID, assign the chunk the deterministic chunk ID; and in response to determining that the chunk should be assigned the non-deterministic chunk ID, assign the chunk the non-deterministic chunk ID; create a first bundle by combining a first portion of the p

Assignees

Inventors

Classifications

  • G06F8/71Primary

    Version control (security arrangements therefor G06F21/57); Configuration management · CPC title

  • Installation · CPC title

  • Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading · CPC title

  • G06F8/433Primary

    Dependency analysis; Data or control flow analysis · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US10983770B2 cover?
A computing system may include a computing device configured to build modules of script code into bundles, and a bundler application executable to perform operations comprising: obtaining one or more of the modules of script code that are designated for bundling with one another; organizing the modules of script code into one or more chunks; for each respective chunk of the one or more chunks: …
Who is the assignee on this patent?
Servicenow Inc
What technology area does this patent fall under?
Primary CPC classification G06F8/71. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Apr 20 2021 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 6 related publications on this page (citations in our corpus or others sharing the same primary CPC).