IMAGE AS DATABASE
A server generates an image with searchable information from a website and transmits that image to a client device. Since the image may be large, the image is generated and transmitted in the background as the client device browses the website. When the client device requests information from the website, the client device first checks if that information has already been transmitted to it in the image as encoded format. If the client device has this information, which is locally stored, then the client device decodes that portion of the image and retrieves the requested information without ever having to contact the server. If the client device does not have this information stored locally, then the client device contacts the server and retrieves the information. Since the image can contain all of the searchable information of a website, the searching process will become faster as time passes.
This application is a continuation of allowed U.S. application Ser. No. 12/965,603 entitled “IMAGE AS DATABASE,” filed Dec. 10, 2010, which is incorporated herein by reference for all purposes.
BACKGROUNDNetworks such as the Internet are used more everyday as a way of communicating and doing business. Users use client devices such as computers, laptops, mobile terminals, personal digital assistants, hand held devices, and similar devices to access the Internet and communicate with others and conduct business. Most of these client devices, which communicate via the Internet, run software that includes graphical user interfaces which allow the user to make selections and navigate through the Internet. Most of these graphical user interfaces run browser programs that allow the user to connect to websites housed on servers and to navigate those websites. When a user logs on to a website using a client device, the user browses or navigates through that website by sending requests to the website asking for certain information to be retrieved. For example, if a user logs on to a website selling goods, the user may request the website to provide details about digital cameras costing between $100 and $300. Completing these requests takes time because the user's computer first has to send the request through a network (internet) to the server, the server has to then search its database, retrieve the requested information and send the requested information back to the user's computer via the network (internet) again. There is further overhead in the amount of time that is spent because the data, which is in text format, is processed by the browser both when the data is sent and when the data is received.
This process of requesting and retrieving information from a website has been made more efficient over time by minimizing the amount of time that the user using a client device spends communicating with the server. For example, Java screen and javascripts with Ajax have been used to minimize the amount of time that is spent communicating between the client device and the server by fetching data before the data is actually needed. However, these techniques also have problems associated with them because a significant amount of time and resources are spent processing and interpreting data that has been pre-fetched but that may never be needed.
Some websites, such as merchant websites that offer many items for sale, can include large volumes of searchable data. Browsing these websites can be time consuming because the user is frequently searching for different items with different features. Every time a new search is desired, the user must either communicate with the server requesting information or must wait for the user's computer to process large amounts of data that may not be on point for the search conducted. These potential long waiting times for receiving requested information can be frustrating to a user, especially when the user is frequently modifying the search parameters, which can result in lost sales and less repeat business.
A further understanding of the nature and advantages of the disclosure may be realized by reference to the remaining portions of the specification and the drawings, presented below. The figures are incorporated into the detailed description portion of the disclosure.
In the following description, for the purposes of explanation, specific details are set forth in order to provide a thorough understanding of the disclosure. However, it will be apparent that the disclosure may be practiced without these specific details.
Embodiments provide systems and methods used by servers, client devices, and other such systems or components to efficiently search content, such as content offered through one or more websites. When a client device accesses a source of content such as a website running on a server, for example, the server in at least some embodiments will generate at least one image with searchable information from the website and transmit that image to the client device. Since the image may be large, the image in at least some embodiments is generated and transmitted in the background as the client device browses, or otherwise navigates, the website. When the client device requests information from the website, the client device first checks if that information has already been transmitted to the client device in the image as an encoded format. If the client device has this information locally stored, the client device can decode that portion of the image and retrieve the requested information without having to contact the server again for that information. This allows for very fast and efficient surfing or searching of content on a website or other such grouping of content. If the client device does not have this information stored locally, then the client device can contact the server (or another appropriate source of content) and retrieve the information. Since each image can contain some or all of the searchable information of a website, the searching process will become faster as time passes because more of the image will have been transmitted to the client device since this process runs in the background. Once the entire image has been transmitted to the client device, searching the website will be very efficient because all of the searchable information will be available locally to the client device and the client device will not have to retrieve information from the server, at least until such time as more information and/or a newer version of the image becomes available.
As an example, if the website is a vendor that sells merchandise over the internet, then the document that is encoded into an image by the server can be the vendor's entire catalog of merchandise. Once the image has been completely transmitted to the client device, searching the catalog will be very fast because the client device will no longer have to communicate over the internet with the server to retrieve catalog related information.
Embodiments also include systems and methods operating on a server or other such computing device that encode information into an image having pixels, break up the image into a set of image segments, and transmit the image segments (or subimages) to a client dynamically as the client browses the server. If a request from a client to retrieve requested information is received by the server while the image is being segmented and transmitted to the client, the server can transmit the specific requested information to the client immediately without stopping the process of segmenting and transmitting the image. Transmitting the image segments (or subimages) dynamically can be done as part of the background process independent of the client device. The image segments (or subimages) are in a non-text format and are transmitted dynamically in the background until all of image segments (or subimages) needed to complete the image have been transmitted. The image segments (or subimages) can further be transmitted to the client automatically without receiving a request from the client device. Patches, which are updates to the image, can also be transmitted to the client device. Encoding information into an image can include encoding a document into the image and the document can be a complete catalog.
Embodiments further include systems and methods operating on a client device that access a source of content such as a server, receive image segments (or subimages) from the server, generate a data set having pixels using the received image segments (or subimages), wherein the data set is a partial data set until the data set is completely generated and becomes a finished data set. The systems and methods further receive an input at a first time to retrieve requested information and determine if the requested information is included in the data set generated at the first time, independently of whether the data set is the partial data set or the data set is the finished data set. If the requested information is included in the data set, then pixels from an image encoding the data set, which include the requested information, are retrieved and decoded to generate the requested information. If the requested information is not included in the data set, then a request is sent to a server to send the requested information. The plurality of image segments (or subimages) are received dynamically in the background until all of the image segments (or subimages) needed to form the finished data set have been received and the data set is generated dynamically in the background using the received image segments (or subimages) until the finished data set is generated. Receiving image segments (or subimages) dynamically and generating the data set dynamically is done as part of the background process. The input is also received independently of whether all the image segments (or subimages) needed to generate the data set are received and independently of whether the data set is the partial data set or the finished data set. An index of the retrieved pixels can also be generated.
The network 104 can include any appropriate network, including an intranet, the Internet, a cellular network, a local area network, or any other such network or combination thereof. Components used for such a system can depend at least in part upon the type of network and/or environment selected. Protocols and components for communicating via such a network are well known and will not be discussed herein in detail. Communication over the network can be enabled by wired or wireless connections, and combinations thereof. In this example, the network includes the Internet, as the environment includes a primary content provider 106 and a supplemental content provider 108. Each provider can include at least one Web server 110, 111 for receiving inputs from a user device 102 and serving content in response thereto, although for other networks an alternative device serving a similar purpose could be used as would be apparent to one of ordinary skill in the art.
Each content provider in this illustrative environment includes at least one application server 112, 114 or other such server in communication with at least one data store 116, 118, 124. It should be understood that there can be several application servers, layers, and/or other elements, processes, or components, which may be chained or otherwise configured, which can interact to perform tasks such as obtaining data from an appropriate data store. As used herein the term “data store” refers to any device or combination of devices capable of storing, accessing, and retrieving data, which may include any combination and number of data servers, databases, data storage devices, and data storage media, in any standard, distributed, or clustered environment. An application server can include any appropriate hardware and software for integrating with the data store as needed to execute aspects of one or more applications for the client device, handling a majority of the data access and business logic for an application. The application server provides access control services in cooperation with the data store, and is able to generate content such as text, graphics, audio, and/or video to be transferred to the user, which may be served to the user by the Web server in the form of HTML, XML, or another appropriate structured language in this example. The handling of all inputs and responses, as well as the delivery of content between the client device 102 and an application server, can be handled by the respective Web server or other server such as content delivery server 123. It should be understood that the Web and application servers are not required and are merely example components, as structured code discussed herein can be executed on any appropriate device or host machine as discussed elsewhere herein. Further, the environment can be architected in such a way that a test automation framework can be provided as a service to which a user or application can subscribe. A test automation framework can be provided as an implementation of any of the various testing patterns discussed herein, although various other implementations can be used as well, as discussed or suggested herein.
Each data store can include several separate data tables, databases, or other data storage mechanisms and media for storing data relating to a particular aspect. For example, the page data store 116 illustrated includes mechanisms for storing page data useful for generating Web pages and the user information data store 118 includes information useful for selecting and/or customizing the Web pages for the user. It should be understood that there can be many other aspects that may need to be stored in a data store, such as access right information, which can be stored in any of the above listed mechanisms as appropriate or in additional mechanisms in the data store. Each data store is operable, through logic associated therewith, to receive instructions from a respective application server and obtain, update, or otherwise process data in response thereto. In one example, a user might submit a search request for a certain type of content. In this case, the data store might access the user information to verify the identity of the user, and can access the content information to obtain information about instances of that type of content. The information then can be returned to the user, such as in a results listing on a Web page that the user is able to view via a browser on the user device 102. Information for a particular instance of content can be viewed in a dedicated page or window of the browser.
Each server typically will include an operating system that provides executable program instructions for the general administration and operation of that server, and typically will include a computer-readable medium storing instructions that, when executed by a processor of the server, allow the server to perform its intended functions. Suitable implementations for the operating system and general functionality of the servers are known or commercially available, and are readily implemented by persons having ordinary skill in the art, particularly in light of the disclosure herein.
The environment in one embodiment is a distributed computing environment utilizing several computer systems and components that are interconnected via communication links, using one or more computer networks or direct connections. However, it will be appreciated by those of ordinary skill in the art that such a system could operate equally well in a system having fewer or a greater number of components than are illustrated in
In some embodiments, when a client device 202 is connected to the server 232 and a user is browsing the contents of disk drives 244, the processor 234 automatically and dynamically prepares and sends information to the client device 202, which will be useful to the client device. Dynamically preparing and sending information to the client device 202 is done as part of the background process independent of the content rendered on the client device 202. For example, if a user is browsing a catalog of items for sale on the server 232 using the client device 202, the processor 234 may automatically download to the client device 202 information from the catalog that the user is likely to use. In one embodiment, the server 232 pushes the entire content of a catalog onto the client device 202 because once all of the information from the catalog is on the client's device 202, the user will be able to search the contents of the catalog much faster by only having to retrieve information that is already stored on the client device 202 rather than having to request information over a network.
Before the information is pushed onto the client device 202, the information is encoded into an image having pixels. After the information is converted into an image, portions of the image are transmitted to the client device 202 dynamically as the user browses the website, which is housed on the server 232, using the client device 202. Portions of the image can be transmitted to the client device 202 by forming a plurality of subimages, each of which represent a portion of the entire image, and transmitting those subimages to the client. The subimages, which are in a non-text format, are transmitted dynamically in the background until all of the subimages needed to complete the image originally generated using the information have been transmitted, as further discussed with reference to
In other embodiments large images can be broken up and loaded in batches as a user traverses a site, as further discussed with reference to
The entire contents of a catalog or group of information can be encoded into an image and that image pushed onto the client's device 202. For example, an image can include the entire catalog of products sold by any vendor or supplier such as Sears®, Home Depot®, Wal-Mart®, Target® or the like. When a user begins browsing the website of any vendor or supplier, the processor running on the server 232 begins downloading the image which represents its entire catalog. The image can be prepared as one image or as segments of images which can be downloaded in any order. The longer the user browses the website the more of the image will have been downloaded so that the user will receive results faster and faster until the entire image is downloaded. Once the entire image is downloaded, the user will be able to browse the contents of the vendor's or supplier's catalog very fast because all of the information regarding the catalog will be stored on the client device 202 and the client device will not have to retrieve the information from the server 202 via the network 104 every time the user wishes to see a different part of the catalog. Instead the client device 202 will retrieve and decode pixels from the image which has already been downloaded and is local.
In another embodiment, an image is generated every time a search is done and a large number of results are found as “extra” in the execution of the search. Those “extra” results are encoded in an image, which can be a compact image, and transmitted to the client device 202, which would allow the user to get to those other results efficiently.
In some embodiments, a “sense” is applied to the images, which allows a user to scan the images by moving a pointer such as mouse over the images. As the user scans the images by scrolling over them with a mouse, the user is able to react to the images by for example choosing and buying the product represented by the image.
Image 302 is parsed or broken up into segments 302A-302I, at the server 232 to facilitate downloading image 302 to the client device 202. Each segment 302A-302I is provided with a name. In this example, segments 302A-302I are named Part1.png, Part2.png . . . PartN.png, respectively, where N is the number of segments that the image 302 is parsed into. In the example illustrated, image 302 and segments 302A-302I are Portable Network Graphics (.png) images, which are in bitmapped image format that employs lossless data compression. The invention is not limited to images formatted in this particular .png format and can be implemented using other formats such as in the Graphics Interchange Format (GIF) and Multiple-image Network Graphics (MNG) formats. Image 302 can be parsed into segments according to different criteria. For example, in one embodiment the first image segment 302A named Part1.png can include items from a merchant's catalog starting with the letter “a”, the second image segment 302B, named Part2.png can include items from a merchant's catalog starting with the letter “b”, and so on. In this embodiment a search of the merchant's catalog for items starting with letter “a” is performed in order to generate the first image segment 302A named Part1.png. Similar searches are performed to generate the other image segments 302B-302I. After the image 302 is parsed into segments 302A-302I, the segments are transmitted to the client device.
Next in operation 420, the image segments (or subimages) are transmitted to the client device 202 dynamically as the client device is used to browse the website. While the server 232 is generating and transmitting image segments (or subimages) associated with the document, which includes encoded information, server 232 awaits to receive a request for information related to the website. In some embodiments the image segments (or subimages) are pre-generated and the server only transmits those image segments (or subimages) in operation 420. Since the image segments are transmitted dynamically in the background until all of the image segments (subimages) needed to complete the image have been transmitted from the server 232 to the client device 202, the server 232 might receive requests to transmit information from the client device 202 because the client device 202 may not have the information being requested by the user.
In operation 425, a decision is made whether all the image segments generated from the parsed image have been transmitted from the server 232 to the client device 202. If the decision in operation 425 is that all the image segments have been transmitted to the client device 202 then the method ends in operation 450 because the client device 202 has a complete data set. If the decision in operation 425 is that all the image segments have not been transmitted to the client device 202, then in operation 430 another decision is made whether the server 232 has received a request to transmit identified information to the client device 202. If the decision in operation 430 is that the server 232 has not received a request to transmit identified information to the client device 202, then the method loops back to operation 420 when the server 232 continues to transmit image segments to the client device 202 dynamically as the client device is used to browse the website. If the decision in operation 430 is that the server 232 has received a request to transmit identified information to the client device 202, then in operation 435 another decision is made whether the server 232 has transmitted the requested identified information to the client device 202. If the decision in operation 435 is that the server 232 has transmitted the requested identified information to the client device 202, then the method loops back to operation 420 when the server 232 continues to transmit image segments to the client device 202 dynamically as the client device is used to browse the website. If the decision in operation 435 is that the server 232 has not transmitted the requested identified information to the client device 202, then in operation 440 the requested identified information is transmitted to the client device 202. Next in operation 445, the server 232 transmits the rest of the image segment that the identified information was within. After operation 445, the method loops back to operation 420 when the server 232 continues to transmit image segments to the client device 202 dynamically as the client device is used to browse the website. The method ends in operation 450 after all the image segments have been transmitted to the client device 202, because the client device 202 does not need to request any more information from the server 232 since it has all of the information that the server 232 would transmit directly available to it locally on the image 310 it has saved.
In operation 515, the client device 202 receives image segments from the server 232. Once the client device 202 has accessed the source of content, such as the server 232, the server 232 begins to push down (transmit) to the client device 202 an image having the entire contents of a document encoded, as previously discussed with reference to
Next in operation 525, the client device 202 receives an input from a user at a first time to retrieve a requested information. As the user continues to browse the website housed on server 232, the user continues to conduct searches according to items that the user finds interesting and wishes to explore further. When the user wishes to explore an item further, the user initiates a search by inputting the appropriate parameters into the client device 202. The input is received independently of whether all the image segments needed to generate the image are received and independently of whether the image is the partial image or the finished image. In operation 530, a decision is made whether the information requested by the user via the input to the client device 202 is included in the image generated at the first time independently of whether the image is the partial image or the image is the finished image. If the decision in operation 530 is that the requested information is included in the image, then in operation 535 the pixels from the image that include the requested information are retrieved. Next in operation 540, the retrieved pixels are decoded and the requested information is generated. If the decision in operation 530 is that the requested information is not included in the image, then in operation 545 the client device 202 transmits a request to the server to retrieve the requested information. Next in operation 550, the client device 202 waits to receive the requested information from the server 232 until it receives the requested information in this operation. Since it takes much less time to retrieve and decode the requested information from the image in operations 535 and 540 than to request and retrieve the requested information from the server in operations 545 and 550, the user's browsing experience will be enhanced after the complete image has been received by the client device 202 and there is no need to use operations 545 and 550 to retrieve information.
In operation 555 the process ends after all the requested information has been received and presented to the user. After all the image segments have been transferred to the client device 202, the client device 202 will no longer need to request any more information from the server 232 because it has all of the information that the server 232 would transmit directly available to it locally on the image it has saved. Therefore, after some time the client device 202 will perform operations 545 and 550 if the request to the server is something different than browsing information that was saved on the image. Some examples where the client device 202 would continue to use operations 545 and 550 is when the user decides to purchase something from the website or to retrieve information that was not part of the original document (e.g., not part of the original vendor's catalog).
As discussed above, the various embodiments can be implemented in a wide variety of operating environments, which in some cases can include one or more user computers, computing devices, or processing devices which can be used to operate any of a number of applications. User or client devices can include any of a number of general purpose personal computers, such as desktop or laptop computers running a standard operating system, as well as cellular, wireless, and hand held devices running mobile software and capable of supporting a number of networking and messaging protocols. Such a system also can include a number of workstations running any of a variety of commercially-available operating systems and other known applications for purposes such as development and database management. These devices also can include other electronic devices, such as dummy terminals, thin-clients, gaming systems, and other devices capable of communicating via a network.
Various aspects also can be implemented as part of at least one service or Web service, such as may be part of a service-oriented architecture. Services such as Web services can communicate using any appropriate type of messaging, such as by using messages in extensible markup language (XML) format and exchanged using an appropriate protocol such as SOAP (derived from the “Simple Object Access Protocol”). Processes provided or executed by such services can be written in any appropriate language, such as the Web Services Description Language (WSDL). Using a language such as WSDL allows for functionality such as the automated generation of client-side code in various SOAP frameworks.
Most embodiments utilize at least one network that would be familiar to those skilled in the art for supporting communications using any of a variety of commercially-available protocols, such as TCP/IP, OSI, FTP, UPnP, NFS, CIFS, and AppleTalk. The network can be, for example, a local area network, a wide-area network, a virtual private network, the Internet, an intranet, an extranet, a public switched telephone network, an infrared network, a wireless network, and any combination thereof.
In embodiments utilizing a Web server, the Web server can run any of a variety of server or mid-tier applications, including HTTP servers, FTP servers, CGI servers, data servers, Java servers, and business application servers. The server(s) also may be capable of executing programs or scripts in response inputs from user devices, such as by executing one or more Web applications that may be implemented as one or more scripts or programs written in any programming language, such as Java®, C, C# or C++, or any scripting language, such as Perl, Python, or TCL, as well as combinations thereof. The server(s) may also include database servers, including without limitation those commercially available from Oracle®, Microsoft®, Sybase®, and IBM®.
The environment can include a variety of data stores and other memory and storage media as discussed above. These can reside in a variety of locations, such as on a storage medium local to (and/or resident in) one or more of the computers or remote from any or all of the computers across the network. In a particular set of embodiments, the information may reside in a storage-area network (“SAN”) familiar to those skilled in the art. Similarly, any necessary files for performing the functions attributed to the computers, servers, or other network devices may be stored locally and/or remotely, as appropriate. Where a system includes computerized devices, each such device can include hardware elements that may be electrically coupled via a bus, the elements including, for example, at least one central processing unit (CPU), at least one input device (e.g., a mouse, keyboard, controller, touch display, or keypad), and at least one output device (e.g., a display device, printer, or speaker). Such a system may also include one or more storage devices, such as disk drives, optical storage devices, and solid-state storage devices such as random access memory (“RAM”) or read-only memory (“ROM”), as well as removable media devices, memory cards, flash cards, etc.
Such devices also can include a computer-readable storage media reader, a communications device (e.g., a modem, a network card (wireless or wired), an infrared communication device, etc.), and working memory as described above. The computer-readable storage media reader can be connected with, or configured to receive, a computer-readable storage medium, representing remote, local, fixed, and/or removable storage devices as well as storage media for temporarily and/or more permanently containing, storing, transmitting, and retrieving computer-readable information. The system and various devices also typically will include a number of software applications, modules, services, or other elements located within at least one working memory device, including an operating system and application programs, such as a client application or Web browser. It should be appreciated that alternate embodiments may have numerous variations from that described above. For example, customized hardware might also be used and/or particular elements might be implemented in hardware, software (including portable software, such as applets), or both. Further, connection to other computing devices such as network input/output devices may be employed.
Storage media and computer readable media for containing code, or portions of code, can include any appropriate media known or used in the art, including storage media and communication media, such as but not limited to volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage and/or transmission of information such as computer readable instructions, data structures, program modules, or other data, including RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disk (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the target information and which can be accessed by the a system device. Based on the disclosure and teachings provided herein, a person of ordinary skill in the art will appreciate other ways and/or methods to implement the various embodiments.
The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense. It will, however, be evident that various modifications and changes may be made thereunto without departing from the broader spirit and scope of the invention as set forth in the claims.
Claims
1. A computer-implemented method, comprising:
- sending, to a remote source, a first request from a client device for a first portion of content of a set of content;
- receiving, to the client device, the first portion of content and a data set from the remote source, the data set comprising a plurality of pixel sets, each of the plurality of pixel sets corresponding to a respective portion of content of the set of content;
- storing the plurality of pixel sets in a cache of the client device as part of a background process;
- obtaining a second request for a second portion of content of the set of content;
- determining, from an index on the client device relating portions of content of the set of content to a respective pixel set of the plurality of pixel sets, whether a pixel set of the plurality of pixel sets corresponds to the second portion of content; and
- retrieving the pixel set from the plurality of pixel sets of the data set from the cache or sending the second request to the remote source for the second portion of content.
2. The computer-implemented method of claim 1, further comprising:
- determining that the pixel set is stored in cache on the client device; and
- causing the client device to decode binary data associated with the pixel set into a markup language.
3. The computer-implemented method of claim 2, further comprising:
- analyzing the markup language by a browser executing on the client device; and
- displaying the second portion of content on the client device in the browser.
4. The computer-implemented method of claim 1, further comprising:
- analyzing the index to determine that the pixel set is not stored on the client device;
- receiving, in response to the request, the second portion of content; and
- displaying the second content on the client device.
5. The computer-implemented method of claim 1, further comprising:
- analyzing the index to determine that the pixel set is not stored on the client device; and
- receiving the second portion of content without receiving a direct request from a user of the client device, wherein the second content is cached on the client device as part of the background process.
6. The computer-implemented method of claim 1, further comprising:
- analyzing the index to identify the second portion of content stored on the client device; and
- receiving a patch associated with the second content, wherein the patch is an update to at least a portion of the second portion content.
7. The computer-implemented method of claim 1, wherein the plurality of pixel sets is encoded into an image, and wherein the image is parsed into a plurality of image portions, each portion of the plurality of image portions corresponding to a respective set of pixels of the plurality of pixel sets.
8. The computer-implemented method of claim 1, wherein the set of content includes at least one of audio data or video data.
9. A system, comprising:
- a processor; and
- a memory device including instructions that, upon being executed by the processor, cause the system to: send, to a remote source, a first request from a client device for a first portion of content of a set of content; receive, to the client device, the first portion of content and a data set from the remote source, the data set comprising a plurality of pixel sets, each of the plurality of pixel sets corresponding to a respective portion of content of the set of content; store the plurality of pixel sets in a cache of the client device as part of a background process; obtain a second request for a second portion of content of the set of content; determine, from an index on the client device relating portions of content of the set of content to a respective pixel set of the plurality of pixel sets, whether a pixel set of the plurality of pixel sets corresponds to the second portion of content; and retrieve the pixel set from the plurality of pixel sets of the data set from the cache or sending the second request to the remote source for the second portion of content.
10. The system of claim 9, wherein the instructions when executed further enable the system to:
- determine that the pixel set is stored in cache on the client device;
- cause the client device to decode binary data associated with the pixel set into a markup language; and
- display the second portion of content on the client device.
11. The system of claim 9, wherein the instructions when executed further enable the system to:
- determine that the pixel set is not stored on the client device;
- receive, in response to the request, the second portion of content; and
- display the second content on the client device.
12. The system of claim 9, wherein the instructions when executed further enable the system to:
- determine that the pixel set is not stored on the client device; and
- receive the second portion of content without receiving a direct request from a user of the client device, wherein the second content is cached on the client device as part of the background process.
13. The system of claim 9, wherein the instructions when executed further enable the system to:
- identify the second portion of content stored on the client device; and
- receive a patch associated with the second content, wherein the patch is an update to at least a portion of the second portion content.
14. The system of claim 9, wherein the plurality of pixel sets is encoded into an image, and wherein the image is parsed into a plurality of image portions, each portion of the plurality of image portions corresponding to a respective set of pixels of the plurality of pixel sets.
15. The system of claim 9, wherein the plurality of pixel sets is encoded into an image, and wherein the image is parsed into a plurality of image portions, each portion of the plurality of image portions corresponding to a respective set of pixels of the plurality of pixel sets.
16. The system of claim 9, wherein the instructions when executed further enable the system to:
- decode plurality of pixel sets into objects to generate binary data included within the plurality of pixel sets, wherein the decoded plurality of pixels sets is used to generate the second portion of content.
17. A non-transitory computer-readable storage medium storing instructions that when executed by a processor enable the processor to:
- send, to a remote source, a first request from a client device for a first portion of content of a set of content;
- receive, to the client device, the first portion of content and a data set from the remote source, the data set comprising a plurality of pixel sets, each of the plurality of pixel sets corresponding to a respective portion of content of the set of content;
- store the plurality of pixel sets in a cache of the client device as part of a background process;
- obtain a second request for a second portion of content of the set of content;
- determine, from an index on the client device relating portions of content of the set of content to a respective pixel set of the plurality of pixel sets, whether a pixel set of the plurality of pixel sets corresponds to the second portion of content; and
- retrieve the pixel set from the plurality of pixel sets of the data set from the cache or sending the second request to the remote source for the second portion of content.
18. The non-transitory computer-readable storage medium of claim 17, wherein the instructions when executed further enable the processor to:
- determine that the pixel set is stored in cache on the client device;
- cause the client device to decode binary data associated with the pixel set into a markup language; and
- display the second portion of content on the client device.
19. The non-transitory computer-readable storage medium of claim 17, wherein the instructions when executed further enable the processor to:
- determine that the pixel set is not stored on the client device;
- receive, in response to the request, the second portion of content; and
- display the second content on the client device.
20. The non-transitory computer-readable storage medium of claim 17, wherein the instructions when executed further enable the processor to:
- determine that the pixel set is not stored on the client device; and
- receive the second portion of content without receiving a direct request from a user of the client device, wherein the second content is cached on the client device as part of the background process.
Type: Application
Filed: Aug 10, 2016
Publication Date: Dec 1, 2016
Inventor: Matthew Amacker (Santa Clara, CA)
Application Number: 15/233,744