US20140149850A1 - Web Browsing Enhanced by Cloud Computing - Google Patents
Web Browsing Enhanced by Cloud Computing Download PDFInfo
- Publication number
- US20140149850A1 US20140149850A1 US13/865,474 US201313865474A US2014149850A1 US 20140149850 A1 US20140149850 A1 US 20140149850A1 US 201313865474 A US201313865474 A US 201313865474A US 2014149850 A1 US2014149850 A1 US 2014149850A1
- Authority
- US
- United States
- Prior art keywords
- computing device
- webpage
- metadata
- server
- processor
- 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.)
- Abandoned
Links
- 238000000034 method Methods 0.000 claims abstract description 186
- 238000012545 processing Methods 0.000 claims description 51
- 230000006870 function Effects 0.000 claims description 26
- 230000004044 response Effects 0.000 claims description 20
- 238000009877 rendering Methods 0.000 claims description 18
- 238000013519 translation Methods 0.000 claims description 12
- 238000013515 script Methods 0.000 claims description 11
- 230000010267 cellular communication Effects 0.000 claims description 8
- 230000008569 process Effects 0.000 abstract description 37
- 238000010295 mobile communication Methods 0.000 description 156
- 238000010586 diagram Methods 0.000 description 27
- 238000004891 communication Methods 0.000 description 14
- 230000000694 effects Effects 0.000 description 11
- 238000012544 monitoring process Methods 0.000 description 9
- 230000009471 action Effects 0.000 description 8
- 238000012552 review Methods 0.000 description 8
- 230000006399 behavior Effects 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 5
- 230000002354 daily effect Effects 0.000 description 5
- 230000003993 interaction Effects 0.000 description 4
- 238000005259 measurement Methods 0.000 description 4
- 230000001413 cellular effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000002452 interceptive effect Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 238000012358 sourcing Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000003203 everyday effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000003825 pressing Methods 0.000 description 2
- 239000013589 supplement Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000004931 aggregating effect Effects 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000005670 electromagnetic radiation Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
- 230000003442 weekly effect Effects 0.000 description 1
Images
Classifications
-
- G06F17/2247—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR 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/93—Document management systems
- G06F16/94—Hypermedia
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9577—Optimising the visualization of content, e.g. distillation of HTML documents
Definitions
- the present invention relates generally to computing devices. More particularly, the present invention relates to methods for supplying hints and/or binary code to a web browser to conserve resources on a computing device.
- Some users generally follow certain daily browsing routines or habits of their mobile computing systems. For example, a user may access a portion of a webpage (e.g., stock quotes or sports scores) more frequently than other portions. Many users follow certain daily habits for consuming media. For example, if there is a newsworthy event that has recently taken place, many users will access the same webpage seeking the newsworthy content.
- a portion of a webpage e.g., stock quotes or sports scores
- Many users follow certain daily habits for consuming media. For example, if there is a newsworthy event that has recently taken place, many users will access the same webpage seeking the newsworthy content.
- the method includes a processor that transmits a request for a webpage from a computing device to a server, and the server returns metadata to the computing device.
- the metadata assists the computing device in parsing, analyzing or executing the request for the webpage, and comprises returned binary code from data processed at the server to assist the computing device.
- a system in another aspect, includes a server and at least two web browsers operable on at least two different computing devices. Each web browser reports the results of processing and rendering webpages to the server.
- the server aggregates the data and the server generates metadata from the aggregated web browser data.
- the server transmits the metadata to at least one computing device.
- the computing device renders a webpage using at least a portion of the metadata.
- An aspect of the present application includes a method for rendering a webpage on a computing device that includes transmitting a request for a webpage from the computing device, transmitting a request from the computing device for a browser assistant, and returning metadata to the computing device to assist the computing device in parsing, analyzing, or executing the request for the webpage.
- the metadata returned to the computing device may include data that may be any one of JavaScript function execution probabilities, Abstract Syntax Tree (AST) data for parsing data, script token data, lexing information, returned binary code from data processed at a server to assist the computing device, CSS metadata to assist in processing CSS webpage data at the computing device, JavaScript metadata to assist in processing JavaScript webpage data at the computing device, HTML metadata to assist in processing HTML webpage data at the computing device, and combinations thereof.
- AST Abstract Syntax Tree
- the metadata returned to the computing device may include a plurality of observed users browsing statistics, and the method may further include using the plurality of observed browsing statistics to assist in loading portions of the webpage at the computing device before other portions.
- the metadata returned to the computing device may include statistics regarding a portion of code that has a predetermined probability of execution.
- the metadata returned to the computing device may include translated binary code resulting from JavaScript code executed on a server, and the method may further include transmitting the binary code to the computing device to maximize processing at the server and minimize processing at the computing device.
- the method may further include sending analytics that correlate to portions of the webpage that are popular so a web browser on the computing device loads the popular portions first.
- Aspect methods may further include gathering habits of a user of the computing device, and preloading into memory webpage elements frequently accessed by the user.
- Aspect methods may further include gathering in a server usage information from a plurality of users corresponding to popular data of the plurality of web users, and generating metadata based on the usage information and an analysis of habits of the plurality of web users.
- Aspect methods may further include sending metadata from a local network computer to the computing device, gathering usage information from a plurality of users corresponding to popular data of other web users, and generating metadata using the local network computer.
- Aspect methods may further include gathering aggregate information on browsing habits based on a plurality of users as the users use a web browser, monitoring the plurality of users to generate the browsing habits using an instrumented web browser, and generating metadata based on the browsing habits of the plurality of users.
- aspects methods may further include generating metadata indicating a library is frequently downloaded, describing in the metadata that the library has a portion that is statistically likely needed before other portions for execution based on observed statistical information, and downloading the portion of the library first based on the metadata.
- the method may further include determining that the library has a most likely executable library portion based on statistical data, downloading the most likely executable library portion first before other portions of the library.
- aspects methods may further include monitoring a plurality of users during browsing, generating metadata indicating a statistical percentage of users are likely to view a first portion of a webpage before other portions, transmitting the first portion to the computing device before other portions of the webpage.
- the metadata may include a profile for a user of the computing device, and the method may further include generating metadata indicating a statistical percentage that the user is likely to view a first portion of a webpage before other portions based on the profile, generating metadata indicating a statistical percentage that the user is not likely to view a second portion of a webpage, downloading the first portion first to the computing device before other portions of the webpage, and downloading the second portion a time period after the first portion.
- aspects methods may further include generating metadata indicating habits of other users browsing, determining which portions of webpages are statistically likely to be accessed before other portions of the webpage based on the metadata, determining that a second portion is likely not accessed frequently, communicating in the metadata that the second portion is not accessed frequently and downloaded lower in priority than portions statistically likely to be accessed.
- aspects methods may further include linking to a server via a wireless network, associating a browser with the server, collecting information for use by the computing device from the browser.
- aspects methods may further include providing hints using the metadata for a web browser to parse, analyze or execute the request that may include JavaScript, determining that the JavaScript is inefficient to process at the computing device, and transmitting a binary pre-compiled translation of the JavaScript.
- Aspect methods may further include aggregating statistics regarding a plurality of web users browsing habits webpage, delivering the statistics in the metadata, using the statistics to conserve mobile resources by preloading statistically popular webpages before the webpages are requested at the computing device, downloading portions of the webpage that are popular, and omitting downloading second portions of the webpage that are not popular to conserve mobile resources.
- Aspect methods may further include sending browsing data from an Internet browser to a server, and generating the metadata from the browser data in the server.
- Aspect methods may further include sending data from an instrumental browser to a server, and generating the metadata from the data.
- the metadata returned to the computing device may include returning metadata from a peer device to the computing device that correlates to portions of the webpage that are popular with computing devices connected to the peer device so a web browser on the computing device loads the popular portions first.
- Aspect methods may further include providing a client side monitoring system of browsing habits of a second computing device, sending the browsing habits to a server, sending metadata from the server to the computing device based on the client side monitoring system of the browsing habits of the second computing device.
- Aspect methods may further include generating metadata from browsing habits that include requests and responses to requests, and providing the metadata to a peer device that is a peer of the computing device.
- aspects methods may further include monitoring browsing habits of a plurality of users, sending the browsing habits to a server, formulating a plurality of observed profiles of the plurality of users based on the monitored browsing habits, monitoring the browsing habits of a computing device user, returning metadata from the server to the computing device based on at least one observed profile that matches the computing device user browsing habits.
- Aspect methods may further include describing in the metadata that a first portion of code is analyzed, downloaded, parsed, or executed more often than a second portion, and reordering and downloading the first portion of code before the second portion.
- Aspect methods may further include describing in the metadata that a library includes a portion that is determined most likely to be executed, and downloading the most likely to be executed library portion before other portions of the library.
- Aspect methods may further include transmitting the request for the browser assistant that is located on a server, determining that a web site is frequently accessed by the computing device, and uploading updated web site data to the computing device.
- Aspect methods may further include downloading first portions of webpages using the computing device before second portions based on statistical browsing habits contained in the metadata.
- Aspect methods may further include preloading portions of webpages using the computing device with the preloaded portions being identified using statistical browsing habits contained in the metadata.
- Aspect methods may further include monitoring browsing habits from a plurality of users, determining that a webpage comprising webpage elements is frequently accessed, storing webpage elements on a cache based on the browsing habits to prevent the webpage elements from being deleted on the computing device, downloading the webpage elements from the cache before an anticipated request.
- the method may further include monitoring browsing habits that are derived from a single user's browsing habits, updating the webpage stored on the cache, pushing elements on the cache to the computing device at periodic intervals without the request, updating the webpage stored on the cache, and passing elements from the cache to the computing device.
- Aspect methods may further include returning metadata to the computing device in advance by pre-caching the metadata to assist the computing device in parsing, analyzing, or executing the requested webpage.
- aspects methods may further include returning metadata that allows the computing device to execute the webpage in a more efficient manner by executing necessary portions, and forgoing executing an entire webpage.
- the browser assistant may be located on a server that is the same server that responds to the request for the webpage, on a peer computer device, or on another network device.
- aspects methods may further include transmitting a request for a webpage, in which the webpage includes portions, processing the portions using the browser assistant to result in native code, and returning native code to the computing device, in which the portions include JavaScript.
- aspects methods may further include transmitting a request for data, transmitting a request to a first device, returning metadata to a second device, and describing portions of the webpage in the metadata that have a likely statistical chance of execution based on monitored empirical data of requests and responses to requests.
- the various aspects further include a computing device having a processor configured with processor-executable instructions to perform operations of the aspect methods described above.
- the various aspects may further include a computing device including means for performing the functions of the aspect methods described above.
- the various aspects may further include non-transitory processor-readable storage media having stored thereon processor-executable instructions configured to cause computing device processors to perform operations of the aspect methods described above.
- the various aspects further include a server having a server processor configured with processor-executable instructions to perform operations of the aspect methods described above.
- the various aspects may further include a server including means for performing the functions of the aspect methods described above.
- the various aspects may further include non-transitory processor-readable storage media having stored thereon processor-executable instructions configured to cause a server processors to perform operations of the aspect methods described above.
- the various aspects further include system including a server, a cellular communications network and a computing device (e.g., a mobile phone) in communication with the server via the cellular communications network, in which the server and the computing device are configured to perform operations of the aspect methods described above.
- a server e.g., a mobile phone
- a computing device e.g., a mobile phone
- FIG. 1 is a communication system block diagram of a system for communicating with a mobile computing device.
- FIG. 2 is a process flow diagram of an aspect method using analytics to improve performance of a web browser.
- FIG. 3 illustrates a computing device communicating with a browser assistance server.
- FIG. 4 illustrates how a certain predetermined portion of code has a high probability of execution that may be downloaded before other portions.
- FIG. 5A is a process flow diagram of an aspect method to request metadata on a webpage from a browser assistant server.
- FIG. 5B is a process flow diagram of an aspect method to request metadata on a webpage from an instrumented browser.
- FIG. 5C is a process flow diagram of an aspect method to request metadata on a webpage from a web browser.
- FIG. 6 is a process flow diagram of an aspect method to request metadata on a webpage from a peer device.
- FIG. 7 is a process flow diagram of an aspect method to request metadata on a webpage from a home network computer that is linked to a mobile communication device to provide assistance to the mobile communication device.
- FIG. 8 illustrates a communication system block diagram of a server that sends hints to a mobile communication device for rendering a webpage.
- FIG. 9 is a process flow diagram of an aspect method to collect data from a number of different users' browsing habits and to create metadata which is pushed to a computing device to provide hints to render a webpage.
- FIG. 10 is a process flow diagram of an aspect method to collect data from a number of different users' browsing habits and to create metadata which is pulled from a computing device to provide hints.
- FIG. 11 is a process flow diagram of an aspect method to create metadata using an analytic module on a server.
- FIG. 12 is a process flow diagram of an aspect method to provide targeted services on behalf of a mobile communication device and to cache popular data on a server for the mobile communication device.
- FIG. 13 is a process flow diagram of an aspect method to create metadata of JavaScript execution profiles from multiple users to provide hints to a mobile communication device.
- FIG. 14 is a process flow diagram of an aspect method to provide targeted services on behalf of a mobile communication device and to cache popular data and to maintain frequently accessed cached data for a mobile communication device.
- FIG. 15 is a process flow diagram of an aspect method to provide targeted services on behalf of a mobile communication device to cache popular data on a server and to augment the cached data.
- FIG. 16 illustrates a browser assistance server providing frequently used cache data to the mobile communication device.
- FIG. 17 is a process flow diagram of an aspect method to generate metadata that has hints to parse JavaScript.
- FIG. 18 illustrates a server processing data and sending a precompiled binary file of the processed JavaScript data to the mobile communication device to avoid processing the JavaScript data.
- FIG. 19 is a process flow diagram of an aspect method to process data at a server and to provide a precompiled binary file of the processed data to the mobile communication device to avoid processing the data locally.
- FIG. 20 is a process flow diagram of an aspect method to provide metadata identifying a most frequently used library portion so the mobile communication device can download a most frequently used library portion without downloading the entire software library.
- FIG. 21 is a process flow diagram of an aspect method to provide metadata of a most viewed webpage portion so the mobile communication device can download a most viewed portion before another portion.
- FIG. 22 is a component block diagram of a mobile computing device suitable for use with the various aspects.
- FIG. 23 is a component block diagram of a server computing device.
- FIG. 24 is a component block diagram of a notebook computing device.
- the terms “computing device,” “mobile device,” “mobile communication device,” and “handheld device” refer to any one or all of cellular telephones, personal data assistants (PDA's), palm-top computers, wireless electronic mail receivers, multimedia Internet enabled cellular telephones, Global Positioning System (GPS) receivers, wireless gaming controllers, tablet computers, notebook computers, netbook computers, wireless email devices, and similar personal electronic devices that include a programmable processor and memory, and are configured to communicate with a communication network.
- PDA's personal data assistants
- GPS Global Positioning System
- wireless gaming controllers tablet computers, notebook computers, netbook computers, wireless email devices, and similar personal electronic devices that include a programmable processor and memory, and are configured to communicate with a communication network.
- a computer As used herein, the terms “computer,” “personal computer” and “computing device” refer to any programmable computer system that is known or that will be developed in the future. In an aspect, a computer will be coupled to a network such as described herein. A computer system may be configured with software instructions to perform the processes and operations described herein.
- a component may be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and/or a computer.
- a component may be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and/or a computer.
- an application running on a server and the server can be a component.
- One or more components may reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers.
- a cloud service distributed network improves a browser experience by anticipating the browser's next action and providing metadata to the mobile device to provide hints to the mobile device.
- a mobile device has limited and constrained resources.
- a mobile device has a relatively smaller memory and data which is downloaded is erased or written over regularly.
- a mobile device has a finite amount of battery power.
- battery power cannot be wasted on speculative tasks, and may be used to improve performance and provide immediate information to a user.
- User habits may be used by the browser to allow it to act more efficiently to conserve mobile resources or proactively to prepare media for instant access. For example, the web browser may efficiently download and process content based on the user's browsing habits, which is advantageous as load times can be faster and battery life can be extended.
- a browser assistant may improve cache behavior by monitoring browsing habits of a user or may monitor browsing habits of a number of different users.
- a browser assistant may provide hints to a mobile device and may improve cache behavior. For example, a server may push regularly visited pre-processed webpages to the mobile device.
- a mobile device may detect when certain browsing data that is frequently used or accessed is about to be deleted due to memory constraints. In this event, the mobile device may request targeted services from a server, and upload the frequently accessed data to a server for later use by the mobile device. The server may mark the uploaded information and return the data to the mobile device at a later date/time. In another aspect, the server may optimize the data and return the optimized data to the mobile device.
- the system may include a mobile device operatively connected to the Internet and a browser assistance server.
- the browser assistance server may also be operatively connected to the Internet and the mobile device.
- the browser assistance server may deliver metadata regarding websites to the mobile device. This metadata may provide hints on how the mobile device can efficiently handle a request for a webpage sent from the mobile device. For example, metadata may include information which enables the mobile device to anticipate the user's next browsing activity.
- the metadata may be any information that allows the mobile device or the server to better parse, execute or analyze browser's requests.
- the metadata may be XML, Ajax, or jSAW code.
- the mobile device may review the metadata from the browser assistance server when rendering the webpage.
- the metadata may provide a scheme for optimized browser execution of webpages.
- the browser may use the metadata to more efficiently handle a requested webpage. This may lead to faster execution times and lower power usage.
- the metadata may provide information that certain data is frequently accessed or is popular among users. For example, using a push/pull framework, data that ordinarily would be erased that is popular or that is used frequently can be uploaded from the mobile device to a cache memory located on a server. The data can be dynamically cached and may be read by the mobile device when needed.
- the metadata may include JavaScript metadata.
- the metadata may provide useful information including JavaScript function probabilities of certain phrases, script tokens, lexing information, Abstract Syntax Tree (AST) parsing information, already compiled binary data, just in time data, or other hints to save time in processing JavaScript requests at the mobile device.
- the metadata may include Cascading Style Sheet (CSS) metadata including information such as simplified or optimized selectors, merging styles, or any other information to assist with processing, parsing, executing, or rendering CSS webpage data.
- CSS Cascading Style Sheet
- the metadata may include hints on how to process a Document Object Model (DOM) tree in a parallel manner.
- DOM Document Object Model
- the metadata may include HTML metadata with partitioned code hints.
- the hints may instruct the mobile device to process encoded pages in parallel rather than serially.
- the metadata may include data from a number of other users and may describe analytics or patterns received from observing other user's browsing habits.
- the analytics may indicate that a certain webpage element has a high probability of execution or may be very popular with other users.
- the mobile device may download those webpage elements based on speculation that the user may download the webpage element at some point.
- the metadata may indicate that a library includes a first portion that has a high probability of execution.
- the metadata may indicate that that library first portion should be transmitted or accessed immediately since it has a high probability of execution compared to other portions of the library.
- Another second portion may indicate a low probability of execution based on statistical information.
- the metadata may indicate that the second library portion need not be downloaded until later since the metadata indicates the second library has a low execution probability.
- the browser assistance server using analytics may generate the metadata.
- the browser assistance server may observe relationships from a crowd's habits.
- the metadata may indicate that a certain webpage is frequently accessed.
- the metadata may indicate that a certain webpage element, for example, text located on the frequently accessed webpage, is viewed by ninety percent of the visitors to the webpage.
- the habit information may also be compiled by the browser assistance server based on the observed browsing habits of a number of users.
- the metadata may be pre-cached on the mobile communication device and so that it may be provided to the mobile communication device in advance.
- metadata may be transmitted to subscribing mobile devices at a predetermined time period in advance of when the user might need the information, such as during evening or early morning hours when network usage is low.
- the metadata may be transmitted as part of a synchronization procedure, such as for the top 100 websites that monitored users' access or the top 100 websites the user of the mobile communication device accesses.
- the metadata may not be provided on demand and may be provided before the request, during the request or after the request for a webpage.
- Metadata may have a slower rate of change relative to web content, and thus may be pre-cached to the user's computer or mobile device at predetermined intervals.
- the metadata may be supplied at a non-peak hour, such as late at night, or periodically, such as weekly.
- users' web browsing may be monitored.
- the users' web browsing habits may indicate that users are sending requests from web browsers to a news website to view a particular text story and photo images.
- the webpage elements may have a high probability that the mobile device user may also view the webpage element based on the mobile device user's own browsing habits.
- the metadata from the browser assistance server may enable the mobile device to download content based on speculation that the user will download the text and webpage at some time.
- the browser assistance server may collect information about the functions which were statistically executed by a number of users of particular webpages. In response, the browser assistance server may create an index of the statistical information. The browser assistance server may use this statistical information to deliver metadata to a number of mobile devices to enhance their users' web browsing experiences.
- a code may be generated including HTML code, CSS, a first JavaScript function and a second JavaScript function and other code.
- the browser assistance server may observe that the first and second JavaScript functions were executed by many users more so than other functions on webpages.
- the browser assistance server may provide metadata to the mobile device including statistical information regarding the frequency or probability of execution of the first and second JavaScript functions.
- the metadata may enable the mobile device to optimize performance of the web browser using the metadata.
- the mobile device may request analysis information from the browser assistance server.
- the analysis information may be for a particular requested webpage.
- the request to the browser assistance server may include context information, user profile information, communication information, mobile device information, and/or web browser information.
- the request may allow the browser assistance server to return metadata that is relevant to the user.
- the mobile device may be provided with targeted services.
- the mobile communication device may have a cache on the browser assistance server and the mobile device may store data on the cache.
- the cache may be a component of the server that transparently stores data so that future requests for that data can be served faster.
- the data that is stored within a cache might be values that have been computed earlier or duplicates of original values that are stored elsewhere. If requested data is contained in the cache (a “cache hit”), this request may be served by simply reading the cache, which is comparatively faster for the mobile device. Otherwise, the data has to be recomputed by the mobile communication device or fetched from its original storage location, which is comparatively slower. Hence, the more requests that can be served from the cache to the mobile communication device, the faster the overall system performance can be.
- the browser assistance server may provide a targeted service for a number of mobile devices.
- a mobile device may write to a cache on the browser assistance server including cached JavaScript or a cached library for future use. This may save processing time and battery life.
- a mobile device or a browser assistance server may determine that data about to be erased on the mobile device is relevant to the user based on the user's browsing habits, and save the data in a cache associated with a server.
- the server may optimize the cached data.
- a profile of a user may be stored at the browser assistance server.
- a browser assistance server may detect that a user downloads the same websites each day at 8:00 a.m.
- the mobile device may run up against a memory limit later in the day.
- the mobile device may also detect that certain webpage elements will be used the next day at 8:00 a.m.
- the mobile device may write the webpage elements to the cache associated with the browser assistance server as an L2 cache.
- the mobile device may access the webpage elements from the cache the next day.
- the browser assistance server may directly analyze and compile JavaScript in advance.
- the JavaScript may not have to be processed on the mobile communication device. This data may also be compiled for a predetermined architecture.
- the browser assistance server can provide a binary data that is rendered from the processed JavaScript. The binary data can be transmitted to the mobile device so the mobile device avoids compiling the JavaScript locally.
- the mobile device processor avoids parsing, executing, and just-in-timing phrases of a JavaScript execution path, and may render the elements faster.
- FIG. 1 shows a communication system including a mobile device 100 that may include a display 110 that provides a graphical user interface (GUI) for remotely accessing and controlling personal media content.
- GUI graphical user interface
- Such a GUI may include icons and shapes associated with functions which may be selected by pressing physical keys in a keypad that may be provided below the display 110 , or by pressing the display itself when the display has touchscreen capability.
- the GUI display 110 may include icons shown as reference numeral 115 .
- the mobile device 100 may communicate with a wireless network 130 , such as a cellular communication network.
- the wireless network 130 may communicate with the Internet 114 via a carrier network 326 through a data link 330 , such as the Internet, a secure LAN, WAN, or other network.
- the carrier network 326 controls messages (generally comprising data packets) sent to a mobile switching center (MSC) 332 .
- the carrier network 326 communicates with the MSC 332 . This communication may be to transfer data and voice information.
- the MSC 332 may be connected to multiple base stations (BTS) 132 by another network 336 , such as a data network and/or Internet portion for data transfer and a POTS portion for voice information.
- BTS 132 may wirelessly broadcast messages to, and receive messages from, the mobile devices 100 , using predetermined voice and/or data packet services, such as Code Division Multiple Access (CDMA), short messaging service (SMS), or any other over-the-air methods.
- CDMA Code Division Multiple Access
- SMS short messaging service
- Mobile devices 100 may be configured to include a computer platform 120 having a memory 125 in communication with a processor 131 , such as via an application programming interface (API) 135 that enables interaction with any resident applications (e.g., a “media” interface 140 that works cooperatively with information communicated by the registration server 142 shown FIG. 1 ).
- API application programming interface
- the platform 120 may also include a gateway interface 145 .
- the gateway interface 145 may be a standard that defines how web server software can delegate the generation of webpages to a stand-alone application in an executable file.
- the gateway interface 145 may include CGI scripts written in any programming language or any scripting language.
- the gateway interface 145 has program instructions for a server 142 to pass a web user's request to an application program and to receive data back so to the gateway interface can forward the data to the user.
- the server 142 may transmit the requested page.
- the form usually needs to be processed by an application program.
- the server 142 may transmit the form information to a small application program that processes the data and may transmit back a confirmation message using the gateway interface 145 .
- a browser assistance server 150 may also be provided.
- the browser assistance server 150 can be the same as server 142 , or a different server.
- the browser assistant may be software that is resident on multiple different computers.
- the browser assistance server 150 may provide metadata to the mobile device 100 that is operatively connected to the Internet 114 .
- the gateway interface 145 has program instructions for the browser assistance server 150 to pass a web user's request to an application program and for the server 150 to transmit metadata to the user.
- the metadata may be embedded into a header of the requested browsing data.
- the metadata may be separately transmitted from the requested browsing data.
- a second request may also be provided to the browser assistance server 150 for the server 150 to transmit the requested metadata.
- the browser assistance server 150 can also receive the request for the webpage data to server 142 and in response send the metadata to the mobile device 100 without receiving a separate or second request.
- the metadata may be sent periodically without any request. For example, metadata may be delivered in a cycle, such as once every fifteen minutes.
- FIG. 2 shows an illustration of an aspect method 200 for using analytics at a mobile communication device 100 to improve performance.
- Analytics may include any observed or calculated logical analysis that may enable a mobile device to improve performance.
- the analytics may indicate that certain phrases have a higher likelihood of execution than other phrases, so that mobile device may download those phrases sooner on other phrases.
- Method 200 may be implemented in a computing device having a processor 131 configured with processor-executable instructions to perform the operations of the method 200 .
- the processor of a mobile communication device 100 may commence operation at block 205 by accessing a web browser application.
- the web browser can be any web browser having program instructions for retrieving, presenting, and traversing information resources on the World Wide Web.
- An information resource is identified by a Uniform Resource Identifier (URI) and may be a webpage, image, video, or other data content. Hyperlinks present in web content enable users to easily navigate a browser to a related resource.
- URI Uniform Resource Identifier
- the web browser may bring information resources to a user of the mobile communication device 100 .
- the user may input a Uniform Resource Identifier (URI) into the browser, or may click a link.
- Received HTML scripts may be passed to a browser's layout engine and be transformed from markup to an interactive document.
- the web browsers may generally display any kind of content that can be part of a webpage. Data may include image, audio, video, and XML file, Flash applications, and Java applets. Interactivity in a webpage may be supplied by JavaScript. JavaScript may be used along with other technologies to allow live interaction with the webpage's server via an Ajax programming language. JavaScript programs may produce interactive 2D graphics using the API and may render 3D graphics.
- the processor may send analytics from a server 150 to the mobile communication device 100 .
- the analytics may be delivered within metadata, but also the analytics may be delivered in other formats.
- metadata refers to any data about data, and can include information that provides hints to anticipate browser performance, or to assist a web browser or mobile communication device to improve performance.
- Metadata may include data about a design and specification of data structures. Metadata may also include descriptive metadata which includes application data or data content. Metadata may also include statistical information and can be any description of the content and context of data files so a quality of the original data or files is greatly increased. For example, metadata may improve an experience of a user by assisting a mobile communication device to operate more efficiently to increase a life of the device.
- a second processor associated with the mobile communication device 100 may receive the analytics. This may be accomplished by the mobile communication device downloading the metadata directly from the server 150 or from an intermediary.
- the metadata may be embedded within data content.
- the metadata may be downloaded from a peer device or may be downloaded from a home network device.
- the mobile communication device processor uses the analytics to improve performance. For example, the metadata may identify popular web content portions or content that has a high statistical likelihood of being executed.
- FIG. 3 shows a high level schematic of a mobile communication device 100 and a browser assistance server 150 connected to the Internet 114 .
- a request for a webpage 1 a may be transmitted from the mobile communication device 100 to the Internet 114 .
- the request 1 a may be for a webpage and may include a web uniform resource identifier.
- the request 1 a may return HTML, XML, JavaScript, Cascading Style Sheets, XHTML, and data objects.
- the mobile communication device 100 A may transmit a second request 1 b to a browser assistance server 150 .
- the second request 1 b returns metadata.
- the metadata may include hints that can anticipate a browser's next action on the mobile communication device 100 .
- the metadata includes information which allows the mobile communication device to better parse, analyze, and/or execute a web browser's request 1 a .
- the metadata may be in Ajax, XML, or J-SAW.
- the mobile communication device 100 can use the metadata to more efficiently handle a requested webpage, which can lead to faster execution times, lower power usage, or less processing time.
- the user may select a hyperlink.
- a request 1 a for a webpage may be delivered to access HTML, XML, JavaScript, Cascading Style Sheets, XHTML, and data objects.
- the first browser may further send a second request 1 b that is unknown by the user and that does not disrupt the browsing experience.
- the browser assistance server 150 may receive the second request 1 b .
- the browser assistance server 150 may improve performance by detecting that there exists JavaScript in the webpage that is about to be rendered.
- the browser assistance server 150 may have already compiled the JavaScript, or may compile the code immediately.
- the browser assistance server 150 may deliver the complied JavaScript into a binary file (or another native format) to the mobile communication device 100 browser.
- the compiled JavaScript binary file removes the burden of compiling the code on the processor on the mobile communication device, saving rendering time and processing resources.
- the precompiled JavaScript is rendered on the mobile communication device.
- the browser assistance server 150 may receive both requests 1 a and 1 b and provide metadata and the web content. In another aspect, the browser assistance server 150 may provide a virtual machine on the mobile communication device 100 to allow sharing of the underlying physical machine resources between different machines, each running its own operating system. This may reduce the processing burden on a mobile device processor.
- FIG. 4 illustrates a browser assistance server 150 and a mobile communication device 100 forming a request and sharing metadata and connected to the Internet 114 .
- a request for a webpage may be sent from the mobile communication device 100 to a server on the Internet 114 .
- a request for a webpage may include a web uniform resource identifier.
- the Internet server may return HTML, XML, JavaScript, Cascading Style Sheets, XHTML, and data objects.
- a second request 1 b also may be sent from the mobile communication device 100 to a browser assistance server 150 .
- the request 1 may return metadata 3 that includes hints for the mobile communication device's browser.
- the hints may anticipate a browser's next action on the mobile communication device 100 .
- the metadata may include information which allows the mobile communication device 100 to better parse, analyze, and/or execute a web browser's request 1 .
- the browser assistance server 150 may also process a request 1 .
- the browser assistance server 150 may improve performance by detecting that there exists JavaScript portions in the webpage that have a high probability of execution and other second portions that have a low probability of execution based on statistical observed browsing patterns.
- Statistical observed browsing patterns may originate from various sources. For example, the statistical observed browsing patterns may be monitored from a number of monitored web browsers.
- the browser assistance server 150 may obtain empirical data and store the empirical data in an index. Alternatively, the statistical observed browsing patterns may be monitored from the mobile communication device 100 .
- a third computing device may observe the browsing habits, and store the browsing habits in an index in a storage medium and upload the index to the browser assistance server 150
- the statistical observed browsing patterns may be observed from a number of peer devices.
- the BAS server 150 may study the browser data of the peer devices and store empirical data in the index.
- a programmer may include data indicating that some portions have a high probability of execution while others portions have a low probability of execution within the actual code to provide an indication to the mobile device 100 .
- the browser assistance server 150 may pre-compile the JavaScript and transmit the high probability-of-execution portion of the JavaScript precompiled in a binary or native format.
- the browser assistance server 150 may deliver the data or the metadata to the mobile communication device 100 as shown by arrow 3 .
- the metadata may include hints to download the first high probability of execution portion while not downloading the second low probability execution portion.
- the metadata may include hints that the mobile device should download the first (high probability of execution) portion while downloading the second (low probability execution portion) at a later time.
- FIG. 5A illustrates an aspect method 500 for returning metadata from a browser assistance server 150 to a mobile communication device to conserve power in a mobile device 100 .
- Method 500 may be implemented in a computing device having a processor 131 configured with processor-executable instructions to perform the operations of the method 500 .
- the processor 131 may commence operation at block 502 by collecting data from a number of other users in order to determine statistical information about webpage content.
- the statistical information may include habit data indicating that certain web content elements have a high probability of being viewed or being executed based on the collected data.
- the data may include any other information that would lead to more efficient operation of the mobile device 100 .
- the processor may request metadata on a webpage from a browser assistance server.
- the processor may send a request from a mobile device for a webpage.
- the processor may use the data collected from other users and the request to determine whether the browser assistance server has information to better parse, analyze or execute the request.
- the processor of the browser assistance server may return metadata to the mobile device.
- the metadata may suggest that a portion of a library has a remote possibility of being utilized by the web browser and may not be downloaded immediately.
- the metadata may contain a binary file (or native language file) that corresponds to compiled JavaScript. This information may enable browser operations to be improved as the mobile device may not have to parse, analyze, or execute JavaScript.
- the processor of the mobile device can use the metadata to facilitate web processing.
- the mobile processor may determine (using the metadata) that HTML included in webpages has sections that can be processed in parallel, rather than serially processed.
- the mobile processor may process the webpage elements in parallel based on the metadata.
- the metadata may include JavaScript function probabilities, script tokens, or lexing information, and the mobile processor may use the metadata to render the webpage by executing JavaScript that has a high probability of execution while executing other portions later in time.
- the processor for the mobile device may execute the webpage code and may render the webpage in a manner that is faster than an instance where the metadata hints are not provided.
- FIG. 5B illustrates an aspect method 550 for use with an instrumented browser that collects data from a number of users and that returns metadata to a mobile communication device to conserve mobile resources in a mobile device 100 .
- the instrumented browser may include at least one add on module to a web browser.
- the add on module may monitor a user's activity.
- the instrumented browser of a number of users may pool the habit data of many devices. For example, the instrumented browser may log keystrokes or may log inputs of a user to enable details of a user interaction to be monitored, collected, and recorded.
- the habit information may include empirical analytic data related to habits of the user(s) and logical relationships that can be used to improve a mobile device performance.
- Method 550 may be implemented in a computing device having a processor 131 configured with processor-executable instructions to perform the operations of the method 550 .
- the processor 131 may commence operation at block 518 by a processor associated with an instrumented browser collecting data from a number of other web users in order to determine statistical information about webpage content.
- the statistical information may include data that certain web content elements have a high probability of being viewed or executed based on the collected data.
- the data may be particular to the user of the browser. For example, during browsing the user may have a habit of executing particular files or file types over other web elements. For example, the particular user may access financial sites that require JavaScript elements to be executed every morning at 8:00 a.m.
- the processor may request metadata on a webpage.
- the processor may send a request from a mobile device for a webpage.
- the processor may use the data collected from the instrumented browser to better parse, analyze, or execute the request. For example, the instrumented browser may determine that certain JavaScript includes a portion that has a high probability of execution based on observed statistics. Alternatively, the instrumented browser may determine that a user reviews the same webpage every day at 9:00 a.m. and certain data was cached for the next day so the instrumented browser does not need to download all of the webpage elements the next day.
- the processor may return metadata to the mobile device in block 528 .
- the metadata may indicate that a portion of a library has a remote possibility of being utilized by the web browser and may not be downloaded.
- the metadata may contain a precompiled binary (or native language) file that corresponds to JavaScript so the mobile device does not have to parse, analyze or execute JavaScript to assist the instrumented browser.
- the instrumented browser can simply use a native language to render the JavaScript phrase.
- the processor may have no metadata to return in block 526 and a mobile communication device can execute the webpage code in block 532 .
- the processor of the mobile device can use the metadata to facilitate web processing.
- the processor for the mobile device executes the webpage code and renders the webpage in a manner that is more efficient.
- FIG. 5C illustrates an aspect method 580 for use with a web browser that collects data from a user and that returns metadata to a mobile communication device to conserve mobile resources in a mobile device 100 .
- the browser monitors a user's activity.
- Method 580 may be implemented in a computing device having a processor configured with processor-executable instructions to perform the operations of the method 580 .
- the processor may commence operation at block 534 .
- a processor associated with the web browser may collect data from a web browser session. This can be used to determine statistical information about a user's habits when viewing or browsing webpage content. For example, the data may be particular to the user of the browser. For example, the user has a habit of executing particular files or file types statistically over other elements.
- the processor may send a request for metadata on a webpage.
- the processor may send a request from a mobile device for a webpage.
- the processor may use the data collected from the user's web browsing to better parse, analyze or execute the request. For example, the browser may determine that certain JavaScript phrases include a portion that has a high probability of execution based on observed statistics. Alternatively, the browser may determine that a user reviews the same webpage every day at 9:00 a.m. and certain data is cached for the next day. Therefore, the browser does not need to download all of the webpage elements the next day and may operate more efficiently.
- the processor may return metadata to the mobile device in block 544 .
- the processor may have no metadata to return in block 542 , and a mobile communication device may execute the webpage code in block 548 .
- the processor of the web browser may return metadata to the mobile device.
- the processor of the mobile device can use the metadata to facilitate web processing.
- the processor for the mobile device executes the webpage code and renders the webpage in a manner that is faster than an instance where the metadata hints are not provided.
- FIG. 6 illustrates an aspect method 600 that may be used with a peer device that collects data of a user and returns metadata to a mobile communication device to efficiently use mobile resources in a mobile device 100 .
- the peer-to-peer device can be another mobile device, access point, other device, etc., that communicates with the mobile device and/or other devices (not shown).
- the peer device can be an independently powered device in a home or business that provides communication services in conjunction with or as an alternative to a base station.
- the peer-to-peer device can identify neighboring devices.
- the peer-to-peer device can receive or otherwise listen to downlink assignments from the base station to the mobile devices.
- the peer device can also receive or otherwise listen to uplink transmissions from the mobile devices over resources in the downlink assignments to identify the mobile devices (e.g. based on information within the uplink transmissions).
- the peer device may operate a web browser that monitors a user's activity.
- Method 600 may be implemented in a computing device having a processor configured with processor-executable instructions to perform the operations of the method 600 .
- the processor may commence operation at block 602 by a processor of the peer device collecting data from a web browser session. This may be performed in order to determine statistical information about webpage content.
- the statistical information may include data that certain web content elements have a high probability of being viewed or executed based on the collected data.
- the data may be particular to the user of the browser.
- the user may have a habit of executing particular files or file type statistically over other elements.
- the peer device may generate metadata to form hints to anticipate a browser's next action based on browsing habits that are observed on the mobile device.
- a peer device may receive metadata from other peer devices and may aggregate data regarding browsing habits of many users to form hints.
- the peer device may receive metadata from a browser assistance server and may share that metadata with other peer devices.
- the peer device may collect the habit data.
- the processor may request metadata on a webpage.
- the processor may send a request from a mobile device for a webpage.
- the processor may determine if the data collected from the peer device can better parse, analyze or execute the request.
- decision block 608 “Yes”
- the processor may return metadata to the mobile device in block 612 .
- the processor may have no metadata to return in block 610 and a mobile communication device may execute the webpage code in block 616 .
- the processor of the peer device may return metadata to the mobile device.
- the metadata can improve operations of the mobile device and metadata may instruct the mobile device browser that certain portions of webpages have a high likelihood of execution or a high likelihood of being viewed and may be downloaded based on data aggregated by the peer device (or by data learned by the peer device from another source).
- the metadata may indicate that a portion of a library has a remote possibility of being utilized.
- the processor of the mobile device can use the metadata from the peer device to facilitate web processing. For example, the mobile processor may determine using the metadata that HTML included in webpages has portion that can be processed in parallel rather than serially processed. The mobile processor may process the webpage elements in parallel based on the metadata supplied from the peer device. In block 616 , the processor for the mobile device executes the webpage code and renders the webpage.
- FIG. 7 illustrates an aspect method 700 for use with a network device that collects data of a user and returns metadata to a mobile communication device 100 to enable the device to efficiently use its mobile device resources.
- the mobile communication device 100 may form a portion of a home network, and receive and transmit data via the home network.
- the home network may include a gateway connected to a computer and that forms an access point.
- the mobile device 100 may include a wireless interface to access an access point that is connected to the Internet.
- a network computer having a processor and a memory may also be connected to a modem that is connected to the Internet.
- the network device can be a desktop computer, a laptop computer, a mobile device, a tablet computer, or other device that communicates with the mobile device and/or other devices (not shown).
- the network device may monitor a user's activity on a web browser and may pair with the mobile device to provide data to the mobile device.
- Method 700 may be implemented in a computing device having a processor configured with processor-executable instructions to perform the operations of the method 700 .
- the processor associated with the network device may commence operation at block 702 by collecting data from a web browser session by a user in order to determine statistical information about webpage content.
- the network device may also communicate with a browser assistance server 150 via the Internet 114 .
- the network device may also receive data from other users' web browsing habits.
- the network device may use the data to predict a web browser's next action.
- the network computer device may generate metadata to form hints to anticipate a browser's next action based on browsing habits that are observed on the mobile device.
- the processor may request metadata on a webpage.
- the metadata may be generated at the network device, a peer device, or a browser assistance server 150 .
- the processor may send a request from a mobile device for a webpage.
- the processor of the network device may determine if the network device has information that a browser can use to better parse, analyze or execute the request. For example, the network device may determine that certain JavaScript phrases include a portion that has a high probability of execution based on observed statistics. The network device may review the request and may determine that metadata is relevant to the request and may be sent to the mobile device browser.
- decision block 708 “Yes”
- the processor may return metadata to the mobile device in block 712 .
- the processor may have no metadata to return in block 710 and a mobile communication device may execute the webpage code in block 716 .
- the processor of the network device may return metadata to the mobile device as a separate file or embedded in a header of the content.
- the processor of the mobile device can use the metadata from the network device to facilitate web processing. For example, based on a number of observed users, the metadata may indicate that a portion of a webpage is the most viewed webpage element based on statistical information. Metadata may indicate that the most viewed webpage element may be downloaded first before other webpage elements. Alternatively, the network device may communicate metadata that indicates that a library includes at least (1) a high probability executable portion or (2) a low probability execution portion. Metadata may indicate that the processor may download one portion first over another portion, a sequence or a schema. In block 716 , the processor for the mobile device executes the webpage code and renders the webpage. By using the metadata hints mobile device resources are conserved.
- FIG. 8 illustrates a high level communication diagram of a browser assistance server 150 delivering metadata or other packets 802 - 814 to a communication network via a base station 101 and to a mobile communication device 100 .
- Metadata or other data packets 802 - 814 transmitted form no limitations and some metadata may be sent while other metadata is not sent. For example, depending on the request some metadata may be appropriate while other metadata may not be appropriate.
- Example data transmitted from the browser assistance server 150 may include data pushed based on browsing habits as shown by block 802 .
- Preprocessed webpages that are in a native format for use by the mobile communication device 100 are shown as block 804 .
- User statistic metadata 806 , metadata hints 808 , metadata to assist with parsing 810 , metadata to assist with execution 812 , and metadata to assist with analyzing a webpage request 814 may also be delivered to the mobile communication device 100 from the browser assistance server 150 .
- a mobile communication device processor may receive an input that a user clicked on a hyperlink indicating that the user seeks to open a first webpage using a web browser operable on the mobile communication device.
- the mobile communication device 100 may send a request 816 for webpage content in block 816 .
- the request 816 is transmitted to the mobile communication base station 101 .
- the base station 101 may send the request to a server 142 ( FIG. 1 ) to obtain the web content.
- a request to the browser assistance server in block 818 is transmitted to the base station 101 .
- the base station 101 communicates the request to the browser assistance server 150 .
- the browser assistance server 150 may deliver one or more metadata blocks 802 - 814 , data, cached data, or other metadata, to assist the mobile communication device 100 with processing the webpage. Some data can be pushed to the mobile communication device without receiving any request 818 .
- a mobile communication device 100 may periodically erase a memory and data contents due to space constraints.
- the metadata may indicate that some data content may be cached to a server 150 as targeted services on behalf of the mobile communication device 100 . Alternatively, the cached data may be pushed to the mobile communication device at some future interval without any request.
- the mobile communication device 100 may render the webpage 820 in an efficient manner.
- the mobile communication device 100 also will optionally notify the user of an availability of a web site in block 822 .
- the mobile communication device 100 also may optionally provide feedback to the browser assistance server 150 in block 824 of a quality of service of the metadata.
- FIG. 9 illustrates an aspect method 900 for a browser assistance server 150 that pushes metadata to a computing device based on a number of browsing habits of multiple users.
- the method 900 may use “crowd sourcing” or information collected from a large amount of web users.
- the browser assistance server can monitor a large amount of requests and request responses, and infer empirical relationships between the browser request and response.
- the browser assistance server 150 can derive analytics from the request and response from a large number of web users. For example, these may include JavaScript function probabilities based on a number of measurements made for hundreds of mobile devices.
- the empirical data may include the JavaScript phrases that are executed, loaded, viewed, analyzed, parsed, etc.
- Method 900 may be implemented in a computing device having a processor configured with processor-executable instructions to perform the operations of the method 900 .
- the processor may commence operation at block 902 by a browser assistance server 150 collecting data regarding browsing habits of a number of users.
- Metadata may include structured data about the browsing habits of a number of users. Metadata elements can be used to specify page description, keywords, and any other metadata not provided through head elements and attributes.
- the metadata element may emulate the use of the HTTP response header to embed additional metadata within the HTML document. Such metadata elements are placed as tags in the head section of an HTML or XHTML document.
- the processor 131 outputs program instructions so metadata is pushed from the browser assistance server 150 to the computing device.
- the metadata may be pulled from the browser assistance server to the computing device.
- the metadata may be embedded in other data.
- data may be continuously provided in a feed.
- a processor of the computer device that receives the metadata may use the metadata in block 908 .
- the processor may use the metadata to render the webpage.
- the processor may send data from the rendering webpage to the browser assistance server 150 to provide feedback.
- FIG. 10 illustrates an aspect method 1000 for a browser assistance server and a computer device that pulls metadata from the browser assistance server.
- the metadata may be based on a number of browsing habits of multiple users.
- the method 1000 similar to FIG. 9 may use “crowd sourcing” or information collected from a large amount of web users.
- the browser assistance server can use crowd sourcing or monitor a large amount of requests and request responses and infer empirical relationships between the request and response.
- the browser assistance server 150 can derive analytics from the request and response from a large number of web users.
- Method 1000 may be implemented in a computing device having a processor configured with processor-executable instructions to perform the operations of the method.
- the processor may commence operation at block 1002 by a browser assistance server 150 collecting browsing habit data for a number of users.
- the processor of the browser assistance server 150 may create metadata based on the collected data from a number of users. Metadata may be created and stored in an index, which can be periodically updated. Metadata may include HTML elements or XHTML elements, which are used to provide structured data about the browsing habits of a number of users. Metadata elements can be used to specify page description, keywords, and relationships through the other head elements and attributes. In another aspect, metadata elements may emulate the use of the HTTP response header or embed additional metadata in an HTML document.
- the processor of the computing device outputs program instructions so metadata is pulled from the browser assistance server 150 to the computing device.
- Pull technology includes network communication where an initial request for metadata originates from a client and is responded to by the browser assistance server 150 .
- the metadata may be pushed from the browser assistance server 150 to the computing device without any request.
- the metadata may be embedded in other data, or may be provided in a feed.
- the processor uses the metadata in block 1008 .
- the metadata may indicate that a library element has a very small chance of execution, while a second library element has a 90 percent chance of execution.
- the processor can use the metadata to download the second element immediately, while not downloading the first library element until some time later.
- the processor may use the metadata to render the webpage.
- the processor sends data from the rendering webpage to the browser assistance server 150 to optionally provide feedback.
- the feedback information may be provided in a pushed feed to the browser of the computing device.
- FIG. 11 illustrates an aspect method 1100 for a browser assistance server that includes an analytical module that forms a schema to assist the mobile browser with processing, executing and analyzing web content with the schema based on observed relationships.
- the analytical module monitors measurements made from a number of computer devices.
- the module reviews requests and responses to the requests made by the computing devices and a web server.
- the analytical module generates empirical data and creates hints for a computer device that can improve operation of the computer device.
- the data may comprise functional probabilities that certain webpage elements are parsed, executed, or analyzed.
- the analytical module may determine JavaScript execution function probabilities based on measurements made from hundreds of mobile devices.
- the data may comprise: partition code hints; lexing information; script tokens; AST data for parsing; portions of HTML that can be processed in parallel or portions that can be processed serially; CSS webpage optimization data; cached data; or any other metadata that can conserve mobile resources.
- An analytic module may be associated with a browser assistance server 150 , or alternatively may be associated with the computing device 100 , and may include an algorithm to speculate regarding portions of JavaScript code that may be executed and compiled.
- the analytic module may be an intermediate device that can deliver metadata to the computer device.
- the analytic module may be a software module that includes an algorithm that can monitor user habits and that can generate metadata hints based on the observed empirical data.
- Method 1100 may be implemented in a computing device having a processor 131 configured with processor-executable instructions to perform the operations of the method 1100 .
- the processor 131 may commence operation at block 1102 by a browser assistance server 150 collecting data regarding browsing habits for a number of users.
- the processor of the browser assistance server may provide data to an analytic module to create metadata based on the collected data from a number of users.
- the analytical module may create the metadata and store the metadata a storage medium, such as in an index, which can be periodically updated based on new information from browsing habits.
- the metadata is generated so the metadata may anticipate the user's next browsing activity and may assist the browser by providing the information pertaining to the next browsing activity in advance.
- the webpage may comprise JavaScript with a high probability of execution based on empirical data observed from other users.
- the analytical module may detect that the browser's next step may be to process the JavaScript.
- the analytical module may output control instructions to pre-compile the JavaScript and form binary code (or other native code) and provide the binary code to the computing device.
- the processor outputs program instructions so the metadata is delivered from the analytical module to the computing device.
- Processor 131 of the computer device that receives the metadata uses the metadata in block 1110 .
- the processor renders the webpage.
- the processor may optionally send data from the rendering webpage to the browser assistance server to provide feedback.
- FIG. 12 illustrates an aspect method 1200 for a browser assistance server 150 that includes a feature to provide targeted services on behalf of a mobile communication device.
- the browser assistance server 150 allows the mobile communication devices to cache information on a storage medium (e.g., the browser assistance server memory) regarding predetermined websites.
- a website may be frequently accessed by a mobile communication device 100 , such as daily at 8:00 a.m.
- the data can be written to the mobile device memory.
- a predetermined time later the storage medium may be full, requiring the data to be erased in favor of new data.
- the mobile communication device 100 at 8:00 a.m. will visit the predetermined site and will need to download some of the same web content elements again.
- the browser assistance server 150 may detect repeated browsing behavior by comparing patterns in daily web browsing activity including requests and responses to requests. When repeated behavior is detected, for example, by requesting the same webpage in a predetermined sequence, the browser assistance server 150 may provide targeted services to the mobile communication device 100 . The browser assistance server 150 may permit that mobile communication device 100 to write data to a storage medium (e.g., a cache memory).
- the cache memory may be associated with the browser assistance server 150 , or may be a different storage medium.
- the browser may access the popular website at 8:00 a.m. and data is written to the mobile device memory.
- the memory can be full, and the data is designated to be erased in favor of new data associated with a later used website.
- the mobile communication device may upload the data associated with the website including web site elements to the cache located on the BAS server 150 .
- the browser assistance server 150 may obtain the data directly from the website and store it in the cache without requiring the mobile communication device to upload the data.
- the mobile communication device before 8:00 a.m. or at 5:00 a.m. may download the data from the cache on the BAS server 150 .
- the cache memory may be located in another location, for example, a wireless hard drive or dongle.
- a user profile of popular websites may be stored on the mobile communication device or may be stored on the server.
- Method 1200 may be implemented in a computing device having a processor configured with processor-executable instructions to perform the operations of the method.
- the processor may commence operation at block 1202 by a browser assistance server 150 collecting data from browsing habits for a number of users.
- the processor of the browser assistance server 150 may identify popular webpages used by the computing device.
- the browser assistance server may generate metadata so the metadata may anticipate the user's next browsing activity.
- the browser assistance server may send metadata to a mobile device to provide targeted services for the mobile device so the mobile device may use a cache memory of the browser assistance server.
- Processor of the mobile communication device that receives the metadata uses the metadata in block 1210 and identifies popular webpages that are frequently accessed are transmitted to the cache of the browser assistance server for storage.
- the processor may render the webpage based on the user's habits and the mobile device processor may download the cache data to execute the request.
- the same webpage is not rendered and generally some webpage content may be reused but other webpage content likely may be updated.
- a prior version of a newspaper website may have some web content elements in common with a new version, however, some new web content elements, text and images may be needed.
- the browser assistance server 150 may also provide additional pre-fetching services and may update the content at the browser assistance server 150 and merge the updated content with the cache data.
- the browser assistance server 150 may pre-compile the cache content and deliver a binary or native code to the browser so the browser can render the webpage.
- FIG. 13 illustrates an aspect method 1300 for a browser assistance server that creates metadata.
- the metadata may be based on JavaScript execution profiles.
- the profiles may be observed from a number of requests and responses from a number of mobile device users.
- the JavaScript execution profiles may create hints for a computer device that can improve operation of the computer device.
- the data may comprise functional probabilities that certain JavaScript execution profiles of web elements occur and the frequency of the occurrence. This provides empirical data to base a decision on whether to download and to execute certain JavaScript since if there is a remote chance that a phrase will be accessed, a better choice would be to access data with a high probability of execution.
- Method 1300 may be implemented in a computing device having a processor 131 configured with processor-executable instructions to perform the operations of the method 1300 .
- the processor 131 may commence operation at block 1302 by a browser assistance server 150 collecting data of browsing habits for a “crowd” or a number of users.
- the processor of the browser assistance server may receive data regarding JavaScript execution profiles from a number of web users. For example, a first JavaScript element may have a first statistical likelihood of being executed while a second JavaScript element may have a second statistical likelihood of being executed that is less than the first by a factor of two based on the observed profile of multiple users. For example, a third JavaScript element may have a third statistical likelihood of being executed that is less than 5 percent while a fourth JavaScript element may have a fourth statistical likelihood of being executed that is less almost 95 percent based on the observed profile of multiple users.
- the browser assistance server 150 may examine the first through fourth statistical likelihoods.
- the browser assistance server 150 may compare the data to a threshold value.
- the browser assistance server 150 may generate metadata.
- the metadata may assist the browser to anticipate the user's next browsing activity.
- the metadata may assist the browser by providing the information pertaining to the likely next activity in advance.
- the processor outputs program instructions so the browser assistance server 150 may send metadata to the computer device to assist the computer device and to anticipate the browser's next action.
- the webpage may comprise the fourth JavaScript element with a high probability of execution based on empirical data observed from other users.
- the processor may detect that the browser's next step may be to download and process the fourth JavaScript element.
- the processor may confirm this decision while the third JavaScript element may not be transmitted and processed since it is likely the third JavaScript element will not be executed.
- FIG. 14 illustrates an aspect method 1400 for a browser assistance server that includes a feature to provide targeted services on behalf of a mobile communication device.
- the browser assistance server 150 allows mobile communication devices to cache information on the browser assistance server cache memory regarding predetermined websites and may further specify to not evict the cached data on the mobile communication device or on the BAS server 150 based on the user's habits. In this manner, the data may be analyzed for further action. For example, if the web site is frequently accessed as compared to a threshold amount, the browser assistance server 150 may prevent the cache from being overwritten for a predetermined period of time.
- the browser assistance server 150 may include a number of different cached states located on the browser assistance server 150 .
- a website may be frequently accessed by a mobile communication device at 8:00 a.m. and data is written to the mobile device memory.
- the browser assistance server 150 may detect this behavior and may provide targeted services to the mobile communication device 100 and permit that mobile communication device 100 to write data to a cache memory associated with the browser assistance server 150 .
- the browser may access the popular website at 8:00 a.m. and data is written to the mobile device memory.
- the memory can be full, and the data is designated to be erased in favor of new data associated with a later used website.
- the mobile communication device 100 will upload the data associated with the website including web site elements to the cache of the BAS server 150 .
- the mobile communication device before 8:00 a.m. at 5:00 a.m. will download the data from the cache server.
- the browser assistance server 150 can review the cached data for further analysis of user habits.
- Method 1400 may be implemented in a computing device having a processor configured with processor-executable instructions to perform the operations of the method 1400 .
- the processor may commence operation at block 1402 by a browser assistance server 150 collecting data from browsing habits for a number of users.
- the processor of the browser assistance server may collect information about a user profile and browsing habits of the user.
- the browser assistance server 150 may provide targeted services.
- the browser assistance server 150 may permit the computer device to cache data based on the user's browsing habits.
- the computer device may use a cache memory of the browser assistance server 150 to write data to the cache of popular webpage elements.
- the popular webpages and webpage elements that are frequently accessed are transmitted to the cache of the browser assistance server 150 for storage and the BAS indicates that the cache data is not to be erased and is marked for further analysis.
- the processor of the computing device may send a request for the popular website to render the webpage based on the user's habits.
- the mobile device processor 131 may read the cache data from the browser assistance server to execute the request.
- the browser assistance server 150 may also provide additional pre-fetching services and may update the content at the browser assistance server and merge the updated content with the cache data.
- the browser assistance server 150 may pre-compile the cache content and deliver a binary or native code to the browser so the browser can render the webpage.
- the browser assistance server may analyze the cache states for further optimization, and pre-fetching. In this aspect, metadata to provide hints for other user may be generated based in part on the analysis in block 1414 .
- FIG. 15 illustrates an aspect method 1500 for a browser assistance server 150 that includes a feature to provide targeted services on behalf of a mobile communication device 100 .
- the browser assistance server 150 allows mobile communication devices 100 to cache information regarding predetermined websites or predetermined web elements.
- the browser assistance server 150 may further augment cache data and supplement the cache with other data to provide hints to the mobile communication device 100 .
- a first website may be frequently accessed by a mobile communication device at 8:00 a.m. and data may be written to the mobile device memory.
- the memory may be full.
- the data may be erased in favor of new data associated with a later used second website.
- the user may instruct the browser on the mobile communication device at 8:00 a.m. and may visit the first website and may need to download the web content elements again.
- the browser assistance server 150 may detect inefficient behavior and may provide targeted services to the mobile communication device 100 .
- the browser assistance server 150 may permit that mobile communication device 100 to write data to a storage medium or cache memory associated with the browser assistance server 150 .
- the browser assistance server 150 may augment and supplement the cached data with other learned information or hints.
- the browser assistance server may provide metadata hints and embed the metadata hints within the cached data.
- the browser assistance server 150 may pre-compile the cache data and provide the cached data in a binary format (or native format) for the mobile communication device 100 .
- the browser may access the popular website at 8:00 a.m. and data may be written to the mobile device memory. However, a predetermined time later since the memory of the mobile communication device is constrained, the memory can be full, and the data is designated to be erased in favor of new data associated with a later used website. Before erasing the data, the mobile communication device 100 will upload the data associated with the website including web site elements to the cache of the BAS server 150 .
- the browser assistance server 150 may also optimize the cache data and embed metadata into the cached data.
- the browser assistance server 150 may provide metadata hints within the cache data for the benefit of the mobile communication device 100 .
- the mobile communication device 100 before 8:00 a.m. will download the data from the cache server with the augmented learned data.
- the mobile communication device 100 may render the page after updating. Further, the mobile communication device 100 may visit a second new website and use the embedded metadata within the downloaded content to parse, execute or analyze new web content.
- Method 1500 may be implemented in a computing device having a processor 131 configured with processor-executable instructions to perform the operations of the method 1500 .
- the processor 131 may commence operation at block 1502 where a mobile communication device 100 transmits a request for a webpage.
- the processor of the mobile communication device may collect information about a user profile and send the user profile to the browser assistance server 150 .
- the browser assistance server 150 may provide targeted services and may permit the computer device to cache data to a storage medium based on the user's browsing habits.
- the browser assistance server 150 may augment the cache data with metadata that includes learned information to assist the mobile communication device.
- the processor of the computing device may send a request for the popular website to render the webpage based on the user's habits.
- the mobile device processor may download the cache data from the browser assistance server 150 to execute the request and also may optionally download the metadata to assist the browser with current or future browser hints.
- the same webpage may not be rendered and generally some webpage content may be reused but other webpage content likely may be updated.
- the browser assistance server 150 may also provide cache data that has undergone optimization.
- FIG. 16 shows a high level diagram of a browser assistance server 150 reloading a cache state based on a user's personal profile. For example, on day 1 at 8:00 a.m. a user using a mobile communication device 100 may download a frequently accessed webpage including cache state A 1602 . The user may review the web site for a predetermined period of time and may engage several other hyperlinks and deviate from the webpage. At day 1, 3:00 p.m., the user may review a different website having different web content and may generate cache state B 1604 . Normally, the cache A 1602 would be deleted. However, the mobile communication device 100 and the browser assistance server 150 are connected via the Internet and the mobile device 100 may use the server 150 as a cache memory.
- the browser assistance server 150 can provide targeted services for the mobile communication device 100 .
- the browser assistance server 150 may detect that the website (that generated cache state A 1602 ) is frequently accessed.
- the website is accessed by the user almost daily at the same time interval of 8:00 a.m.
- the browser assistance server 150 will store cache state A 1602 on the server 150 as shown by reference arrow 1610 .
- the mobile communication device 100 can send a request for a different webpage and download data 1604 .
- the browser assistance server 150 may augment the cache data A 1606 .
- the browser assistant server 150 can embed metadata or add data that reflects learned information from the user's browsing habits. Server 150 may embed data from other users to provide hints to the mobile communication device browser 100 .
- the browser assistance server 150 may push the cache data A 1608 as shown from arrow 1612 from the server 150 to the mobile communication device 100 (along with any updated data contained and saved within the cache data A 1608 ).
- a user using a mobile communication device 100 may send a request to download a frequently accessed webpage and may include many web elements contained within cache data A 1608 and may update the web site.
- the browser assistance server 150 may serve as an L2 cache for the device 100 and can maintain a set of cache states.
- FIG. 17 illustrates an aspect method 1700 for a browser assistance server that may provide metadata to efficiently parse and execute JavaScript.
- Method 1700 may be implemented in a computing device having a processor configured with processor-executable instructions to perform the operations of the method 1700 .
- the processor may commence operation at block 1702 where a mobile communication device transmits a request for a webpage.
- the processor of the browser assistance server 150 may formulate hints for the mobile communication device to efficiently parse and to execute JavaScript.
- the metadata may identify a statistically relevant portion of the script.
- the browser assistance server may deliver metadata to the mobile communication device that includes hints to efficiently parse and execute JavaScript.
- the processor may use the metadata to parse the JavaScript.
- the mobile device processor may use the hints to execute the JavaScript.
- the mobile device sends feedback to the browser assistance server.
- FIG. 18 shows a high level diagram of a browser assistance server 150 detecting that a request for a webpage may include a webpage element that may result in the mobile device processor undergoing an undue amount of processing. The request may result in rendering a webpage in an inefficient manner.
- the browser assistance server 150 may detect certain webpage elements are present and may pre-compile the webpage elements into binary or a native format of the mobile device 100 .
- the browser assistance server 150 may generate a binary file that corresponds to the webpage element.
- the browser assistance server 150 may transmit the binary file to the mobile communication device 100 for a faster load time.
- a user using a mobile communication device 100 may seek to download a webpage by sending a request 1802 to the Internet 114 .
- the request may be received by a server (not shown) and the response request may potentially return data 1804 that includes HTML, JavaScript, CSS, and objects.
- the mobile communication device 100 may also send a request 1806 to a browser assistant server 150 .
- the request 1806 may determine whether the browser assistance server 150 can provide hints to more efficiently parse and execute HTML, JavaScript, CSS and objects.
- the browser assistance server 150 can also directly analyze and pre-compile JavaScript for a predetermined architecture.
- the browser assistance server 150 may process the JavaScript and may generate a direct binary pre-compiled translation of the requested JavaScript web elements 1810 .
- the direct binary translation of the requested JavaScript web elements 1810 can be transmitted to the mobile communication device 100 as shown by arrow 1808 for immediate use by the mobile communication device 100 browser.
- the precompiled binary 1810 allows the mobile communication device 100 to avoid parsing, analyzing and just-in-time processing associated with the JavaScript execution path.
- the mobile device 100 may optionally provide feedback to the browser assistance server 150 .
- the browser assistance server may provide a virtualized module on the mobile device 100 and deliver data to the virtualized module.
- FIG. 19 illustrates an aspect method 1900 for a browser assistance server that detects JavaScript elements and provides a direct binary translation of the requested JavaScript web elements to form the precompiled binary or native file.
- the direct binary translation is transmitted to the mobile communication device 100 for immediate use by the mobile communication device browser.
- Method 1900 may be implemented in a computing device having a processor 131 configured with processor-executable instructions to perform the operations of the method 1900 .
- the processor 131 may commence operation at block 1902 where a mobile communication device 100 transmits a request for a webpage.
- the processor of the mobile communication device may send a request to a browser assistance server 150 to efficiently parse and to execute JavaScript.
- the browser assistance server 150 may analyze the request and pre-compile the webpage JavaScript for the mobile communication device 100 .
- the browser assistance server 150 may form at least one pre-compiled binary file and may transmit the pre-complied binary file to the mobile device processor 131 .
- the direct binary translation may be transmitted to the mobile communication device 100 for immediate use by the mobile communication device browser. Alternatively, the translation may be in another native language associated with the mobile communication device browser. The native language allows the mobile communication device to avoid parsing, analyzing and just-in-time processing of a JavaScript execution path.
- the mobile device processor 131 may use the pre-complied data to render the webpage.
- the mobile device may optionally send feedback to the browser assistance server.
- FIG. 20 illustrates an aspect method 2000 for a browser assistance server that detects a library is requested.
- the library can be a YUI library or a jQuery library or any library known in the art.
- YUI is a library of JavaScript utilities and controls for building richly interactive web applications using techniques such as DOM Scripting, DHTML, and Ajax.
- jQuery is a fast and concise JavaScript library that simplifies HTML document traversing, event handling, animating and Ajax interactions for rapid web development and which is CSS3 compliant.
- the browser assistance server 150 may provide metadata that a first library portion is more frequently executed while a second library portion is less frequently executed. In this manner, the processor 131 may download a first library portion that may a higher statistical chance of use relative to a second library portion that likely may not be executed. In other aspect, if the assumptions are incorrect, the browser may send the fill library as soon as practicable.
- Method 2000 may be implemented in a computing device having a processor 131 configured with processor-executable instructions to perform the operations of the method 2000 . In method 2000 , the processor may commence operation at block 2002 where a mobile communication device may transmit a request for a webpage, which is received by a server.
- the processor of the mobile communication device may send a request to a browser assistance server to obtain hints for the mobile communication device and to process the request.
- the browser assistance server may analyze the request and in block 2006 , the processor may provide data regarding a most frequently used or most frequently executed portion of a library to the mobile communication device.
- the browser assistance server may also optionally provide information about the least frequently used or the least frequently executed library portions.
- the mobile device processor may download the most frequently used (or the most frequently executed library portion) first and may download other portions later in time.
- the mobile device processor may execute the portion and may download a second portion of the library at a time later, if at all.
- the mobile device may optionally transmit feedback to the browser assistance server.
- FIG. 21 illustrates an aspect method 2100 for a browser assistance server 150 that may detect and may provide hints of a most viewed portion of a webpage based on empirical data.
- the browser assistance server 150 provides metadata to a mobile device processor 131 so the mobile communication device can process the webpage in a more efficient manner.
- Method 2100 may be implemented in a computing device having a processor 131 configured with processor-executable instructions to perform the operations of the method 2100 .
- the processor may commence operation at block 2102 where a mobile communication device transmits a request for a webpage, which is received by a server.
- the processor 131 of the mobile communication device 100 may send a request to a browser assistance server 150 to obtain hints for the mobile communication device 100 and to process the request.
- the hints are contained in metadata sent from the server 150 to the mobile communication device 100 .
- the browser assistance server 150 may analyze the request.
- the processor 131 may provide data regarding a most frequently viewed webpage portion for a website to the mobile communication device 100 .
- the browser assistance server 150 may derive this information from empirical or statistics observed from a number of users.
- the browser assistance server 150 may also optionally provide information about the least viewed portion of the website.
- the mobile device processor 131 may download the most frequently viewed website portion first and may download other portions later in time in block 2110 .
- the mobile device processor 131 may execute the portion and download a second portion later.
- the mobile device 100 may send feedback to the browser assistance server 150 .
- FIG. 22 is a system block diagram of a receiver device suitable for use with any of the aspects.
- a typical receiver device 2230 may include a processor 2231 coupled to internal memory 2232 , a display 2233 , and to a speaker 2254 . Additionally, the receiver device may include an antenna 2234 for sending and receiving electromagnetic radiation that may be connected to a wireless data link and/or cellular telephone transceiver 2235 coupled to the processor 2231 and a mobile multimedia broadcast receiver 2236 coupled to the processor 2231 .
- Receiver devices 2230 typically also include menu selection buttons or rocker switches 2238 for receiving user inputs.
- Such a server 2300 typically includes a processor 2301 coupled to volatile memory 2302 and a large capacity nonvolatile memory, such as a disk drive 2303 .
- the server 2300 may also include a floppy disc drive, compact disc (CD) or DVD disc drive 2306 coupled to the processor 2301 .
- the server 2300 may also include network access ports 2304 coupled to the processor 2301 for establishing network interface connections with a network 2305 , such as a local area network coupled to other broadcast system computers and servers.
- the processors 2231 , 2301 may be any programmable microprocessor, microcomputer or multiple processor chip or chips that can be configured by software instructions (applications) to perform a variety of functions, including the functions of the various aspects described above. In some devices, multiple processors 2231 , 2301 may be provided, such as one processor dedicated to wireless communication functions and one processor dedicated to running other applications. Typically, software applications may be stored in the internal memory 2232 , 2302 , and 2303 before they are accessed and loaded into the processor 2231 , 2301 .
- the processor 2231 , 2301 may include internal memory sufficient to store the application software instructions. In many devices the internal memory may be a volatile or nonvolatile memory, such as flash memory, or a mixture of both. For the purposes of this description, a general reference to memory refers to memory accessible by the processor 2231 , 2301 including internal memory or removable memory plugged into the device and memory within the processor 2231 , 2301 itself.
- FIG. 24 shows a laptop computer 2410 .
- the aspects described above may also be implemented within a variety of personal computing devices, such as a laptop computer 2410 as illustrated in FIG. 24 .
- Many laptop computers include a touch pad touch surface 2417 that serves as the computer's pointing device, and thus may receive drag, scroll, and flick gestures similar to those implemented on mobile computing devices equipped with a touch screen display and described above.
- a laptop computer 2410 will typically include a processor 2411 coupled to volatile memory 2412 and a large capacity nonvolatile memory, such as a disk drive 2413 of Flash memory.
- the computer 2410 may also include a floppy disc drive 2414 and a compact disc (CD) drive 2415 coupled to the processor 2411 .
- CD compact disc
- the computer device 2410 may also include a number of connector ports coupled to the processor 2411 for establishing data connections or receiving external memory devices, such as a USB or FireWire® connector sockets, or other network connection circuits for coupling the processor 2411 to a network.
- the computer housing includes the touchpad 2417 , the keyboard 2418 , and the display 2419 all coupled to the processor 2411 .
- Other configurations of computing device may include a computer mouse or trackball coupled to the processor (e.g., via a USB input) as are well known, which may also be use in conjunction with the various aspects.
- DSP digital signal processor
- ASIC application specific integrated circuit
- FPGA field programmable gate array
- a general-purpose processor may be a microprocessor, but, in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine.
- a processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. Alternatively, some steps or methods may be performed by circuitry that is specific to a given function.
- the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored as one or more instructions or code on a non-transitory computer-readable or processor-readable storage medium. The steps of a method or algorithm disclosed herein may be embodied in a processor-executable software module executed which may reside on a non-transitory computer-readable medium. Non-transitory computer-readable and processor media include any available storage media that may be accessed by a computer or processor.
- non-transitory computer-readable media may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that may be used to carry or store desired program code in the form of instructions or data structures and that may be accessed by a computer.
- Disk and disc includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk, and blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of non-transitory computer-readable media.
- the operations of a method or algorithm may reside as one or any combination or set of codes and/or instructions on a non-transitory machine readable medium and/or non-transitory computer-readable medium, which may be incorporated into a computer program product.
Abstract
Methods and devices include a server and at least two web browsers operable on at least two different computing devices. A server processes requested code to return binary code as metadata to assist a computing device render a webpage. The server transmits the generated metadata to at least one computing device. The computing device renders a webpage using at least a portion of the provided metadata. The metadata may identify portions of JavaScript that can be processed in parallel. The metadata may identify a library portion that does not have to be loaded. The metadata may identify a portion of the webpage that may be rendered first before a second portion of the webpage. Returning metadata to the computing device can assist the computing device in parsing, analyzing or executing the request for the webpage.
Description
- This application is a continuation of prior U.S. application Ser. No. 13/192,064, filed Jul. 27, 2011, which is hereby incorporated by reference.
- The present invention relates generally to computing devices. More particularly, the present invention relates to methods for supplying hints and/or binary code to a web browser to conserve resources on a computing device.
- Increasingly, people are using mobile computing devices to consume media. Generally in mobile computing devices, battery life is limited. Once the battery is depleted, the mobile device will shut down and cannot be restarted until a power outlet can be found or a new battery is provided. This can be very frustrating to a user since they cannot use the mobile device while the battery is drained. Additionally, there are times when the mobile device is inefficient. The mobile device will waste mobile bandwidth, processing and battery resources without the user's knowledge. For example, the mobile device browser may download a very large file, such as a library when only a portion of the library is needed. Additionally, users do not like long wait times for downloading webpages and become frustrated when a website or media source is not instantly displayed.
- Some users generally follow certain daily browsing routines or habits of their mobile computing systems. For example, a user may access a portion of a webpage (e.g., stock quotes or sports scores) more frequently than other portions. Many users follow certain daily habits for consuming media. For example, if there is a newsworthy event that has recently taken place, many users will access the same webpage seeking the newsworthy content.
- Methods and devices enable improved web browsing on a computing device. The method includes a processor that transmits a request for a webpage from a computing device to a server, and the server returns metadata to the computing device. The metadata assists the computing device in parsing, analyzing or executing the request for the webpage, and comprises returned binary code from data processed at the server to assist the computing device.
- In another aspect, a system includes a server and at least two web browsers operable on at least two different computing devices. Each web browser reports the results of processing and rendering webpages to the server. The server aggregates the data and the server generates metadata from the aggregated web browser data. The server transmits the metadata to at least one computing device. The computing device renders a webpage using at least a portion of the metadata.
- An aspect of the present application includes a method for rendering a webpage on a computing device that includes transmitting a request for a webpage from the computing device, transmitting a request from the computing device for a browser assistant, and returning metadata to the computing device to assist the computing device in parsing, analyzing, or executing the request for the webpage. In an aspect, the metadata returned to the computing device may include data that may be any one of JavaScript function execution probabilities, Abstract Syntax Tree (AST) data for parsing data, script token data, lexing information, returned binary code from data processed at a server to assist the computing device, CSS metadata to assist in processing CSS webpage data at the computing device, JavaScript metadata to assist in processing JavaScript webpage data at the computing device, HTML metadata to assist in processing HTML webpage data at the computing device, and combinations thereof. In an aspect, the metadata returned to the computing device may include a plurality of observed users browsing statistics, and the method may further include using the plurality of observed browsing statistics to assist in loading portions of the webpage at the computing device before other portions. In an aspect, the metadata returned to the computing device may include statistics regarding a portion of code that has a predetermined probability of execution. In an aspect, the metadata returned to the computing device may include translated binary code resulting from JavaScript code executed on a server, and the method may further include transmitting the binary code to the computing device to maximize processing at the server and minimize processing at the computing device.
- In an aspect, the method may further include sending analytics that correlate to portions of the webpage that are popular so a web browser on the computing device loads the popular portions first. Aspect methods may further include gathering habits of a user of the computing device, and preloading into memory webpage elements frequently accessed by the user. Aspect methods may further include gathering in a server usage information from a plurality of users corresponding to popular data of the plurality of web users, and generating metadata based on the usage information and an analysis of habits of the plurality of web users. Aspect methods may further include sending metadata from a local network computer to the computing device, gathering usage information from a plurality of users corresponding to popular data of other web users, and generating metadata using the local network computer. Aspect methods may further include gathering aggregate information on browsing habits based on a plurality of users as the users use a web browser, monitoring the plurality of users to generate the browsing habits using an instrumented web browser, and generating metadata based on the browsing habits of the plurality of users.
- Aspect methods may further include generating metadata indicating a library is frequently downloaded, describing in the metadata that the library has a portion that is statistically likely needed before other portions for execution based on observed statistical information, and downloading the portion of the library first based on the metadata. In an aspect, the method may further include determining that the library has a most likely executable library portion based on statistical data, downloading the most likely executable library portion first before other portions of the library.
- Aspect methods may further include monitoring a plurality of users during browsing, generating metadata indicating a statistical percentage of users are likely to view a first portion of a webpage before other portions, transmitting the first portion to the computing device before other portions of the webpage. In an aspect, the metadata may include a profile for a user of the computing device, and the method may further include generating metadata indicating a statistical percentage that the user is likely to view a first portion of a webpage before other portions based on the profile, generating metadata indicating a statistical percentage that the user is not likely to view a second portion of a webpage, downloading the first portion first to the computing device before other portions of the webpage, and downloading the second portion a time period after the first portion. Aspect methods may further include generating metadata indicating habits of other users browsing, determining which portions of webpages are statistically likely to be accessed before other portions of the webpage based on the metadata, determining that a second portion is likely not accessed frequently, communicating in the metadata that the second portion is not accessed frequently and downloaded lower in priority than portions statistically likely to be accessed.
- Aspect methods may further include linking to a server via a wireless network, associating a browser with the server, collecting information for use by the computing device from the browser.
- Aspect methods may further include providing hints using the metadata for a web browser to parse, analyze or execute the request that may include JavaScript, determining that the JavaScript is inefficient to process at the computing device, and transmitting a binary pre-compiled translation of the JavaScript.
- Aspect methods may further include aggregating statistics regarding a plurality of web users browsing habits webpage, delivering the statistics in the metadata, using the statistics to conserve mobile resources by preloading statistically popular webpages before the webpages are requested at the computing device, downloading portions of the webpage that are popular, and omitting downloading second portions of the webpage that are not popular to conserve mobile resources. Aspect methods may further include sending browsing data from an Internet browser to a server, and generating the metadata from the browser data in the server. Aspect methods may further include sending data from an instrumental browser to a server, and generating the metadata from the data. In an aspect, the metadata returned to the computing device may include returning metadata from a peer device to the computing device that correlates to portions of the webpage that are popular with computing devices connected to the peer device so a web browser on the computing device loads the popular portions first.
- Aspect methods may further include providing a client side monitoring system of browsing habits of a second computing device, sending the browsing habits to a server, sending metadata from the server to the computing device based on the client side monitoring system of the browsing habits of the second computing device. Aspect methods may further include generating metadata from browsing habits that include requests and responses to requests, and providing the metadata to a peer device that is a peer of the computing device.
- Aspect methods may further include monitoring browsing habits of a plurality of users, sending the browsing habits to a server, formulating a plurality of observed profiles of the plurality of users based on the monitored browsing habits, monitoring the browsing habits of a computing device user, returning metadata from the server to the computing device based on at least one observed profile that matches the computing device user browsing habits.
- Aspect methods may further include describing in the metadata that a first portion of code is analyzed, downloaded, parsed, or executed more often than a second portion, and reordering and downloading the first portion of code before the second portion. Aspect methods may further include describing in the metadata that a library includes a portion that is determined most likely to be executed, and downloading the most likely to be executed library portion before other portions of the library.
- Aspect methods may further include transmitting the request for the browser assistant that is located on a server, determining that a web site is frequently accessed by the computing device, and uploading updated web site data to the computing device. Aspect methods may further include downloading first portions of webpages using the computing device before second portions based on statistical browsing habits contained in the metadata. Aspect methods may further include preloading portions of webpages using the computing device with the preloaded portions being identified using statistical browsing habits contained in the metadata.
- Aspect methods may further include monitoring browsing habits from a plurality of users, determining that a webpage comprising webpage elements is frequently accessed, storing webpage elements on a cache based on the browsing habits to prevent the webpage elements from being deleted on the computing device, downloading the webpage elements from the cache before an anticipated request. In an aspect, the method may further include monitoring browsing habits that are derived from a single user's browsing habits, updating the webpage stored on the cache, pushing elements on the cache to the computing device at periodic intervals without the request, updating the webpage stored on the cache, and passing elements from the cache to the computing device. Aspect methods may further include returning metadata to the computing device in advance by pre-caching the metadata to assist the computing device in parsing, analyzing, or executing the requested webpage.
- Aspect methods may further include returning metadata that allows the computing device to execute the webpage in a more efficient manner by executing necessary portions, and forgoing executing an entire webpage.
- In various aspects, the browser assistant may be located on a server that is the same server that responds to the request for the webpage, on a peer computer device, or on another network device.
- Aspect methods may further include transmitting a request for a webpage, in which the webpage includes portions, processing the portions using the browser assistant to result in native code, and returning native code to the computing device, in which the portions include JavaScript.
- Aspect methods may further include transmitting a request for data, transmitting a request to a first device, returning metadata to a second device, and describing portions of the webpage in the metadata that have a likely statistical chance of execution based on monitored empirical data of requests and responses to requests.
- The various aspects further include a computing device having a processor configured with processor-executable instructions to perform operations of the aspect methods described above. The various aspects may further include a computing device including means for performing the functions of the aspect methods described above. The various aspects may further include non-transitory processor-readable storage media having stored thereon processor-executable instructions configured to cause computing device processors to perform operations of the aspect methods described above.
- The various aspects further include a server having a server processor configured with processor-executable instructions to perform operations of the aspect methods described above. The various aspects may further include a server including means for performing the functions of the aspect methods described above. The various aspects may further include non-transitory processor-readable storage media having stored thereon processor-executable instructions configured to cause a server processors to perform operations of the aspect methods described above.
- The various aspects further include system including a server, a cellular communications network and a computing device (e.g., a mobile phone) in communication with the server via the cellular communications network, in which the server and the computing device are configured to perform operations of the aspect methods described above.
- The accompanying drawings, which are incorporated herein and constitute part of this specification, illustrate exemplary aspects of the invention, and together with the general description given above and the detailed description given below, serve to explain the features of the invention.
-
FIG. 1 is a communication system block diagram of a system for communicating with a mobile computing device. -
FIG. 2 is a process flow diagram of an aspect method using analytics to improve performance of a web browser. -
FIG. 3 illustrates a computing device communicating with a browser assistance server. -
FIG. 4 illustrates how a certain predetermined portion of code has a high probability of execution that may be downloaded before other portions. -
FIG. 5A is a process flow diagram of an aspect method to request metadata on a webpage from a browser assistant server. -
FIG. 5B is a process flow diagram of an aspect method to request metadata on a webpage from an instrumented browser. -
FIG. 5C is a process flow diagram of an aspect method to request metadata on a webpage from a web browser. -
FIG. 6 is a process flow diagram of an aspect method to request metadata on a webpage from a peer device. -
FIG. 7 is a process flow diagram of an aspect method to request metadata on a webpage from a home network computer that is linked to a mobile communication device to provide assistance to the mobile communication device. -
FIG. 8 illustrates a communication system block diagram of a server that sends hints to a mobile communication device for rendering a webpage. -
FIG. 9 is a process flow diagram of an aspect method to collect data from a number of different users' browsing habits and to create metadata which is pushed to a computing device to provide hints to render a webpage. -
FIG. 10 is a process flow diagram of an aspect method to collect data from a number of different users' browsing habits and to create metadata which is pulled from a computing device to provide hints. -
FIG. 11 is a process flow diagram of an aspect method to create metadata using an analytic module on a server. -
FIG. 12 is a process flow diagram of an aspect method to provide targeted services on behalf of a mobile communication device and to cache popular data on a server for the mobile communication device. -
FIG. 13 is a process flow diagram of an aspect method to create metadata of JavaScript execution profiles from multiple users to provide hints to a mobile communication device. -
FIG. 14 is a process flow diagram of an aspect method to provide targeted services on behalf of a mobile communication device and to cache popular data and to maintain frequently accessed cached data for a mobile communication device. -
FIG. 15 is a process flow diagram of an aspect method to provide targeted services on behalf of a mobile communication device to cache popular data on a server and to augment the cached data. -
FIG. 16 illustrates a browser assistance server providing frequently used cache data to the mobile communication device. -
FIG. 17 is a process flow diagram of an aspect method to generate metadata that has hints to parse JavaScript. -
FIG. 18 illustrates a server processing data and sending a precompiled binary file of the processed JavaScript data to the mobile communication device to avoid processing the JavaScript data. -
FIG. 19 is a process flow diagram of an aspect method to process data at a server and to provide a precompiled binary file of the processed data to the mobile communication device to avoid processing the data locally. -
FIG. 20 is a process flow diagram of an aspect method to provide metadata identifying a most frequently used library portion so the mobile communication device can download a most frequently used library portion without downloading the entire software library. -
FIG. 21 is a process flow diagram of an aspect method to provide metadata of a most viewed webpage portion so the mobile communication device can download a most viewed portion before another portion. -
FIG. 22 is a component block diagram of a mobile computing device suitable for use with the various aspects. -
FIG. 23 is a component block diagram of a server computing device. -
FIG. 24 is a component block diagram of a notebook computing device. - The various aspects will be described in detail with reference to the accompanying drawings. Wherever possible, the same reference numbers will be used throughout the drawings to refer to the same or like parts. References made to particular examples and implementations are for illustrative purposes, and are not intended to limit the scope of the invention or the claims.
- The word “exemplary” is used herein to mean “serving as an example, instance, or illustration.” Any implementation described herein as “exemplary” is not necessarily to be construed as advantageous over other implementations.
- As used herein, the terms “computing device,” “mobile device,” “mobile communication device,” and “handheld device” refer to any one or all of cellular telephones, personal data assistants (PDA's), palm-top computers, wireless electronic mail receivers, multimedia Internet enabled cellular telephones, Global Positioning System (GPS) receivers, wireless gaming controllers, tablet computers, notebook computers, netbook computers, wireless email devices, and similar personal electronic devices that include a programmable processor and memory, and are configured to communicate with a communication network.
- As used herein, the terms “computer,” “personal computer” and “computing device” refer to any programmable computer system that is known or that will be developed in the future. In an aspect, a computer will be coupled to a network such as described herein. A computer system may be configured with software instructions to perform the processes and operations described herein.
- As used herein, the terms “component,” “module,” “system,” and the like are intended to refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution. For example, a component may be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on a server and the server can be a component. One or more components may reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers.
- The various aspects described herein provide methods and systems that use machine learning technology to improve the media rendering, particularly webpage rendering on computing devices, such as mobile devices. In one aspect, a cloud service distributed network improves a browser experience by anticipating the browser's next action and providing metadata to the mobile device to provide hints to the mobile device. A mobile device has limited and constrained resources. A mobile device has a relatively smaller memory and data which is downloaded is erased or written over regularly. Additionally, a mobile device has a finite amount of battery power. Generally, battery power cannot be wasted on speculative tasks, and may be used to improve performance and provide immediate information to a user. User habits may be used by the browser to allow it to act more efficiently to conserve mobile resources or proactively to prepare media for instant access. For example, the web browser may efficiently download and process content based on the user's browsing habits, which is advantageous as load times can be faster and battery life can be extended.
- A browser assistant may improve cache behavior by monitoring browsing habits of a user or may monitor browsing habits of a number of different users. A browser assistant may provide hints to a mobile device and may improve cache behavior. For example, a server may push regularly visited pre-processed webpages to the mobile device.
- In another aspect, a mobile device may detect when certain browsing data that is frequently used or accessed is about to be deleted due to memory constraints. In this event, the mobile device may request targeted services from a server, and upload the frequently accessed data to a server for later use by the mobile device. The server may mark the uploaded information and return the data to the mobile device at a later date/time. In another aspect, the server may optimize the data and return the optimized data to the mobile device.
- In another aspect, the system may include a mobile device operatively connected to the Internet and a browser assistance server. The browser assistance server may also be operatively connected to the Internet and the mobile device. The browser assistance server may deliver metadata regarding websites to the mobile device. This metadata may provide hints on how the mobile device can efficiently handle a request for a webpage sent from the mobile device. For example, metadata may include information which enables the mobile device to anticipate the user's next browsing activity.
- The metadata may be any information that allows the mobile device or the server to better parse, execute or analyze browser's requests. For example, the metadata may be XML, Ajax, or jSAW code. In an aspect, the mobile device may review the metadata from the browser assistance server when rendering the webpage. The metadata may provide a scheme for optimized browser execution of webpages. The browser may use the metadata to more efficiently handle a requested webpage. This may lead to faster execution times and lower power usage. For example, the metadata may provide information that certain data is frequently accessed or is popular among users. For example, using a push/pull framework, data that ordinarily would be erased that is popular or that is used frequently can be uploaded from the mobile device to a cache memory located on a server. The data can be dynamically cached and may be read by the mobile device when needed.
- In an aspect, the metadata may include JavaScript metadata. The metadata may provide useful information including JavaScript function probabilities of certain phrases, script tokens, lexing information, Abstract Syntax Tree (AST) parsing information, already compiled binary data, just in time data, or other hints to save time in processing JavaScript requests at the mobile device. For example, the metadata may include Cascading Style Sheet (CSS) metadata including information such as simplified or optimized selectors, merging styles, or any other information to assist with processing, parsing, executing, or rendering CSS webpage data. In another aspect, the metadata may include hints on how to process a Document Object Model (DOM) tree in a parallel manner.
- In an aspect, the metadata may include HTML metadata with partitioned code hints. The hints may instruct the mobile device to process encoded pages in parallel rather than serially. In an aspect, the metadata may include data from a number of other users and may describe analytics or patterns received from observing other user's browsing habits.
- In an aspect, the analytics may indicate that a certain webpage element has a high probability of execution or may be very popular with other users. The mobile device may download those webpage elements based on speculation that the user may download the webpage element at some point. For example, using the analytics the metadata may indicate that a library includes a first portion that has a high probability of execution. The metadata may indicate that that library first portion should be transmitted or accessed immediately since it has a high probability of execution compared to other portions of the library. Another second portion may indicate a low probability of execution based on statistical information. The metadata may indicate that the second library portion need not be downloaded until later since the metadata indicates the second library has a low execution probability.
- In an aspect, the browser assistance server using analytics may generate the metadata. The browser assistance server may observe relationships from a crowd's habits. The metadata may indicate that a certain webpage is frequently accessed. The metadata may indicate that a certain webpage element, for example, text located on the frequently accessed webpage, is viewed by ninety percent of the visitors to the webpage. The habit information may also be compiled by the browser assistance server based on the observed browsing habits of a number of users.
- In yet another aspect, the metadata may be pre-cached on the mobile communication device and so that it may be provided to the mobile communication device in advance. For example, metadata may be transmitted to subscribing mobile devices at a predetermined time period in advance of when the user might need the information, such as during evening or early morning hours when network usage is low. Alternatively, the metadata may be transmitted as part of a synchronization procedure, such as for the top 100 websites that monitored users' access or the top 100 websites the user of the mobile communication device accesses. In some aspects, the metadata may not be provided on demand and may be provided before the request, during the request or after the request for a webpage. In one aspect, metadata may have a slower rate of change relative to web content, and thus may be pre-cached to the user's computer or mobile device at predetermined intervals. For example, the metadata may be supplied at a non-peak hour, such as late at night, or periodically, such as weekly.
- When a newsworthy event occurs, users' web browsing may be monitored. The users' web browsing habits may indicate that users are sending requests from web browsers to a news website to view a particular text story and photo images. The webpage elements may have a high probability that the mobile device user may also view the webpage element based on the mobile device user's own browsing habits. The metadata from the browser assistance server may enable the mobile device to download content based on speculation that the user will download the text and webpage at some time.
- In another aspect, the browser assistance server may collect information about the functions which were statistically executed by a number of users of particular webpages. In response, the browser assistance server may create an index of the statistical information. The browser assistance server may use this statistical information to deliver metadata to a number of mobile devices to enhance their users' web browsing experiences.
- In an aspect, a code may be generated including HTML code, CSS, a first JavaScript function and a second JavaScript function and other code. The browser assistance server may observe that the first and second JavaScript functions were executed by many users more so than other functions on webpages. The browser assistance server may provide metadata to the mobile device including statistical information regarding the frequency or probability of execution of the first and second JavaScript functions. The metadata may enable the mobile device to optimize performance of the web browser using the metadata.
- In another aspect, the mobile device may request analysis information from the browser assistance server. The analysis information may be for a particular requested webpage. The request to the browser assistance server may include context information, user profile information, communication information, mobile device information, and/or web browser information. The request may allow the browser assistance server to return metadata that is relevant to the user.
- In another aspect, the mobile device may be provided with targeted services. The mobile communication device may have a cache on the browser assistance server and the mobile device may store data on the cache. The cache may be a component of the server that transparently stores data so that future requests for that data can be served faster. The data that is stored within a cache might be values that have been computed earlier or duplicates of original values that are stored elsewhere. If requested data is contained in the cache (a “cache hit”), this request may be served by simply reading the cache, which is comparatively faster for the mobile device. Otherwise, the data has to be recomputed by the mobile communication device or fetched from its original storage location, which is comparatively slower. Hence, the more requests that can be served from the cache to the mobile communication device, the faster the overall system performance can be.
- In an aspect, the browser assistance server may provide a targeted service for a number of mobile devices. For example, a mobile device may write to a cache on the browser assistance server including cached JavaScript or a cached library for future use. This may save processing time and battery life. For example, a mobile device or a browser assistance server may determine that data about to be erased on the mobile device is relevant to the user based on the user's browsing habits, and save the data in a cache associated with a server.
- In another aspect, the server may optimize the cached data. For example, a profile of a user may be stored at the browser assistance server. For example, a browser assistance server may detect that a user downloads the same websites each day at 8:00 a.m. For example, the mobile device may run up against a memory limit later in the day. The mobile device may also detect that certain webpage elements will be used the next day at 8:00 a.m. The mobile device may write the webpage elements to the cache associated with the browser assistance server as an L2 cache. The mobile device may access the webpage elements from the cache the next day.
- In another aspect, the browser assistance server may directly analyze and compile JavaScript in advance. The JavaScript may not have to be processed on the mobile communication device. This data may also be compiled for a predetermined architecture. The browser assistance server can provide a binary data that is rendered from the processed JavaScript. The binary data can be transmitted to the mobile device so the mobile device avoids compiling the JavaScript locally. The mobile device processor avoids parsing, executing, and just-in-timing phrases of a JavaScript execution path, and may render the elements faster.
-
FIG. 1 shows a communication system including amobile device 100 that may include adisplay 110 that provides a graphical user interface (GUI) for remotely accessing and controlling personal media content. Such a GUI may include icons and shapes associated with functions which may be selected by pressing physical keys in a keypad that may be provided below thedisplay 110, or by pressing the display itself when the display has touchscreen capability. TheGUI display 110 may include icons shown asreference numeral 115. - Some of the components of the communication system that enable controlling network and device access on a
mobile device 100 are illustrated inFIG. 1 . To enable amobile device 100 to access theInternet 114, andregistration server 142, themobile device 100 may communicate with awireless network 130, such as a cellular communication network. Thewireless network 130 may communicate with theInternet 114 via acarrier network 326 through adata link 330, such as the Internet, a secure LAN, WAN, or other network. Thecarrier network 326 controls messages (generally comprising data packets) sent to a mobile switching center (MSC) 332. Thecarrier network 326 communicates with theMSC 332. This communication may be to transfer data and voice information. TheMSC 332 may be connected to multiple base stations (BTS) 132 by anothernetwork 336, such as a data network and/or Internet portion for data transfer and a POTS portion for voice information. ABTS 132 may wirelessly broadcast messages to, and receive messages from, themobile devices 100, using predetermined voice and/or data packet services, such as Code Division Multiple Access (CDMA), short messaging service (SMS), or any other over-the-air methods. -
Mobile devices 100 may be configured to include acomputer platform 120 having amemory 125 in communication with aprocessor 131, such as via an application programming interface (API) 135 that enables interaction with any resident applications (e.g., a “media”interface 140 that works cooperatively with information communicated by theregistration server 142 shownFIG. 1 ). - The
platform 120 may also include a gateway interface 145. The gateway interface 145 may be a standard that defines how web server software can delegate the generation of webpages to a stand-alone application in an executable file. The gateway interface 145 may include CGI scripts written in any programming language or any scripting language. The gateway interface 145 has program instructions for aserver 142 to pass a web user's request to an application program and to receive data back so to the gateway interface can forward the data to the user. - When the user requests a webpage (for example, by clicking on a highlighted word or entering a web site address), the
server 142 may transmit the requested page. However, when a user fills out a form on a webpage and transmits the form, the form usually needs to be processed by an application program. Theserver 142 may transmit the form information to a small application program that processes the data and may transmit back a confirmation message using the gateway interface 145. - A
browser assistance server 150 may also be provided. In an aspect, thebrowser assistance server 150 can be the same asserver 142, or a different server. In another aspect, the browser assistant may be software that is resident on multiple different computers. - The
browser assistance server 150 may provide metadata to themobile device 100 that is operatively connected to theInternet 114. The gateway interface 145 has program instructions for thebrowser assistance server 150 to pass a web user's request to an application program and for theserver 150 to transmit metadata to the user. In one aspect, the metadata may be embedded into a header of the requested browsing data. In another aspect, the metadata may be separately transmitted from the requested browsing data. - When the user requests a webpage (for example, by clicking on a highlighted word or entering a web site address), a second request may also be provided to the
browser assistance server 150 for theserver 150 to transmit the requested metadata. In another aspect, thebrowser assistance server 150 can also receive the request for the webpage data toserver 142 and in response send the metadata to themobile device 100 without receiving a separate or second request. In another aspect, the metadata may be sent periodically without any request. For example, metadata may be delivered in a cycle, such as once every fifteen minutes. -
FIG. 2 shows an illustration of an aspect method 200 for using analytics at amobile communication device 100 to improve performance. Analytics may include any observed or calculated logical analysis that may enable a mobile device to improve performance. For example, the analytics may indicate that certain phrases have a higher likelihood of execution than other phrases, so that mobile device may download those phrases sooner on other phrases. - Method 200 may be implemented in a computing device having a
processor 131 configured with processor-executable instructions to perform the operations of the method 200. In method 200, the processor of amobile communication device 100 may commence operation atblock 205 by accessing a web browser application. The web browser can be any web browser having program instructions for retrieving, presenting, and traversing information resources on the World Wide Web. An information resource is identified by a Uniform Resource Identifier (URI) and may be a webpage, image, video, or other data content. Hyperlinks present in web content enable users to easily navigate a browser to a related resource. - The web browser may bring information resources to a user of the
mobile communication device 100. The user may input a Uniform Resource Identifier (URI) into the browser, or may click a link. Received HTML scripts may be passed to a browser's layout engine and be transformed from markup to an interactive document. The web browsers may generally display any kind of content that can be part of a webpage. Data may include image, audio, video, and XML file, Flash applications, and Java applets. Interactivity in a webpage may be supplied by JavaScript. JavaScript may be used along with other technologies to allow live interaction with the webpage's server via an Ajax programming language. JavaScript programs may produce interactive 2D graphics using the API and may render 3D graphics. - In
block 210, the processor may send analytics from aserver 150 to themobile communication device 100. For example, the analytics may be delivered within metadata, but also the analytics may be delivered in other formats. The term metadata refers to any data about data, and can include information that provides hints to anticipate browser performance, or to assist a web browser or mobile communication device to improve performance. - Metadata may include data about a design and specification of data structures. Metadata may also include descriptive metadata which includes application data or data content. Metadata may also include statistical information and can be any description of the content and context of data files so a quality of the original data or files is greatly increased. For example, metadata may improve an experience of a user by assisting a mobile communication device to operate more efficiently to increase a life of the device.
- In
block 215, a second processor associated with themobile communication device 100 may receive the analytics. This may be accomplished by the mobile communication device downloading the metadata directly from theserver 150 or from an intermediary. In another aspect, the metadata may be embedded within data content. In another aspect, the metadata may be downloaded from a peer device or may be downloaded from a home network device. Inblock 220, the mobile communication device processor uses the analytics to improve performance. For example, the metadata may identify popular web content portions or content that has a high statistical likelihood of being executed. -
FIG. 3 shows a high level schematic of amobile communication device 100 and abrowser assistance server 150 connected to theInternet 114. A request for awebpage 1 a may be transmitted from themobile communication device 100 to theInternet 114. Therequest 1 a may be for a webpage and may include a web uniform resource identifier. Therequest 1 a may return HTML, XML, JavaScript, Cascading Style Sheets, XHTML, and data objects. - The mobile communication device 100A may transmit a
second request 1 b to abrowser assistance server 150. Thesecond request 1 b returns metadata. The metadata may include hints that can anticipate a browser's next action on themobile communication device 100. The metadata includes information which allows the mobile communication device to better parse, analyze, and/or execute a web browser'srequest 1 a. The metadata may be in Ajax, XML, or J-SAW. - As shown by
arrow 2, themobile communication device 100 can use the metadata to more efficiently handle a requested webpage, which can lead to faster execution times, lower power usage, or less processing time. For example, using a first browser operable on themobile communication device 100, the user may select a hyperlink. Arequest 1 a for a webpage may be delivered to access HTML, XML, JavaScript, Cascading Style Sheets, XHTML, and data objects. The first browser may further send asecond request 1 b that is unknown by the user and that does not disrupt the browsing experience. - The
browser assistance server 150 may receive thesecond request 1 b. Thebrowser assistance server 150 may improve performance by detecting that there exists JavaScript in the webpage that is about to be rendered. Thebrowser assistance server 150 may have already compiled the JavaScript, or may compile the code immediately. Thebrowser assistance server 150 may deliver the complied JavaScript into a binary file (or another native format) to themobile communication device 100 browser. The compiled JavaScript binary file removes the burden of compiling the code on the processor on the mobile communication device, saving rendering time and processing resources. The precompiled JavaScript is rendered on the mobile communication device. - In another aspect, the
browser assistance server 150 may receive bothrequests browser assistance server 150 may provide a virtual machine on themobile communication device 100 to allow sharing of the underlying physical machine resources between different machines, each running its own operating system. This may reduce the processing burden on a mobile device processor. -
FIG. 4 illustrates abrowser assistance server 150 and amobile communication device 100 forming a request and sharing metadata and connected to theInternet 114. A request for a webpage may be sent from themobile communication device 100 to a server on theInternet 114. A request for a webpage may include a web uniform resource identifier. The Internet server may return HTML, XML, JavaScript, Cascading Style Sheets, XHTML, and data objects. Asecond request 1 b also may be sent from themobile communication device 100 to abrowser assistance server 150. - The
request 1 may returnmetadata 3 that includes hints for the mobile communication device's browser. The hints may anticipate a browser's next action on themobile communication device 100. The metadata may include information which allows themobile communication device 100 to better parse, analyze, and/or execute a web browser'srequest 1. Thebrowser assistance server 150 may also process arequest 1. Thebrowser assistance server 150 may improve performance by detecting that there exists JavaScript portions in the webpage that have a high probability of execution and other second portions that have a low probability of execution based on statistical observed browsing patterns. Statistical observed browsing patterns may originate from various sources. For example, the statistical observed browsing patterns may be monitored from a number of monitored web browsers. Thebrowser assistance server 150 may obtain empirical data and store the empirical data in an index. Alternatively, the statistical observed browsing patterns may be monitored from themobile communication device 100. Alternatively, a third computing device may observe the browsing habits, and store the browsing habits in an index in a storage medium and upload the index to thebrowser assistance server 150. - Alternatively, the statistical observed browsing patterns may be observed from a number of peer devices. The
BAS server 150 may study the browser data of the peer devices and store empirical data in the index. - In an alternative aspect, a programmer may include data indicating that some portions have a high probability of execution while others portions have a low probability of execution within the actual code to provide an indication to the
mobile device 100. Thebrowser assistance server 150 may pre-compile the JavaScript and transmit the high probability-of-execution portion of the JavaScript precompiled in a binary or native format. - The
browser assistance server 150 may deliver the data or the metadata to themobile communication device 100 as shown byarrow 3. The metadata may include hints to download the first high probability of execution portion while not downloading the second low probability execution portion. Alternatively, the metadata may include hints that the mobile device should download the first (high probability of execution) portion while downloading the second (low probability execution portion) at a later time. -
FIG. 5A illustrates anaspect method 500 for returning metadata from abrowser assistance server 150 to a mobile communication device to conserve power in amobile device 100.Method 500 may be implemented in a computing device having aprocessor 131 configured with processor-executable instructions to perform the operations of themethod 500. - In
method 500, theprocessor 131 may commence operation atblock 502 by collecting data from a number of other users in order to determine statistical information about webpage content. For example, the statistical information may include habit data indicating that certain web content elements have a high probability of being viewed or being executed based on the collected data. However, the data may include any other information that would lead to more efficient operation of themobile device 100. - In
block 504, the processor may request metadata on a webpage from a browser assistance server. Inblock 506, the processor may send a request from a mobile device for a webpage. Indecision block 508, the processor may use the data collected from other users and the request to determine whether the browser assistance server has information to better parse, analyze or execute the request. - For example, the browser assistance server may determine that certain JavaScript includes a portion that has a high probability of execution based on observed statistics. If so (i.e.,
decision block 508=“Yes”), which indicates information exists to better parse, analyze, or execute the request by the processor at theserver 150, the processor may return metadata to the mobile device inblock 512. On the other hand, if theBAS 150 does not have information to better parse, detect or analyze the request for the mobile device 100 (i.e.,decision block 508=“No”), the processor may have no metadata to return inblock 510. The mobile communication device may execute the webpage code inblock 516. - In
block 512, the processor of the browser assistance server may return metadata to the mobile device. For example, the metadata may suggest that a portion of a library has a remote possibility of being utilized by the web browser and may not be downloaded immediately. In another aspect, the metadata may contain a binary file (or native language file) that corresponds to compiled JavaScript. This information may enable browser operations to be improved as the mobile device may not have to parse, analyze, or execute JavaScript. - In
block 514, the processor of the mobile device can use the metadata to facilitate web processing. For example, the mobile processor may determine (using the metadata) that HTML included in webpages has sections that can be processed in parallel, rather than serially processed. The mobile processor may process the webpage elements in parallel based on the metadata. For example, the metadata may include JavaScript function probabilities, script tokens, or lexing information, and the mobile processor may use the metadata to render the webpage by executing JavaScript that has a high probability of execution while executing other portions later in time. Inblock 516, the processor for the mobile device may execute the webpage code and may render the webpage in a manner that is faster than an instance where the metadata hints are not provided. -
FIG. 5B illustrates anaspect method 550 for use with an instrumented browser that collects data from a number of users and that returns metadata to a mobile communication device to conserve mobile resources in amobile device 100. The instrumented browser may include at least one add on module to a web browser. The add on module may monitor a user's activity. The instrumented browser of a number of users may pool the habit data of many devices. For example, the instrumented browser may log keystrokes or may log inputs of a user to enable details of a user interaction to be monitored, collected, and recorded. The habit information may include empirical analytic data related to habits of the user(s) and logical relationships that can be used to improve a mobile device performance. -
Method 550 may be implemented in a computing device having aprocessor 131 configured with processor-executable instructions to perform the operations of themethod 550. Inmethod 550, theprocessor 131 may commence operation atblock 518 by a processor associated with an instrumented browser collecting data from a number of other web users in order to determine statistical information about webpage content. The statistical information may include data that certain web content elements have a high probability of being viewed or executed based on the collected data. In another aspect, the data may be particular to the user of the browser. For example, during browsing the user may have a habit of executing particular files or file types over other web elements. For example, the particular user may access financial sites that require JavaScript elements to be executed every morning at 8:00 a.m. - In
block 520, the processor may request metadata on a webpage. Inblock 522, the processor may send a request from a mobile device for a webpage. Indecision block 524, the processor may use the data collected from the instrumented browser to better parse, analyze, or execute the request. For example, the instrumented browser may determine that certain JavaScript includes a portion that has a high probability of execution based on observed statistics. Alternatively, the instrumented browser may determine that a user reviews the same webpage every day at 9:00 a.m. and certain data was cached for the next day so the instrumented browser does not need to download all of the webpage elements the next day. - If so (i.e.,
decision block 524=“Yes”), which indicates that the instrumented browser has information to better parse, analyze or execute the request, the processor may return metadata to the mobile device inblock 528. For example the metadata may indicate that a portion of a library has a remote possibility of being utilized by the web browser and may not be downloaded. In another aspect, the metadata may contain a precompiled binary (or native language) file that corresponds to JavaScript so the mobile device does not have to parse, analyze or execute JavaScript to assist the instrumented browser. Thus, the instrumented browser can simply use a native language to render the JavaScript phrase. - On the other hand, if the instrumented browser does not have information to better parse, detect or analyze the request for the mobile device 100 (i.e.,
decision block 524=“No”), the processor may have no metadata to return inblock 526 and a mobile communication device can execute the webpage code inblock 532. Inblock 530, the processor of the mobile device can use the metadata to facilitate web processing. Inblock 532, the processor for the mobile device executes the webpage code and renders the webpage in a manner that is more efficient. -
FIG. 5C illustrates anaspect method 580 for use with a web browser that collects data from a user and that returns metadata to a mobile communication device to conserve mobile resources in amobile device 100. The browser monitors a user's activity.Method 580 may be implemented in a computing device having a processor configured with processor-executable instructions to perform the operations of themethod 580. Inmethod 580, the processor may commence operation atblock 534. A processor associated with the web browser may collect data from a web browser session. This can be used to determine statistical information about a user's habits when viewing or browsing webpage content. For example, the data may be particular to the user of the browser. For example, the user has a habit of executing particular files or file types statistically over other elements. - In
block 536, the processor may send a request for metadata on a webpage. Inblock 538, the processor may send a request from a mobile device for a webpage. Indecision block 540, the processor may use the data collected from the user's web browsing to better parse, analyze or execute the request. For example, the browser may determine that certain JavaScript phrases include a portion that has a high probability of execution based on observed statistics. Alternatively, the browser may determine that a user reviews the same webpage every day at 9:00 a.m. and certain data is cached for the next day. Therefore, the browser does not need to download all of the webpage elements the next day and may operate more efficiently. - If so (i.e.,
decision block 540=“Yes”), which indicates that the browser has information to better parse, analyze or execute the request, the processor may return metadata to the mobile device inblock 544. On the other hand, if the browser does not have information to better parse, detect or analyze the request for the mobile device 100 (i.e.,decision block 540=“No”), the processor may have no metadata to return inblock 542, and a mobile communication device may execute the webpage code inblock 548. Inblock 544, the processor of the web browser may return metadata to the mobile device. Inblock 546, the processor of the mobile device can use the metadata to facilitate web processing. Inblock 548, the processor for the mobile device executes the webpage code and renders the webpage in a manner that is faster than an instance where the metadata hints are not provided. -
FIG. 6 illustrates anaspect method 600 that may be used with a peer device that collects data of a user and returns metadata to a mobile communication device to efficiently use mobile resources in amobile device 100. The peer-to-peer device can be another mobile device, access point, other device, etc., that communicates with the mobile device and/or other devices (not shown). In one example, the peer device can be an independently powered device in a home or business that provides communication services in conjunction with or as an alternative to a base station. In addition, the peer-to-peer device can identify neighboring devices. In an example, the peer-to-peer device can receive or otherwise listen to downlink assignments from the base station to the mobile devices. The peer device can also receive or otherwise listen to uplink transmissions from the mobile devices over resources in the downlink assignments to identify the mobile devices (e.g. based on information within the uplink transmissions). The peer device may operate a web browser that monitors a user's activity. -
Method 600 may be implemented in a computing device having a processor configured with processor-executable instructions to perform the operations of themethod 600. Inmethod 600, the processor may commence operation atblock 602 by a processor of the peer device collecting data from a web browser session. This may be performed in order to determine statistical information about webpage content. - For example, the statistical information may include data that certain web content elements have a high probability of being viewed or executed based on the collected data. In another aspect, the data may be particular to the user of the browser. For example, the user may have a habit of executing particular files or file type statistically over other elements. The peer device may generate metadata to form hints to anticipate a browser's next action based on browsing habits that are observed on the mobile device. In another aspect, a peer device may receive metadata from other peer devices and may aggregate data regarding browsing habits of many users to form hints. In another aspect, the peer device may receive metadata from a browser assistance server and may share that metadata with other peer devices. In a further aspect, the peer device may collect the habit data.
- In
block 604, the processor may request metadata on a webpage. Inblock 606, the processor may send a request from a mobile device for a webpage. Indecision block 608, the processor may determine if the data collected from the peer device can better parse, analyze or execute the request. - If so (i.e.,
decision block 608=“Yes”), which indicates that the peer device has information to better parse, analyze or execute the request, the processor may return metadata to the mobile device inblock 612. On the other hand, if the peer device does not have information to better parse, detect or analyze the request for the mobile device 100 (i.e.,decision block 608=“No”), the processor may have no metadata to return inblock 610 and a mobile communication device may execute the webpage code inblock 616. - In
block 612, the processor of the peer device may return metadata to the mobile device. For example, the metadata can improve operations of the mobile device and metadata may instruct the mobile device browser that certain portions of webpages have a high likelihood of execution or a high likelihood of being viewed and may be downloaded based on data aggregated by the peer device (or by data learned by the peer device from another source). For example, the metadata may indicate that a portion of a library has a remote possibility of being utilized. - In
block 614, the processor of the mobile device can use the metadata from the peer device to facilitate web processing. For example, the mobile processor may determine using the metadata that HTML included in webpages has portion that can be processed in parallel rather than serially processed. The mobile processor may process the webpage elements in parallel based on the metadata supplied from the peer device. Inblock 616, the processor for the mobile device executes the webpage code and renders the webpage. -
FIG. 7 illustrates anaspect method 700 for use with a network device that collects data of a user and returns metadata to amobile communication device 100 to enable the device to efficiently use its mobile device resources. For example, in this aspect, themobile communication device 100 may form a portion of a home network, and receive and transmit data via the home network. For example, the home network may include a gateway connected to a computer and that forms an access point. For example, themobile device 100 may include a wireless interface to access an access point that is connected to the Internet. A network computer having a processor and a memory may also be connected to a modem that is connected to the Internet. - The network device can be a desktop computer, a laptop computer, a mobile device, a tablet computer, or other device that communicates with the mobile device and/or other devices (not shown). The network device may monitor a user's activity on a web browser and may pair with the mobile device to provide data to the mobile device.
Method 700 may be implemented in a computing device having a processor configured with processor-executable instructions to perform the operations of themethod 700. Inmethod 700, the processor associated with the network device may commence operation atblock 702 by collecting data from a web browser session by a user in order to determine statistical information about webpage content. In another aspect, the network device may also communicate with abrowser assistance server 150 via theInternet 114. The network device may also receive data from other users' web browsing habits. The network device may use the data to predict a web browser's next action. For example, the network computer device may generate metadata to form hints to anticipate a browser's next action based on browsing habits that are observed on the mobile device. - In
block 704, the processor may request metadata on a webpage. For example, the metadata may be generated at the network device, a peer device, or abrowser assistance server 150. Inblock 706, the processor may send a request from a mobile device for a webpage. - In
decision block 708, the processor of the network device may determine if the network device has information that a browser can use to better parse, analyze or execute the request. For example, the network device may determine that certain JavaScript phrases include a portion that has a high probability of execution based on observed statistics. The network device may review the request and may determine that metadata is relevant to the request and may be sent to the mobile device browser. - If so (i.e.,
decision block 708=“Yes”), which indicates that the network device has information to better parse, analyze, or execute the request, the processor may return metadata to the mobile device inblock 712. On the other hand, if the network computer device does not have information to better parse, detect, or analyze the request for the mobile device 100 (i.e.,decision block 708=“No”), the processor may have no metadata to return inblock 710 and a mobile communication device may execute the webpage code inblock 716. - In
block 712, the processor of the network device may return metadata to the mobile device as a separate file or embedded in a header of the content. Inblock 714, the processor of the mobile device can use the metadata from the network device to facilitate web processing. For example, based on a number of observed users, the metadata may indicate that a portion of a webpage is the most viewed webpage element based on statistical information. Metadata may indicate that the most viewed webpage element may be downloaded first before other webpage elements. Alternatively, the network device may communicate metadata that indicates that a library includes at least (1) a high probability executable portion or (2) a low probability execution portion. Metadata may indicate that the processor may download one portion first over another portion, a sequence or a schema. Inblock 716, the processor for the mobile device executes the webpage code and renders the webpage. By using the metadata hints mobile device resources are conserved. -
FIG. 8 illustrates a high level communication diagram of abrowser assistance server 150 delivering metadata or other packets 802-814 to a communication network via abase station 101 and to amobile communication device 100. Metadata or other data packets 802-814 transmitted form no limitations and some metadata may be sent while other metadata is not sent. For example, depending on the request some metadata may be appropriate while other metadata may not be appropriate. Example data transmitted from thebrowser assistance server 150 may include data pushed based on browsing habits as shown byblock 802. Preprocessed webpages that are in a native format for use by themobile communication device 100 are shown asblock 804. Userstatistic metadata 806, metadata hints 808, metadata to assist with parsing 810, metadata to assist withexecution 812, and metadata to assist with analyzing awebpage request 814 may also be delivered to themobile communication device 100 from thebrowser assistance server 150. - A mobile communication device processor may receive an input that a user clicked on a hyperlink indicating that the user seeks to open a first webpage using a web browser operable on the mobile communication device. In response, the
mobile communication device 100 may send arequest 816 for webpage content inblock 816. Therequest 816 is transmitted to the mobilecommunication base station 101. For example, thebase station 101 may send the request to a server 142 (FIG. 1 ) to obtain the web content. - A request to the browser assistance server in
block 818 is transmitted to thebase station 101. Thebase station 101 communicates the request to thebrowser assistance server 150. In response to the request, thebrowser assistance server 150 may deliver one or more metadata blocks 802-814, data, cached data, or other metadata, to assist themobile communication device 100 with processing the webpage. Some data can be pushed to the mobile communication device without receiving anyrequest 818. - For example, a
mobile communication device 100 may periodically erase a memory and data contents due to space constraints. The metadata may indicate that some data content may be cached to aserver 150 as targeted services on behalf of themobile communication device 100. Alternatively, the cached data may be pushed to the mobile communication device at some future interval without any request. Using the metadata, themobile communication device 100 may render thewebpage 820 in an efficient manner. Themobile communication device 100 also will optionally notify the user of an availability of a web site inblock 822. Themobile communication device 100 also may optionally provide feedback to thebrowser assistance server 150 inblock 824 of a quality of service of the metadata. -
FIG. 9 illustrates anaspect method 900 for abrowser assistance server 150 that pushes metadata to a computing device based on a number of browsing habits of multiple users. For example, themethod 900 may use “crowd sourcing” or information collected from a large amount of web users. For example, the browser assistance server can monitor a large amount of requests and request responses, and infer empirical relationships between the browser request and response. Thebrowser assistance server 150 can derive analytics from the request and response from a large number of web users. For example, these may include JavaScript function probabilities based on a number of measurements made for hundreds of mobile devices. For example, the empirical data may include the JavaScript phrases that are executed, loaded, viewed, analyzed, parsed, etc. -
Method 900 may be implemented in a computing device having a processor configured with processor-executable instructions to perform the operations of themethod 900. Inmethod 900, the processor may commence operation atblock 902 by abrowser assistance server 150 collecting data regarding browsing habits of a number of users. - In
block 904, theprocessor 131 of the browser assistance server creates metadata based on the collected data from a number of users. Metadata may include structured data about the browsing habits of a number of users. Metadata elements can be used to specify page description, keywords, and any other metadata not provided through head elements and attributes. The metadata element may emulate the use of the HTTP response header to embed additional metadata within the HTML document. Such metadata elements are placed as tags in the head section of an HTML or XHTML document. - In
block 906, theprocessor 131 outputs program instructions so metadata is pushed from thebrowser assistance server 150 to the computing device. In another aspect, the metadata may be pulled from the browser assistance server to the computing device. In another aspect, the metadata may be embedded in other data. In another aspect, data may be continuously provided in a feed. - A processor of the computer device that receives the metadata may use the metadata in
block 908. Inblock 910, the processor may use the metadata to render the webpage. Inblock 912, the processor may send data from the rendering webpage to thebrowser assistance server 150 to provide feedback. -
FIG. 10 illustrates anaspect method 1000 for a browser assistance server and a computer device that pulls metadata from the browser assistance server. The metadata may be based on a number of browsing habits of multiple users. For example, themethod 1000 similar toFIG. 9 may use “crowd sourcing” or information collected from a large amount of web users. For example, the browser assistance server can use crowd sourcing or monitor a large amount of requests and request responses and infer empirical relationships between the request and response. Thebrowser assistance server 150 can derive analytics from the request and response from a large number of web users. - For example, these may include JavaScript function probabilities based on a number of measurements made for hundreds of mobile devices. For example, the empirical data may include the JavaScript phrases that are executed, loaded, viewed, analyzed, parsed, etc.
Method 1000 may be implemented in a computing device having a processor configured with processor-executable instructions to perform the operations of the method. Inmethod 1000, the processor may commence operation atblock 1002 by abrowser assistance server 150 collecting browsing habit data for a number of users. - In
block 1004, the processor of thebrowser assistance server 150 may create metadata based on the collected data from a number of users. Metadata may be created and stored in an index, which can be periodically updated. Metadata may include HTML elements or XHTML elements, which are used to provide structured data about the browsing habits of a number of users. Metadata elements can be used to specify page description, keywords, and relationships through the other head elements and attributes. In another aspect, metadata elements may emulate the use of the HTTP response header or embed additional metadata in an HTML document. - In
block 1006, the processor of the computing device outputs program instructions so metadata is pulled from thebrowser assistance server 150 to the computing device. Pull technology includes network communication where an initial request for metadata originates from a client and is responded to by thebrowser assistance server 150. In another aspect, the metadata may be pushed from thebrowser assistance server 150 to the computing device without any request. In another aspect, the metadata may be embedded in other data, or may be provided in a feed. - The processor uses the metadata in
block 1008. For example, the metadata may indicate that a library element has a very small chance of execution, while a second library element has a 90 percent chance of execution. The processor can use the metadata to download the second element immediately, while not downloading the first library element until some time later. Inblock 1010, the processor may use the metadata to render the webpage. Inblock 1012, the processor sends data from the rendering webpage to thebrowser assistance server 150 to optionally provide feedback. In yet another aspect, the feedback information may be provided in a pushed feed to the browser of the computing device. -
FIG. 11 illustrates anaspect method 1100 for a browser assistance server that includes an analytical module that forms a schema to assist the mobile browser with processing, executing and analyzing web content with the schema based on observed relationships. The analytical module monitors measurements made from a number of computer devices. The module reviews requests and responses to the requests made by the computing devices and a web server. The analytical module generates empirical data and creates hints for a computer device that can improve operation of the computer device. - The data may comprise functional probabilities that certain webpage elements are parsed, executed, or analyzed. For example, the analytical module may determine JavaScript execution function probabilities based on measurements made from hundreds of mobile devices. The data may comprise: partition code hints; lexing information; script tokens; AST data for parsing; portions of HTML that can be processed in parallel or portions that can be processed serially; CSS webpage optimization data; cached data; or any other metadata that can conserve mobile resources. An analytic module may be associated with a
browser assistance server 150, or alternatively may be associated with thecomputing device 100, and may include an algorithm to speculate regarding portions of JavaScript code that may be executed and compiled. In another aspect, the analytic module may be an intermediate device that can deliver metadata to the computer device. The analytic module may be a software module that includes an algorithm that can monitor user habits and that can generate metadata hints based on the observed empirical data. -
Method 1100 may be implemented in a computing device having aprocessor 131 configured with processor-executable instructions to perform the operations of themethod 1100. Inmethod 1100, theprocessor 131 may commence operation atblock 1102 by abrowser assistance server 150 collecting data regarding browsing habits for a number of users. - In
block 1104, the processor of the browser assistance server may provide data to an analytic module to create metadata based on the collected data from a number of users. The analytical module may create the metadata and store the metadata a storage medium, such as in an index, which can be periodically updated based on new information from browsing habits. - In
block 1106, the metadata is generated so the metadata may anticipate the user's next browsing activity and may assist the browser by providing the information pertaining to the next browsing activity in advance. The webpage may comprise JavaScript with a high probability of execution based on empirical data observed from other users. The analytical module may detect that the browser's next step may be to process the JavaScript. The analytical module may output control instructions to pre-compile the JavaScript and form binary code (or other native code) and provide the binary code to the computing device. Inblock 1108, the processor outputs program instructions so the metadata is delivered from the analytical module to the computing device. -
Processor 131 of the computer device that receives the metadata uses the metadata inblock 1110. Inblock 1112, the processor renders the webpage. Inblock 1114, the processor may optionally send data from the rendering webpage to the browser assistance server to provide feedback. -
FIG. 12 illustrates anaspect method 1200 for abrowser assistance server 150 that includes a feature to provide targeted services on behalf of a mobile communication device. Thebrowser assistance server 150 allows the mobile communication devices to cache information on a storage medium (e.g., the browser assistance server memory) regarding predetermined websites. - For example, a website may be frequently accessed by a
mobile communication device 100, such as daily at 8:00 a.m. The data can be written to the mobile device memory. However since the storage medium of the mobile communication device is constrained, a predetermined time later the storage medium may be full, requiring the data to be erased in favor of new data. Thus, the next day, themobile communication device 100 at 8:00 a.m. will visit the predetermined site and will need to download some of the same web content elements again. - The
browser assistance server 150 may detect repeated browsing behavior by comparing patterns in daily web browsing activity including requests and responses to requests. When repeated behavior is detected, for example, by requesting the same webpage in a predetermined sequence, thebrowser assistance server 150 may provide targeted services to themobile communication device 100. Thebrowser assistance server 150 may permit thatmobile communication device 100 to write data to a storage medium (e.g., a cache memory). The cache memory may be associated with thebrowser assistance server 150, or may be a different storage medium. - For example, the browser may access the popular website at 8:00 a.m. and data is written to the mobile device memory. However, a predetermined time later since the memory of the mobile communication device is constrained, the memory can be full, and the data is designated to be erased in favor of new data associated with a later used website. Before erasing the data, the mobile communication device may upload the data associated with the website including web site elements to the cache located on the
BAS server 150. Alternatively thebrowser assistance server 150 may obtain the data directly from the website and store it in the cache without requiring the mobile communication device to upload the data. The next day, the mobile communication device before 8:00 a.m. or at 5:00 a.m. may download the data from the cache on theBAS server 150. At 8:00 a.m., in the event that the user visits the predetermined popular web site, numerous web content elements will already be located on the mobile device memory and the mobile communication device will need to update the website. In another aspect, the cache memory may be located in another location, for example, a wireless hard drive or dongle. For example, a user profile of popular websites may be stored on the mobile communication device or may be stored on the server. -
Method 1200 may be implemented in a computing device having a processor configured with processor-executable instructions to perform the operations of the method. Inmethod 1200, the processor may commence operation atblock 1202 by abrowser assistance server 150 collecting data from browsing habits for a number of users. - In
block 1204, the processor of thebrowser assistance server 150 may identify popular webpages used by the computing device. Inblock 1206, the browser assistance server may generate metadata so the metadata may anticipate the user's next browsing activity. Inblock 1208, the browser assistance server may send metadata to a mobile device to provide targeted services for the mobile device so the mobile device may use a cache memory of the browser assistance server. Processor of the mobile communication device that receives the metadata uses the metadata inblock 1210 and identifies popular webpages that are frequently accessed are transmitted to the cache of the browser assistance server for storage. - In
block 1212, the processor may render the webpage based on the user's habits and the mobile device processor may download the cache data to execute the request. The same webpage is not rendered and generally some webpage content may be reused but other webpage content likely may be updated. For example, a prior version of a newspaper website may have some web content elements in common with a new version, however, some new web content elements, text and images may be needed. In another aspect, thebrowser assistance server 150 may also provide additional pre-fetching services and may update the content at thebrowser assistance server 150 and merge the updated content with the cache data. In another aspect, thebrowser assistance server 150 may pre-compile the cache content and deliver a binary or native code to the browser so the browser can render the webpage. -
FIG. 13 illustrates anaspect method 1300 for a browser assistance server that creates metadata. The metadata may be based on JavaScript execution profiles. The profiles may be observed from a number of requests and responses from a number of mobile device users. The JavaScript execution profiles may create hints for a computer device that can improve operation of the computer device. The data may comprise functional probabilities that certain JavaScript execution profiles of web elements occur and the frequency of the occurrence. This provides empirical data to base a decision on whether to download and to execute certain JavaScript since if there is a remote chance that a phrase will be accessed, a better choice would be to access data with a high probability of execution. -
Method 1300 may be implemented in a computing device having aprocessor 131 configured with processor-executable instructions to perform the operations of themethod 1300. Inmethod 1300, theprocessor 131 may commence operation atblock 1302 by abrowser assistance server 150 collecting data of browsing habits for a “crowd” or a number of users. - In
block 1304, the processor of the browser assistance server may receive data regarding JavaScript execution profiles from a number of web users. For example, a first JavaScript element may have a first statistical likelihood of being executed while a second JavaScript element may have a second statistical likelihood of being executed that is less than the first by a factor of two based on the observed profile of multiple users. For example, a third JavaScript element may have a third statistical likelihood of being executed that is less than 5 percent while a fourth JavaScript element may have a fourth statistical likelihood of being executed that is less almost 95 percent based on the observed profile of multiple users. - In
block 1306, thebrowser assistance server 150 may examine the first through fourth statistical likelihoods. Thebrowser assistance server 150 may compare the data to a threshold value. Inblock 1308, thebrowser assistance server 150 may generate metadata. The metadata may assist the browser to anticipate the user's next browsing activity. The metadata may assist the browser by providing the information pertaining to the likely next activity in advance. - In
block 1310, the processor outputs program instructions so thebrowser assistance server 150 may send metadata to the computer device to assist the computer device and to anticipate the browser's next action. For example, the webpage may comprise the fourth JavaScript element with a high probability of execution based on empirical data observed from other users. The processor may detect that the browser's next step may be to download and process the fourth JavaScript element. The processor may confirm this decision while the third JavaScript element may not be transmitted and processed since it is likely the third JavaScript element will not be executed. -
FIG. 14 illustrates anaspect method 1400 for a browser assistance server that includes a feature to provide targeted services on behalf of a mobile communication device. Thebrowser assistance server 150 allows mobile communication devices to cache information on the browser assistance server cache memory regarding predetermined websites and may further specify to not evict the cached data on the mobile communication device or on theBAS server 150 based on the user's habits. In this manner, the data may be analyzed for further action. For example, if the web site is frequently accessed as compared to a threshold amount, thebrowser assistance server 150 may prevent the cache from being overwritten for a predetermined period of time. Thus, thebrowser assistance server 150 may include a number of different cached states located on thebrowser assistance server 150. - For example, a website may be frequently accessed by a mobile communication device at 8:00 a.m. and data is written to the mobile device memory. However, a predetermined time later since the memory of the mobile communication device is constrained, the memory can be full, and the data erased in favor of new data associated with a later used website. The next day, the mobile communication device at 8:00 a.m. will visit the predetermined site and need to download the web content elements again. The
browser assistance server 150 may detect this behavior and may provide targeted services to themobile communication device 100 and permit thatmobile communication device 100 to write data to a cache memory associated with thebrowser assistance server 150. - For example, the browser may access the popular website at 8:00 a.m. and data is written to the mobile device memory. However, a predetermined time later since the memory of the mobile communication device is constrained, the memory can be full, and the data is designated to be erased in favor of new data associated with a later used website. Before erasing the data, the
mobile communication device 100 will upload the data associated with the website including web site elements to the cache of theBAS server 150. The next day, the mobile communication device before 8:00 a.m. at 5:00 a.m. will download the data from the cache server. At 8:00 a.m., in the event that the user visits the predetermined popular web site, numerous web content elements will already be located on the mobile device memory and the mobile communication device will need to update the website. Further, if this user behavior repeats for a specified period of time, the data on the cache server will not be written over or erased. In this aspect, thebrowser assistance server 150 can review the cached data for further analysis of user habits. -
Method 1400 may be implemented in a computing device having a processor configured with processor-executable instructions to perform the operations of themethod 1400. Inmethod 1400, the processor may commence operation atblock 1402 by abrowser assistance server 150 collecting data from browsing habits for a number of users. - In
block 1404, the processor of the browser assistance server may collect information about a user profile and browsing habits of the user. Inblock 1406, thebrowser assistance server 150 may provide targeted services. Thebrowser assistance server 150 may permit the computer device to cache data based on the user's browsing habits. Inblock 1408, the computer device may use a cache memory of thebrowser assistance server 150 to write data to the cache of popular webpage elements. Inblock 1410, the popular webpages and webpage elements that are frequently accessed are transmitted to the cache of thebrowser assistance server 150 for storage and the BAS indicates that the cache data is not to be erased and is marked for further analysis. - In
block 1412, the processor of the computing device may send a request for the popular website to render the webpage based on the user's habits. Inblock 1414, themobile device processor 131 may read the cache data from the browser assistance server to execute the request. In another aspect, thebrowser assistance server 150 may also provide additional pre-fetching services and may update the content at the browser assistance server and merge the updated content with the cache data. In another aspect, thebrowser assistance server 150 may pre-compile the cache content and deliver a binary or native code to the browser so the browser can render the webpage. Inblock 1414, the browser assistance server may analyze the cache states for further optimization, and pre-fetching. In this aspect, metadata to provide hints for other user may be generated based in part on the analysis inblock 1414. -
FIG. 15 illustrates anaspect method 1500 for abrowser assistance server 150 that includes a feature to provide targeted services on behalf of amobile communication device 100. Thebrowser assistance server 150 allowsmobile communication devices 100 to cache information regarding predetermined websites or predetermined web elements. Thebrowser assistance server 150 may further augment cache data and supplement the cache with other data to provide hints to themobile communication device 100. - For example, a first website may be frequently accessed by a mobile communication device at 8:00 a.m. and data may be written to the mobile device memory. However, a predetermined time later, since the memory of the mobile communication device may be constrained, the memory may be full. The data may be erased in favor of new data associated with a later used second website. The next day, the user may instruct the browser on the mobile communication device at 8:00 a.m. and may visit the first website and may need to download the web content elements again.
- The browser assistance server 150 (or the mobile communication device 100) may detect inefficient behavior and may provide targeted services to the
mobile communication device 100. Thebrowser assistance server 150 may permit thatmobile communication device 100 to write data to a storage medium or cache memory associated with thebrowser assistance server 150. Additionally, thebrowser assistance server 150 may augment and supplement the cached data with other learned information or hints. For example, the browser assistance server may provide metadata hints and embed the metadata hints within the cached data. For example, thebrowser assistance server 150 may pre-compile the cache data and provide the cached data in a binary format (or native format) for themobile communication device 100. - For example, the browser may access the popular website at 8:00 a.m. and data may be written to the mobile device memory. However, a predetermined time later since the memory of the mobile communication device is constrained, the memory can be full, and the data is designated to be erased in favor of new data associated with a later used website. Before erasing the data, the
mobile communication device 100 will upload the data associated with the website including web site elements to the cache of theBAS server 150. Thebrowser assistance server 150 may also optimize the cache data and embed metadata into the cached data. Thebrowser assistance server 150 may provide metadata hints within the cache data for the benefit of themobile communication device 100. - The next day, the
mobile communication device 100 before 8:00 a.m. will download the data from the cache server with the augmented learned data. At 8:00 a.m., in the event that the user visits the predetermined popular web site, numerous web content elements will already be located on the mobile device memory and themobile communication device 100 may render the page after updating. Further, themobile communication device 100 may visit a second new website and use the embedded metadata within the downloaded content to parse, execute or analyze new web content. -
Method 1500 may be implemented in a computing device having aprocessor 131 configured with processor-executable instructions to perform the operations of themethod 1500. Inmethod 1500, theprocessor 131 may commence operation atblock 1502 where amobile communication device 100 transmits a request for a webpage. - In
block 1504, the processor of the mobile communication device may collect information about a user profile and send the user profile to thebrowser assistance server 150. Inblock 1506, thebrowser assistance server 150 may provide targeted services and may permit the computer device to cache data to a storage medium based on the user's browsing habits. Inblock 1508, thebrowser assistance server 150 may augment the cache data with metadata that includes learned information to assist the mobile communication device. Inblock 1510, the processor of the computing device may send a request for the popular website to render the webpage based on the user's habits. Inblock 1512, the mobile device processor may download the cache data from thebrowser assistance server 150 to execute the request and also may optionally download the metadata to assist the browser with current or future browser hints. The same webpage may not be rendered and generally some webpage content may be reused but other webpage content likely may be updated. Thebrowser assistance server 150 may also provide cache data that has undergone optimization. -
FIG. 16 shows a high level diagram of abrowser assistance server 150 reloading a cache state based on a user's personal profile. For example, onday 1 at 8:00 a.m. a user using amobile communication device 100 may download a frequently accessed webpage includingcache state A 1602. The user may review the web site for a predetermined period of time and may engage several other hyperlinks and deviate from the webpage. Atday 1, 3:00 p.m., the user may review a different website having different web content and may generatecache state B 1604. Normally, thecache A 1602 would be deleted. However, themobile communication device 100 and thebrowser assistance server 150 are connected via the Internet and themobile device 100 may use theserver 150 as a cache memory. Thebrowser assistance server 150 can provide targeted services for themobile communication device 100. Thebrowser assistance server 150 may detect that the website (that generated cache state A 1602) is frequently accessed. The website is accessed by the user almost daily at the same time interval of 8:00 a.m. - The
browser assistance server 150 will storecache state A 1602 on theserver 150 as shown byreference arrow 1610. Themobile communication device 100 can send a request for a different webpage anddownload data 1604. Thebrowser assistance server 150 may augment thecache data A 1606. Thebrowser assistant server 150 can embed metadata or add data that reflects learned information from the user's browsing habits.Server 150 may embed data from other users to provide hints to the mobilecommunication device browser 100. On the second day,day 2 at 5:00 a.m., thebrowser assistance server 150 may push thecache data A 1608 as shown fromarrow 1612 from theserver 150 to the mobile communication device 100 (along with any updated data contained and saved within the cache data A 1608). For example, onday 2 at 8:00 a.m., a user using amobile communication device 100 may send a request to download a frequently accessed webpage and may include many web elements contained withincache data A 1608 and may update the web site. Thebrowser assistance server 150 may serve as an L2 cache for thedevice 100 and can maintain a set of cache states. -
FIG. 17 illustrates anaspect method 1700 for a browser assistance server that may provide metadata to efficiently parse and execute JavaScript.Method 1700 may be implemented in a computing device having a processor configured with processor-executable instructions to perform the operations of themethod 1700. Inmethod 1700, the processor may commence operation atblock 1702 where a mobile communication device transmits a request for a webpage. - In
block 1704, the processor of thebrowser assistance server 150 may formulate hints for the mobile communication device to efficiently parse and to execute JavaScript. For example, the metadata may identify a statistically relevant portion of the script. Inblock 1706, the browser assistance server may deliver metadata to the mobile communication device that includes hints to efficiently parse and execute JavaScript. Inblock 1708, the processor may use the metadata to parse the JavaScript. Inblock 1710, the mobile device processor may use the hints to execute the JavaScript. Inblock 1712, the mobile device sends feedback to the browser assistance server. -
FIG. 18 shows a high level diagram of abrowser assistance server 150 detecting that a request for a webpage may include a webpage element that may result in the mobile device processor undergoing an undue amount of processing. The request may result in rendering a webpage in an inefficient manner. In this aspect, thebrowser assistance server 150 may detect certain webpage elements are present and may pre-compile the webpage elements into binary or a native format of themobile device 100. Thebrowser assistance server 150 may generate a binary file that corresponds to the webpage element. Thebrowser assistance server 150 may transmit the binary file to themobile communication device 100 for a faster load time. - For example, at 8:00 a.m. a user using a
mobile communication device 100 may seek to download a webpage by sending arequest 1802 to theInternet 114. The request may be received by a server (not shown) and the response request may potentially returndata 1804 that includes HTML, JavaScript, CSS, and objects. Themobile communication device 100 may also send arequest 1806 to abrowser assistant server 150. Therequest 1806 may determine whether thebrowser assistance server 150 can provide hints to more efficiently parse and execute HTML, JavaScript, CSS and objects. - In addition to the hints, the
browser assistance server 150 can also directly analyze and pre-compile JavaScript for a predetermined architecture. Thebrowser assistance server 150 may process the JavaScript and may generate a direct binary pre-compiled translation of the requestedJavaScript web elements 1810. The direct binary translation of the requestedJavaScript web elements 1810 can be transmitted to themobile communication device 100 as shown byarrow 1808 for immediate use by themobile communication device 100 browser. The precompiled binary 1810 allows themobile communication device 100 to avoid parsing, analyzing and just-in-time processing associated with the JavaScript execution path. Themobile device 100 may optionally provide feedback to thebrowser assistance server 150. In an alternative aspect, the browser assistance server may provide a virtualized module on themobile device 100 and deliver data to the virtualized module. -
FIG. 19 illustrates anaspect method 1900 for a browser assistance server that detects JavaScript elements and provides a direct binary translation of the requested JavaScript web elements to form the precompiled binary or native file. The direct binary translation is transmitted to themobile communication device 100 for immediate use by the mobile communication device browser.Method 1900 may be implemented in a computing device having aprocessor 131 configured with processor-executable instructions to perform the operations of themethod 1900. Inmethod 1900, theprocessor 131 may commence operation atblock 1902 where amobile communication device 100 transmits a request for a webpage. - In
block 1904, the processor of the mobile communication device may send a request to abrowser assistance server 150 to efficiently parse and to execute JavaScript. Inblock 1906, thebrowser assistance server 150 may analyze the request and pre-compile the webpage JavaScript for themobile communication device 100. Inblock 1908, thebrowser assistance server 150 may form at least one pre-compiled binary file and may transmit the pre-complied binary file to themobile device processor 131. The direct binary translation may be transmitted to themobile communication device 100 for immediate use by the mobile communication device browser. Alternatively, the translation may be in another native language associated with the mobile communication device browser. The native language allows the mobile communication device to avoid parsing, analyzing and just-in-time processing of a JavaScript execution path. Inblock 1910, themobile device processor 131 may use the pre-complied data to render the webpage. Inblock 1912, the mobile device may optionally send feedback to the browser assistance server. -
FIG. 20 illustrates anaspect method 2000 for a browser assistance server that detects a library is requested. The library can be a YUI library or a jQuery library or any library known in the art. YUI is a library of JavaScript utilities and controls for building richly interactive web applications using techniques such as DOM Scripting, DHTML, and Ajax. jQuery is a fast and concise JavaScript library that simplifies HTML document traversing, event handling, animating and Ajax interactions for rapid web development and which is CSS3 compliant. - The
browser assistance server 150 may provide metadata that a first library portion is more frequently executed while a second library portion is less frequently executed. In this manner, theprocessor 131 may download a first library portion that may a higher statistical chance of use relative to a second library portion that likely may not be executed. In other aspect, if the assumptions are incorrect, the browser may send the fill library as soon as practicable.Method 2000 may be implemented in a computing device having aprocessor 131 configured with processor-executable instructions to perform the operations of themethod 2000. Inmethod 2000, the processor may commence operation atblock 2002 where a mobile communication device may transmit a request for a webpage, which is received by a server. - In
block 2004, the processor of the mobile communication device may send a request to a browser assistance server to obtain hints for the mobile communication device and to process the request. The browser assistance server may analyze the request and inblock 2006, the processor may provide data regarding a most frequently used or most frequently executed portion of a library to the mobile communication device. The browser assistance server may also optionally provide information about the least frequently used or the least frequently executed library portions. Inblock 2008, the mobile device processor may download the most frequently used (or the most frequently executed library portion) first and may download other portions later in time. Inblock 2010, the mobile device processor may execute the portion and may download a second portion of the library at a time later, if at all. Inblock 2012, the mobile device may optionally transmit feedback to the browser assistance server. -
FIG. 21 illustrates anaspect method 2100 for abrowser assistance server 150 that may detect and may provide hints of a most viewed portion of a webpage based on empirical data. Thebrowser assistance server 150 provides metadata to amobile device processor 131 so the mobile communication device can process the webpage in a more efficient manner.Method 2100 may be implemented in a computing device having aprocessor 131 configured with processor-executable instructions to perform the operations of themethod 2100. Inmethod 2100, the processor may commence operation atblock 2102 where a mobile communication device transmits a request for a webpage, which is received by a server. - In
block 2104, theprocessor 131 of themobile communication device 100 may send a request to abrowser assistance server 150 to obtain hints for themobile communication device 100 and to process the request. The hints are contained in metadata sent from theserver 150 to themobile communication device 100. Thebrowser assistance server 150 may analyze the request. Inblock 2106, theprocessor 131 may provide data regarding a most frequently viewed webpage portion for a website to themobile communication device 100. - The
browser assistance server 150 may derive this information from empirical or statistics observed from a number of users. Thebrowser assistance server 150 may also optionally provide information about the least viewed portion of the website. Inblock 2108, themobile device processor 131 may download the most frequently viewed website portion first and may download other portions later in time inblock 2110. Inblock 2110, themobile device processor 131 may execute the portion and download a second portion later. Inblock 2112, themobile device 100 may send feedback to thebrowser assistance server 150. -
FIG. 22 is a system block diagram of a receiver device suitable for use with any of the aspects. Atypical receiver device 2230 may include aprocessor 2231 coupled tointernal memory 2232, adisplay 2233, and to aspeaker 2254. Additionally, the receiver device may include anantenna 2234 for sending and receiving electromagnetic radiation that may be connected to a wireless data link and/orcellular telephone transceiver 2235 coupled to theprocessor 2231 and a mobilemultimedia broadcast receiver 2236 coupled to theprocessor 2231.Receiver devices 2230 typically also include menu selection buttons orrocker switches 2238 for receiving user inputs. - The various aspects may be implemented on any of a variety of commercially available server devices, such as the
server 2300 illustrated inFIG. 23 . Such aserver 2300 typically includes a processor 2301 coupled to volatile memory 2302 and a large capacity nonvolatile memory, such as adisk drive 2303. Theserver 2300 may also include a floppy disc drive, compact disc (CD) or DVD disc drive 2306 coupled to the processor 2301. Theserver 2300 may also includenetwork access ports 2304 coupled to the processor 2301 for establishing network interface connections with anetwork 2305, such as a local area network coupled to other broadcast system computers and servers. - The
processors 2231, 2301 may be any programmable microprocessor, microcomputer or multiple processor chip or chips that can be configured by software instructions (applications) to perform a variety of functions, including the functions of the various aspects described above. In some devices,multiple processors 2231, 2301 may be provided, such as one processor dedicated to wireless communication functions and one processor dedicated to running other applications. Typically, software applications may be stored in theinternal memory processor 2231, 2301. Theprocessor 2231, 2301 may include internal memory sufficient to store the application software instructions. In many devices the internal memory may be a volatile or nonvolatile memory, such as flash memory, or a mixture of both. For the purposes of this description, a general reference to memory refers to memory accessible by theprocessor 2231, 2301 including internal memory or removable memory plugged into the device and memory within theprocessor 2231, 2301 itself. -
FIG. 24 shows alaptop computer 2410. The aspects described above may also be implemented within a variety of personal computing devices, such as alaptop computer 2410 as illustrated inFIG. 24 . Many laptop computers include a touchpad touch surface 2417 that serves as the computer's pointing device, and thus may receive drag, scroll, and flick gestures similar to those implemented on mobile computing devices equipped with a touch screen display and described above. Alaptop computer 2410 will typically include aprocessor 2411 coupled tovolatile memory 2412 and a large capacity nonvolatile memory, such as adisk drive 2413 of Flash memory. Thecomputer 2410 may also include afloppy disc drive 2414 and a compact disc (CD) drive 2415 coupled to theprocessor 2411. Thecomputer device 2410 may also include a number of connector ports coupled to theprocessor 2411 for establishing data connections or receiving external memory devices, such as a USB or FireWire® connector sockets, or other network connection circuits for coupling theprocessor 2411 to a network. In a notebook configuration, the computer housing includes thetouchpad 2417, thekeyboard 2418, and thedisplay 2419 all coupled to theprocessor 2411. Other configurations of computing device may include a computer mouse or trackball coupled to the processor (e.g., via a USB input) as are well known, which may also be use in conjunction with the various aspects. - The foregoing method descriptions and the process flow diagrams are provided merely as illustrative examples and are not intended to require or imply that the steps of the various aspects must be performed in the order presented. As will be appreciated by one of skill in the art the order of steps in the foregoing aspects may be performed in any order. Words such as “thereafter,” “then,” “next,” etc. are not intended to limit the order of the steps; these words are simply used to guide the reader through the description of the methods. Further, any reference to claim elements in the singular, for example, using the articles “a,” “an” or “the” is not to be construed as limiting the element to the singular.
- The various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the aspects disclosed herein may be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present invention.
- The hardware used to implement the various illustrative logics, logical blocks, modules, and circuits described in connection with the aspects disclosed herein may be implemented or performed with a general purpose processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general-purpose processor may be a microprocessor, but, in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. Alternatively, some steps or methods may be performed by circuitry that is specific to a given function.
- In one or more exemplary aspects, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored as one or more instructions or code on a non-transitory computer-readable or processor-readable storage medium. The steps of a method or algorithm disclosed herein may be embodied in a processor-executable software module executed which may reside on a non-transitory computer-readable medium. Non-transitory computer-readable and processor media include any available storage media that may be accessed by a computer or processor. By way of example, and not limitation, such non-transitory computer-readable media may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that may be used to carry or store desired program code in the form of instructions or data structures and that may be accessed by a computer. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk, and blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of non-transitory computer-readable media. Additionally, the operations of a method or algorithm may reside as one or any combination or set of codes and/or instructions on a non-transitory machine readable medium and/or non-transitory computer-readable medium, which may be incorporated into a computer program product.
- The preceding description of the disclosed aspects is provided to enable any person skilled in the art to make or use the present invention. Various modifications to these aspects will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other aspects without departing from the spirit or scope of the invention. Thus, the present invention is not intended to be limited to the aspects shown herein but is to be accorded the widest scope consistent with the following claims and the principles and novel features disclosed herein.
Claims (30)
1. A method for rendering a webpage on a computing device, comprising:
transmitting a request for the webpage from the computing device to a server;
receiving metadata from the server in the computing device to assist the computing device in parsing, analyzing, or executing the request for the webpage; and
executing code of the requested webpage on the computing device to render the requested webpage,
wherein the metadata received at the computing device comprises binary code from data processed at the server to assist the computing device.
2. The method of claim 1 , wherein the metadata received in the computing device further comprises metadata selected from the group consisting of:
JavaScript function execution probabilities;
Abstract Syntax Tree (AST) data for parsing data;
script token data;
lexing information;
Cascading Style Sheet (CSS) metadata to assist in processing CSS webpage data at the computing device;
JavaScript metadata to assist in processing JavaScript webpage data at the computing device;
Hypertext Markup Language (HTML) metadata to assist in processing HTML webpage data at the computing device; and
combinations thereof.
3. The method of claim 1 , wherein the metadata received in the computing device comprises translated binary code resulting from JavaScript code executed on the server to maximize processing at the server and minimize processing at the computing device.
4. The method of claim 1 , wherein the metadata received at the computing device provides hints for a web browser to parse, analyze or execute the request when the requested webpage comprises JavaScript, the method further comprising:
receiving a binary pre-compiled translation of the JavaScript upon a determination that processing the JavaScript in the computing device is inefficient.
5. The method of claim 1 , wherein transmitting a request for a webpage from the computing device to a server comprises transmitting a request for a webpage that includes JavaScript portions, the method further comprising:
processing the JavaScript portions using the server to result in native code; and
receiving the native code in the computing device.
6. A computing device, comprising:
a display;
an internal memory; and
a processor coupled to the display and the internal memory, wherein the processor is configured with processor-executable instructions to perform operations comprising:
transmitting a request for a webpage to a server;
receiving metadata from the server to assist the computing device in parsing, analyzing, or executing the request for the webpage; and
executing code of the requested webpage on the computing device to render the requested webpage,
wherein the metadata received at the computing device comprises binary code from data processed at the server to assist the computing device.
7. The computing device of claim 6 , wherein the processor is configured with processor-executable instructions to perform operations such that receiving metadata comprises receiving metadata selected from the group consisting of:
JavaScript function execution probabilities;
Abstract Syntax Tree (AST) data for parsing data;
script token data;
lexing information;
Cascading Style Sheet (CSS) metadata to assist in processing CSS webpage data at the computing device;
JavaScript metadata to assist in processing JavaScript webpage data at the computing device;
HTML metadata to assist in processing HTML webpage data at the computing device; and combinations thereof.
8. The computing device of claim 6 , wherein the processor is configured with processor-executable instructions to perform operations further comprising:
receiving metadata that comprises translated binary code resulting from JavaScript code executed on the server to maximize processing at the server and minimize processing at the computing device.
9. A non-transitory computer-readable storage medium having stored thereon processor-executable instructions configured to cause a processor of a computing device to perform operations comprising:
transmitting a request for a webpage to a server;
receiving metadata from the server to assist the computing device in parsing, analyzing, or executing the request for the webpage; and
executing code of the requested webpage on the computing device to render the requested webpage,
wherein the metadata received at the computing device comprises binary code from data processed at the server to assist the computing device.
10. The non-transitory computer-readable storage medium of claim 9 , wherein the stored processor-executable instructions are configured to cause the processor of the computing device to perform operations such that receiving metadata comprises receiving metadata selected from the group consisting of:
JavaScript function execution probabilities;
Abstract Syntax Tree (AST) data for parsing data;
script token data;
lexing information;
Cascading Style Sheet (CSS) metadata to assist in processing CSS webpage data at the computing device;
JavaScript metadata to assist in processing JavaScript webpage data at the computing device;
HTML metadata to assist in processing HTML webpage data at the computing device; and
combinations thereof.
11. The non-transitory computer-readable storage medium of claim 9 , wherein the stored processor-executable instructions are configured to cause the processor of the computing device to perform operations further comprising:
receiving metadata that comprises translated binary code resulting from JavaScript code executed on the server to maximize processing at the server and minimize processing at the computing device.
12. A computing device, comprising:
means for transmitting a request for a webpage to a server;
means for receiving metadata from the server to assist the computing device in parsing, analyzing, or executing the request for the webpage; and
means for executing code of the requested webpage on the computing device to render the requested webpage,
wherein the metadata received at the computing device comprises binary code from data processed at the server to assist the computing device.
13. The computing device of claim 12 , wherein the means for receiving metadata comprises means for receiving metadata selected from the group consisting of:
JavaScript function execution probabilities;
Abstract Syntax Tree (AST) data for parsing data;
script token data;
lexing information;
Cascading Style Sheet (CSS) metadata to assist in processing CSS webpage data at the computing device;
JavaScript metadata to assist in processing JavaScript webpage data at the computing device;
HTML metadata to assist in processing HTML webpage data at the computing device; and
combinations thereof.
14. The computing device of claim 12 , wherein the means for receiving metadata comprises means for receiving translated binary code resulting from JavaScript code executed on the server to maximize processing at the server and minimize processing at the computing device.
15. A server, comprising:
a processor;
a network interface coupled to the processor and configured to enable the processor to communicate with a cellular communication network; and
a memory coupled to the processor,
wherein the processor is configured with processor-executable instructions to perform operations comprising:
receiving a request for a webpage from a computing device;
transmitting to the computing device the requested webpage along with metadata configured to assist the computing device in parsing, analyzing, or executing the requested webpage on the computing device for rendering the requested webpage on the computing device,
wherein the metadata transmitted to the computing device comprises binary code from data processed at the server to assist the computing device.
16. The server of claim 15 , wherein the processor is configured with processor-executable instructions to perform operations further comprising:
transmitting a binary pre-compiled translation of JavaScript within the requested webpage to the computing device.
17. The server of claim 15 , wherein the processor is configured with processor-executable instructions to perform operations further comprising:
gathering aggregate information on browsing habits of users of a plurality of computing devices;
generating the metadata based on aggregate information on browsing habits of users of the plurality of computing devices;
determining from the aggregate information on browsing habits of users of the plurality of computing devices when users are likely to view a first portion of a webpage before other portions; and
transmitting to the computing device the first portion of the webpage before other portions of the webpage.
18. A non-transitory computer-readable storage medium having stored thereon processor-executable instructions configured to cause a server processor to perform operations comprising, comprising:
receiving a request for a webpage from a computing device; and
transmitting to the computing device the requested webpage along with metadata configured to assist the computing device in parsing, analyzing, or executing the requested webpage on the computing device for rendering the requested webpage on the computing device,
wherein the metadata received at the computing device comprises returned binary code from data processed at a server to assist the computing device.
19. The non-transitory computer-readable storage medium of claim 18 , wherein the stored processor-executable instructions are configured to cause the server processor to perform operations further comprising:
transmitting a binary pre-compiled translation of JavaScript within the requested webpage to the computing device.
20. The non-transitory computer-readable storage medium of claim 18 , wherein the stored processor-executable instructions are configured to cause the server processor to perform operations further comprising:
gathering aggregate information on browsing habits of users of a plurality of computing devices;
generating the metadata based on aggregate information on browsing habits of users of the plurality of computing devices;
determining from the aggregate information on browsing habits of users of the plurality of computing devices when users are likely to view a first portion of a webpage before other portions; and
transmitting to the computing device the first portion of the webpage before other portions of the webpage.
21. A server, comprising:
means for receiving a request for a webpage from a computing device; and
means for transmitting to the computing device the requested webpage along with metadata configured to assist the computing device in parsing, analyzing, or executing the requested webpage on the computing device for rendering the requested webpage on the computing device,
wherein the metadata transmitted to the computing device comprises returned binary code from data processed at the server to assist the computing device.
22. The server of claim 21 , further comprising:
means for transmitting a binary pre-compiled translation of JavaScript within the requested webpage to the computing device.
23. The server of claim 21 , further comprising:
means for gathering aggregate information on browsing habits of users of a plurality of computing devices;
means for generating the metadata based on aggregate information on browsing habits of users of the plurality of computing devices;
means for determining from the aggregate information on browsing habits of users of the plurality of computing devices when users are likely to view a first portion of a webpage before other portions; and
means for transmitting to the computing device the first portion of the webpage before other portions of the webpage.
24. A system, comprising:
a server;
a cellular communications network; and
a computing device connected to the server through the cellular communications network,
wherein the computing device comprises:
a display;
an internal memory; and
a processor coupled to the display and the internal memory, wherein the processor of the computing device is configured with processor-executable instructions to perform operations comprising:
transmitting to the server a request for a webpage; and
executing code of the requested webpage to render the requested webpage
wherein the server is configured to perform operations comprising:
transmitting to the computing device metadata configured to assist the computing device in parsing, analyzing, or executing the requested webpage,
wherein the metadata transmitted to the computing device comprises binary code from data processed at the server to assist the computing device.
25. The system claim 24 , wherein the server is configured to perform operations further comprising:
processing a JavaScript portion of the requested webpage to generate native code; and
returning the generated native code to the computing device in response to the request for the webpage.
26. A system, comprising:
a server;
a cellular communications network; and
a computing device connected to the server through the cellular communications network,
wherein the computing device comprises:
means for transmitting a request for a webpage to the server; and
means for executing code of the requested webpage to render the requested webpage;
wherein the server comprises:
means for transmitting metadata to the computing device configured to assist the computing device in parsing, analyzing, or executing the requested webpage,
wherein the metadata transmitted to the computing device comprises returned binary code from data processed at the server to assist the computing device.
27. The system claim 26 , wherein the server further comprises:
means for processing a JavaScript portion of the requested webpage to generate native code; and
means for returning the generated native code to the computing device in response to the request for the webpage.
28. A method for assisting the rendering of a webpage on a computing device, comprising:
receiving a first request for the webpage from the computing device;
receiving a second request for metadata regarding the requested webpage to a browser assistant from the computing device; and
transmitting to the computing device the requested webpage along with the metadata configured to assist the computing device in parsing, analyzing, or executing the requested webpage on the computing device for rendering the requested webpage on the computing device,
wherein the metadata transmitted to the computing device comprises returned binary code from data processed at a server to assist the computing device.
29. The method of claim 28 , further comprising:
transmitting a binary pre-compiled translation of JavaScript within the requested webpage to the computing device.
30. The method of claim 28 , further comprising:
gathering aggregate information on browsing habits of users of a plurality of computing devices;
generating the metadata based on aggregate information on browsing habits of users of the plurality of computing devices;
determining from the aggregate information on browsing habits of users of the plurality of computing devices when users are likely to view a first portion of a webpage before other portions; and
transmitting to the computing device the first portion of the webpage before other portions of the webpage.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/865,474 US20140149850A1 (en) | 2011-07-27 | 2013-04-18 | Web Browsing Enhanced by Cloud Computing |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/192,064 US9146909B2 (en) | 2011-07-27 | 2011-07-27 | Web browsing enhanced by cloud computing |
US13/865,474 US20140149850A1 (en) | 2011-07-27 | 2013-04-18 | Web Browsing Enhanced by Cloud Computing |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/192,064 Continuation US9146909B2 (en) | 2011-07-27 | 2011-07-27 | Web browsing enhanced by cloud computing |
Publications (1)
Publication Number | Publication Date |
---|---|
US20140149850A1 true US20140149850A1 (en) | 2014-05-29 |
Family
ID=46506622
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/192,064 Expired - Fee Related US9146909B2 (en) | 2011-07-27 | 2011-07-27 | Web browsing enhanced by cloud computing |
US13/865,474 Abandoned US20140149850A1 (en) | 2011-07-27 | 2013-04-18 | Web Browsing Enhanced by Cloud Computing |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/192,064 Expired - Fee Related US9146909B2 (en) | 2011-07-27 | 2011-07-27 | Web browsing enhanced by cloud computing |
Country Status (9)
Country | Link |
---|---|
US (2) | US9146909B2 (en) |
EP (1) | EP2737414A1 (en) |
JP (1) | JP5869124B2 (en) |
KR (1) | KR101609483B1 (en) |
CN (1) | CN103718177B (en) |
BR (1) | BR112014001889A2 (en) |
CA (1) | CA2842737C (en) |
RU (1) | RU2577193C2 (en) |
WO (1) | WO2013015911A1 (en) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9146909B2 (en) | 2011-07-27 | 2015-09-29 | Qualcomm Incorporated | Web browsing enhanced by cloud computing |
US9239862B2 (en) | 2012-05-01 | 2016-01-19 | Qualcomm Incorporated | Web acceleration based on hints derived from crowd sourcing |
WO2016112354A3 (en) * | 2015-01-08 | 2016-09-29 | Instart Logic, Inc. | Html streaming |
US9813480B2 (en) | 2015-01-08 | 2017-11-07 | Instart Logic, Inc. | Placeholders for dynamic components in HTML streaming |
US20170359404A1 (en) * | 2016-06-10 | 2017-12-14 | Apple Inc. | Download prioritization |
US10042948B2 (en) | 2013-03-15 | 2018-08-07 | Instart Logic, Inc. | Identifying correlated components of dynamic content |
US10091289B2 (en) | 2013-03-15 | 2018-10-02 | Instart Logic, Inc. | Provisional execution of dynamic content component |
US10171550B1 (en) | 2010-04-18 | 2019-01-01 | Viasat, Inc. | Static tracker |
US10372780B1 (en) * | 2011-04-11 | 2019-08-06 | Viasat, Inc. | Browser based feedback for optimized web browsing |
US10855797B2 (en) | 2014-06-03 | 2020-12-01 | Viasat, Inc. | Server-machine-driven hint generation for improved web page loading using client-machine-driven feedback |
US11200292B2 (en) | 2015-10-20 | 2021-12-14 | Viasat, Inc. | Hint model updating using automated browsing clusters |
US11308179B2 (en) * | 2020-05-14 | 2022-04-19 | Sap Se | Core data service-based compile time webpage generation |
US11443099B2 (en) * | 2015-10-28 | 2022-09-13 | Viasat, Inc. | Time-dependent machine-generated hinting |
Families Citing this family (68)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9471704B2 (en) * | 2009-10-06 | 2016-10-18 | Telefonaktiebolaget Lm Ericsson (Publ) | Shared script files in multi-tab browser |
WO2012061841A1 (en) * | 2010-11-05 | 2012-05-10 | The Trustees Of Columbia University In The City Of New York | Methods, systems, and media for stored content distribution and access |
KR20130044571A (en) * | 2011-10-24 | 2013-05-03 | 삼성전자주식회사 | Method and apparatus for providing cloud service |
US20130185626A1 (en) * | 2012-01-13 | 2013-07-18 | Obigo Inc. | METHOD, TERMINAL AND COMPUTER-READABLE RECORDING MEDIUM FOR COMPILING JAVASCRIPT INCLUDED IN WEB APPLICATION USING Ahead-Of-Time (AOT) |
KR102039028B1 (en) | 2012-02-24 | 2019-10-31 | 삼성전자 주식회사 | Apparatus and method for sharing a data of mobile terminal |
US9460220B1 (en) * | 2012-03-26 | 2016-10-04 | Amazon Technologies, Inc. | Content selection based on target device characteristics |
CN102882679A (en) * | 2012-07-24 | 2013-01-16 | 中兴通讯股份有限公司 | Unlocking method and unlocking device for electronic equipment |
FR2997522B1 (en) * | 2012-10-26 | 2015-12-25 | Infovista Sa | METHOD FOR A NETWORK MONITORING SYSTEM TO EVALUATE NON-INTRUSIVE USER RESUME AT THE LOAD OF A WEB PAGE |
US9300760B2 (en) * | 2013-01-28 | 2016-03-29 | Google Inc. | Machine-specific instruction set translation |
JP5395967B1 (en) * | 2013-02-19 | 2014-01-22 | 株式会社 ディー・エヌ・エー | Data processing system, information terminal, data processing method, and data processing program |
US10803232B2 (en) * | 2013-06-06 | 2020-10-13 | International Business Machines Corporation | Optimizing loading of web page based on aggregated user preferences for web page elements of web page |
US9424074B1 (en) * | 2013-07-01 | 2016-08-23 | Google Inc. | Method for learning backup policies for large-scale distributed computing |
US9798827B2 (en) * | 2013-10-25 | 2017-10-24 | Uc Mobile Co., Ltd. | Methods and devices for preloading webpages |
US9990440B2 (en) * | 2013-12-30 | 2018-06-05 | Oath Inc. | Smart content pre-loading on client devices |
KR20150084307A (en) * | 2014-01-13 | 2015-07-22 | 삼성전자주식회사 | Apparatus and method for controlling an web loading time in a network |
BR112016018374B1 (en) * | 2014-02-11 | 2022-08-16 | Wix.Com Ltd | SYSTEM FOR MODIFYING A WEBSITE OR INTERACTIVE APPLICATION, AND METHOD FOR MODIFYING A WEBSITE OR INTERACTIVE APPLICATION |
US9965449B2 (en) * | 2014-03-17 | 2018-05-08 | Ca, Inc. | Providing product with integrated wiki module |
KR102086731B1 (en) * | 2014-06-25 | 2020-04-14 | 에스케이플래닛 주식회사 | Method for providing of cloud streamming service, apparatus and system for the same, and computer readable storage medium storing script code for the same |
EP3195171B1 (en) * | 2014-07-31 | 2019-11-06 | Namogoo Technologies Ltd. | Detecting and removing injected elements from content interfaces |
US11099839B2 (en) | 2014-08-06 | 2021-08-24 | International Business Machines Corporation | Adaptation of a web application for use by a mobile device |
US11176223B1 (en) * | 2014-10-21 | 2021-11-16 | Amazon Technologies, Inc. | Page rendering by an intermediary system that uses a truncated library |
CN107077341B (en) | 2014-10-24 | 2020-07-14 | 谷歌有限责任公司 | Method and system for automatic tagging based on software execution tracking |
US9858191B2 (en) | 2014-12-31 | 2018-01-02 | Samsung Electronics Co., Ltd. | Electronic system with data management mechanism and method of operation thereof |
US9448776B1 (en) * | 2015-01-08 | 2016-09-20 | AppNotch LLC | Method and apparatus for converting a website into a native mobile application |
US10277703B2 (en) | 2015-07-22 | 2019-04-30 | International Business Machines Corporation | Optimizing bandwidth usage and improving performance for web page caching |
US10582001B2 (en) * | 2015-08-11 | 2020-03-03 | Oracle International Corporation | Asynchronous pre-caching of synchronously loaded resources |
US10419514B2 (en) | 2015-08-14 | 2019-09-17 | Oracle International Corporation | Discovery of federated logins |
US10091076B2 (en) * | 2015-08-25 | 2018-10-02 | Google Llc | Systems and methods for configuring a resource for network traffic analysis |
US10803083B2 (en) * | 2015-08-27 | 2020-10-13 | Infosys Limited | System and method of generating platform-agnostic abstract syntax tree |
RU2632131C2 (en) | 2015-08-28 | 2017-10-02 | Общество С Ограниченной Ответственностью "Яндекс" | Method and device for creating recommended list of content |
CA2998320C (en) * | 2015-09-14 | 2023-01-03 | Viasat, Inc. | Machine-driven crowd-disambiguation of data resources |
US10296580B1 (en) | 2015-09-18 | 2019-05-21 | Amazon Technologies, Inc. | Delivering parsed content items |
US10127210B1 (en) | 2015-09-25 | 2018-11-13 | Amazon Technologies, Inc. | Content rendering |
US10601894B1 (en) | 2015-09-28 | 2020-03-24 | Amazon Technologies, Inc. | Vector-based encoding for content rendering |
US10241983B1 (en) | 2015-09-28 | 2019-03-26 | Amazon Technologies, Inc. | Vector-based encoding for content rendering |
RU2632100C2 (en) | 2015-09-28 | 2017-10-02 | Общество С Ограниченной Ответственностью "Яндекс" | Method and server of recommended set of elements creation |
US10691750B1 (en) | 2015-09-28 | 2020-06-23 | Amazon Technologies, Inc. | Browser configured to efficiently store browsing session state |
RU2629638C2 (en) | 2015-09-28 | 2017-08-30 | Общество С Ограниченной Ответственностью "Яндекс" | Method and server of creating recommended set of elements for user |
US10440140B2 (en) * | 2015-09-29 | 2019-10-08 | Apple Inc. | Browser cache management |
US10613713B2 (en) * | 2015-10-07 | 2020-04-07 | Google Llc | Integration of content in non-browser applications |
US10582012B2 (en) | 2015-10-16 | 2020-03-03 | Oracle International Corporation | Adaptive data transfer optimization |
CA3006514C (en) | 2015-12-04 | 2021-06-15 | Viasat, Inc. | Accelerating connections to a host server |
US20170164290A1 (en) * | 2015-12-08 | 2017-06-08 | Qualcomm Incorporated | Reduced power consumption for browsing websites |
US10341345B1 (en) | 2015-12-15 | 2019-07-02 | Amazon Technologies, Inc. | Network browser configuration |
US10348797B1 (en) | 2015-12-15 | 2019-07-09 | Amazon Technologies, Inc. | Network browser configuration |
CN105740061B (en) * | 2016-01-29 | 2019-05-31 | 腾讯科技(深圳)有限公司 | A kind of method, user equipment and system that GPU resource is rebuild |
CN107229405A (en) * | 2016-03-25 | 2017-10-03 | 广州市动景计算机科技有限公司 | Method, equipment, browser and electronic equipment for providing web page contents |
RU2632144C1 (en) | 2016-05-12 | 2017-10-02 | Общество С Ограниченной Ответственностью "Яндекс" | Computer method for creating content recommendation interface |
US9961139B2 (en) * | 2016-05-24 | 2018-05-01 | International Business Machines Corporation | Cooperative download among low-end devices under resource constrained environment |
RU2632132C1 (en) | 2016-07-07 | 2017-10-02 | Общество С Ограниченной Ответственностью "Яндекс" | Method and device for creating contents recommendations in recommendations system |
RU2636702C1 (en) | 2016-07-07 | 2017-11-27 | Общество С Ограниченной Ответственностью "Яндекс" | Method and device for selecting network resource as source of content in recommendations system |
USD882600S1 (en) | 2017-01-13 | 2020-04-28 | Yandex Europe Ag | Display screen with graphical user interface |
US10567524B2 (en) * | 2017-02-27 | 2020-02-18 | International Business Machines Corporation | Dynamic cognitive optimization of web applications |
GB2563381A (en) * | 2017-06-06 | 2018-12-19 | Canon Kk | Method and apparatus for executing a scripting language |
EP3602319A1 (en) * | 2017-08-16 | 2020-02-05 | Google LLC | Dynamic content loading selection |
US10726095B1 (en) | 2017-09-26 | 2020-07-28 | Amazon Technologies, Inc. | Network content layout using an intermediary system |
US10664538B1 (en) | 2017-09-26 | 2020-05-26 | Amazon Technologies, Inc. | Data security and data access auditing for network accessible content |
US10558426B2 (en) * | 2017-12-08 | 2020-02-11 | Google Llc | Graphical user interface rendering management by voice-driven computing infrastructure |
US10904105B2 (en) * | 2019-04-30 | 2021-01-26 | Salesforce.Com, Inc. | Declarative and reactive data layer for component-based user interfaces |
RU2720952C2 (en) | 2018-09-14 | 2020-05-15 | Общество С Ограниченной Ответственностью "Яндекс" | Method and system for generating digital content recommendation |
RU2714594C1 (en) | 2018-09-14 | 2020-02-18 | Общество С Ограниченной Ответственностью "Яндекс" | Method and system for determining parameter relevance for content items |
RU2720899C2 (en) | 2018-09-14 | 2020-05-14 | Общество С Ограниченной Ответственностью "Яндекс" | Method and system for determining user-specific content proportions for recommendation |
RU2725659C2 (en) | 2018-10-08 | 2020-07-03 | Общество С Ограниченной Ответственностью "Яндекс" | Method and system for evaluating data on user-element interactions |
RU2731335C2 (en) | 2018-10-09 | 2020-09-01 | Общество С Ограниченной Ответственностью "Яндекс" | Method and system for generating recommendations of digital content |
US20210004481A1 (en) * | 2019-07-05 | 2021-01-07 | Google Llc | Systems and methods for privacy preserving determination of intersections of sets of user identifiers |
RU2757406C1 (en) | 2019-09-09 | 2021-10-15 | Общество С Ограниченной Ответственностью «Яндекс» | Method and system for providing a level of service when advertising content element |
WO2021095928A1 (en) * | 2019-11-14 | 2021-05-20 | 엘지전자 주식회사 | Display device and control method thereof |
JP2022041717A (en) * | 2020-09-01 | 2022-03-11 | キヤノン株式会社 | Information processing system and control method thereof |
Citations (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6182133B1 (en) * | 1998-02-06 | 2001-01-30 | Microsoft Corporation | Method and apparatus for display of information prefetching and cache status having variable visual indication based on a period of time since prefetching |
US6282548B1 (en) * | 1997-06-21 | 2001-08-28 | Alexa Internet | Automatically generate and displaying metadata as supplemental information concurrently with the web page, there being no link between web page and metadata |
US20020120940A1 (en) * | 2001-02-02 | 2002-08-29 | Open Tv | Method and apparatus compilation of an interpretative language for interactive television |
US20030110181A1 (en) * | 1999-01-26 | 2003-06-12 | Hinrich Schuetze | System and method for clustering data objects in a collection |
US20040088375A1 (en) * | 2002-11-01 | 2004-05-06 | Sethi Bhupinder S. | Method for prefetching Web pages to improve response time networking |
US20040205516A1 (en) * | 1999-12-23 | 2004-10-14 | Patrick Tufts | Use of web usage trail data to identify relationships between browsable items |
US20050149557A1 (en) * | 2002-04-12 | 2005-07-07 | Yoshimi Moriya | Meta data edition device, meta data reproduction device, meta data distribution device, meta data search device, meta data reproduction condition setting device, and meta data distribution method |
US20060248442A1 (en) * | 2005-04-29 | 2006-11-02 | Rosenstein Justin M | Web page authoring tool for structured documents |
US20070055964A1 (en) * | 2005-09-06 | 2007-03-08 | Morfik Technology Pty. Ltd. | System and method for synthesizing object-oriented high-level code into browser-side javascript |
US20070168935A1 (en) * | 2005-12-01 | 2007-07-19 | Ogami Kenneth Y | Multivariable transfer functions |
US20080222273A1 (en) * | 2007-03-07 | 2008-09-11 | Microsoft Corporation | Adaptive rendering of web pages on mobile devices using imaging technology |
US20080235566A1 (en) * | 2007-03-20 | 2008-09-25 | Apple Inc. | Presentation of media in an application |
US20080244080A1 (en) * | 2007-03-29 | 2008-10-02 | James Thomas H | Prefetching Based on Streaming Hints |
US20090144158A1 (en) * | 2007-12-03 | 2009-06-04 | Matzelle Brent R | System And Method For Enabling Viewing Of Documents Not In HTML Format |
US20090171790A1 (en) * | 2008-01-01 | 2009-07-02 | Transaxtions Llc | Time based targeted advertising |
US20090234861A1 (en) * | 2005-09-14 | 2009-09-17 | Jorey Ramer | Using mobile application data within a monetization platform |
US20090244385A1 (en) * | 2008-03-26 | 2009-10-01 | Kabushiki Kaisha Toshiba | Information display apparatus and information display method |
US20100083105A1 (en) * | 2004-07-29 | 2010-04-01 | Prashanth Channabasavaiah | Document modification by a client-side application |
US7735062B2 (en) * | 2005-01-21 | 2010-06-08 | Outsystems—Software Em Rede, S.A. | Software development system and method |
US20100211638A1 (en) * | 2007-07-27 | 2010-08-19 | Goojet | Method and device for creating computer applications |
US20100223322A1 (en) * | 2009-02-27 | 2010-09-02 | Sun Microsystems, Inc. | Server based framework for improving ajax performance |
US20100332993A1 (en) * | 2009-06-30 | 2010-12-30 | International Business Machines Corporation | Method and system for delivering digital content |
US20110154305A1 (en) * | 2009-07-31 | 2011-06-23 | Leroux Brian | System and method for remotely compiling multi-platform native applications for mobile devices |
US20110179176A1 (en) * | 2010-01-15 | 2011-07-21 | Endurance International Group, Inc. | Migrating a web hosting service between a one box per client architecture and a multiple box per client architecture |
US20110202821A1 (en) * | 2010-02-17 | 2011-08-18 | Yahoo! Inc. | Bidded marketplace for applications |
US20110282877A1 (en) * | 2005-07-15 | 2011-11-17 | Fetch Technologies, Inc. | Method and system for automatically extracting data from web sites |
US20110296375A1 (en) * | 2010-05-27 | 2011-12-01 | Salesforce.Com, Inc. | Adding directives for javascript files directly into source code in a multi-tenant database environment |
US8200617B2 (en) * | 2009-04-15 | 2012-06-12 | Evri, Inc. | Automatic mapping of a location identifier pattern of an object to a semantic type using object metadata |
US8250054B2 (en) * | 2008-05-13 | 2012-08-21 | Enpulz, L.L.C. | Network search engine utilizing client browser favorites |
US20130055063A1 (en) * | 2011-08-24 | 2013-02-28 | Qualcomm Innovation Center, Inc. | Controlled Parallel Compilation and Execution of JavaScripts |
US8527883B2 (en) * | 2008-12-18 | 2013-09-03 | International Business Machines Corporation | Browser operation with sets of favorites |
US8543907B1 (en) * | 2009-10-16 | 2013-09-24 | Google Inc. | Context-sensitive optimization level selection |
US8701023B1 (en) * | 2006-02-16 | 2014-04-15 | Cypress Semiconductor Corporation | Global parameter management graphical user interface (GUI) for embedded application design |
US20140143231A1 (en) * | 2012-11-16 | 2014-05-22 | Apollo Group, Inc. | Contextual help article provider |
US20140189541A1 (en) * | 2010-11-01 | 2014-07-03 | Google Inc. | Content sharing interface for sharing content in social networks |
US8806431B1 (en) * | 2007-12-03 | 2014-08-12 | Appecelerator, Inc. | Aspect oriented programming |
US8990151B2 (en) * | 2011-10-14 | 2015-03-24 | Box, Inc. | Automatic and semi-automatic tagging features of work items in a shared workspace for metadata tracking in a cloud-based content management system with selective or optional user contribution |
US20150193214A1 (en) * | 2011-04-13 | 2015-07-09 | Microsoft Technology Licensing, Llc | API Descriptions |
US9092538B2 (en) * | 2008-09-30 | 2015-07-28 | Disney Enterprises, Inc. | System and method for determining the data model used to create a web page |
US20160012047A1 (en) * | 2005-11-09 | 2016-01-14 | Ramp Holdings, Inc. | Method and Apparatus for Updating Speech Recognition Databases and Reindexing Audio and Video Content Using the Same |
US9307009B2 (en) * | 2012-02-15 | 2016-04-05 | Mobilespan Inc. | Presenting execution of a remote application in a mobile device native format |
US9325806B2 (en) * | 2012-02-24 | 2016-04-26 | Qualcomm Incorporated | Cooperative loading of webpages based on shared meta information |
US9341481B2 (en) * | 2011-11-30 | 2016-05-17 | Tata Consultancy Services Limited | Method and system for providing tourist assistance and guided navigation by metadata transmission |
US20160196448A1 (en) * | 2010-12-15 | 2016-07-07 | Facebook, Inc. | Comment plug-in for third party system |
Family Cites Families (95)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5887133A (en) * | 1997-01-15 | 1999-03-23 | Health Hero Network | System and method for modifying documents sent over a communications network |
US6182122B1 (en) | 1997-03-26 | 2001-01-30 | International Business Machines Corporation | Precaching data at an intermediate server based on historical data requests by users of the intermediate server |
US8418131B2 (en) * | 1998-11-25 | 2013-04-09 | Helmut Emmelmann | Interactive server side components |
JP3437933B2 (en) * | 1999-01-21 | 2003-08-18 | インターナショナル・ビジネス・マシーンズ・コーポレーション | Browser sharing method and system |
US6466970B1 (en) * | 1999-01-27 | 2002-10-15 | International Business Machines Corporation | System and method for collecting and analyzing information about content requested in a network (World Wide Web) environment |
US7353246B1 (en) * | 1999-07-30 | 2008-04-01 | Miva Direct, Inc. | System and method for enabling information associations |
US7421432B1 (en) * | 1999-12-15 | 2008-09-02 | Google Inc. | Hypertext browser assistant |
US20040220791A1 (en) * | 2000-01-03 | 2004-11-04 | Interactual Technologies, Inc. A California Corpor | Personalization services for entities from multiple sources |
US6665659B1 (en) * | 2000-02-01 | 2003-12-16 | James D. Logan | Methods and apparatus for distributing and using metadata via the internet |
US7747782B2 (en) * | 2000-04-26 | 2010-06-29 | Novarra, Inc. | System and method for providing and displaying information content |
US7146416B1 (en) * | 2000-09-01 | 2006-12-05 | Yahoo! Inc. | Web site activity monitoring system with tracking by categories and terms |
US20020078165A1 (en) * | 2000-12-14 | 2002-06-20 | International Business Machines Corporation | System and method for prefetching portions of a web page based on learned preferences |
US6874019B2 (en) | 2001-03-08 | 2005-03-29 | International Business Machines Corporation | Predictive caching and highlighting of web pages |
US20020161824A1 (en) * | 2001-04-27 | 2002-10-31 | International Business Machines Corporation | Method for presentation of HTML image-map elements in non visual web browsers |
JP2003036217A (en) * | 2001-07-24 | 2003-02-07 | Mitsubishi Denki Information Technology Corp | Java applet version control system |
US20040205460A1 (en) * | 2001-11-08 | 2004-10-14 | Ibm Corporation | Notepad for web browser |
US20030163444A1 (en) * | 2002-02-27 | 2003-08-28 | Michael Kotzin | Method to optimize information downloading |
US7321887B2 (en) * | 2002-09-30 | 2008-01-22 | Sap Aktiengesellschaft | Enriching information streams with contextual content |
US7096423B2 (en) * | 2002-05-31 | 2006-08-22 | Adobe Systems Incorporated | Layout-based page capture |
US20040002993A1 (en) * | 2002-06-26 | 2004-01-01 | Microsoft Corporation | User feedback processing of metadata associated with digital media files |
US7167863B2 (en) * | 2002-07-30 | 2007-01-23 | United Services Automobile Association (Usaa) | System and method for building a distributed internet application |
GB0314782D0 (en) * | 2003-06-25 | 2003-07-30 | Ibm | A searchable personal browsing history |
JP2005115684A (en) | 2003-10-08 | 2005-04-28 | Canon Inc | Content search device and content search method |
US7246134B1 (en) * | 2004-03-04 | 2007-07-17 | Sun Microsystems, Inc. | System and methods for tag library generation |
US20050208930A1 (en) * | 2004-03-05 | 2005-09-22 | Robert Zmrzli | Method and apparatus for arranging network content on mobile devices |
US8224964B1 (en) * | 2004-06-30 | 2012-07-17 | Google Inc. | System and method of accessing a document efficiently through multi-tier web caching |
US7840911B2 (en) | 2004-09-27 | 2010-11-23 | Scott Milener | Method and apparatus for enhanced browsing |
US8185514B1 (en) * | 2004-11-16 | 2012-05-22 | Topix Llc | User-interface feature and technique for providing users of a network site links that have been determined to be of interest to the user |
KR100636207B1 (en) | 2004-12-13 | 2006-10-19 | 삼성전자주식회사 | Document processing method and apparatus using embedded metadata |
US20060136391A1 (en) * | 2004-12-21 | 2006-06-22 | Morris Robert P | System and method for generating a search index and executing a context-sensitive search |
US8732234B2 (en) * | 2005-06-07 | 2014-05-20 | Yahoo! Inc. | Providing relevant non-requested content to a mobile device |
US8812473B1 (en) | 2005-06-16 | 2014-08-19 | Gere Dev. Applications, LLC | Analysis and reporting of collected search activity data over multiple search engines |
US20060293950A1 (en) * | 2005-06-28 | 2006-12-28 | Microsoft Corporation | Automatic ad placement |
CA2513018A1 (en) * | 2005-07-22 | 2007-01-22 | Research In Motion Limited | Method for training a proxy server for content delivery based on communication of state information from a mobile device browser |
US7925973B2 (en) * | 2005-08-12 | 2011-04-12 | Brightcove, Inc. | Distribution of content |
US7797740B2 (en) * | 2006-01-06 | 2010-09-14 | Nokia Corporation | System and method for managing captured content |
US7765199B2 (en) * | 2006-03-17 | 2010-07-27 | Proquest Llc | Method and system to index captioned objects in published literature for information discovery tasks |
US20070256003A1 (en) * | 2006-04-24 | 2007-11-01 | Seth Wagoner | Platform for the interactive contextual augmentation of the web |
US20070255754A1 (en) * | 2006-04-28 | 2007-11-01 | James Gheel | Recording, generation, storage and visual presentation of user activity metadata for web page documents |
US9443022B2 (en) * | 2006-06-05 | 2016-09-13 | Google Inc. | Method, system, and graphical user interface for providing personalized recommendations of popular search queries |
US20080010387A1 (en) * | 2006-07-07 | 2008-01-10 | Bryce Allen Curtis | Method for defining a Wiki page layout using a Wiki page |
US7954052B2 (en) * | 2006-07-07 | 2011-05-31 | International Business Machines Corporation | Method for processing a web page for display in a wiki environment |
US10789323B2 (en) | 2006-10-02 | 2020-09-29 | Adobe Inc. | System and method for active browsing |
US20080109749A1 (en) * | 2006-11-06 | 2008-05-08 | Nokia Corporation | Providing information while rendering content |
US20080133569A1 (en) * | 2006-12-01 | 2008-06-05 | Amp'd Mobile, Inc. | System and method for content handling and bundling for mobile handset device |
US9524355B2 (en) * | 2007-01-22 | 2016-12-20 | Mozy, Inc. | Methods for delivering task-related digital content based on task-oriented user activity |
US20080294974A1 (en) * | 2007-05-24 | 2008-11-27 | Nokia Corporation | Webpage history view |
GB2451435B (en) * | 2007-07-27 | 2012-06-20 | Hewlett Packard Development Co | A Method of enabling the downloading of content |
US8429750B2 (en) * | 2007-08-29 | 2013-04-23 | Enpulz, L.L.C. | Search engine with webpage rating feedback based Internet search operation |
US20090100322A1 (en) * | 2007-10-11 | 2009-04-16 | International Business Machines Corporation | Retrieving data relating to a web page prior to initiating viewing of the web page |
US9654328B2 (en) * | 2007-10-15 | 2017-05-16 | Viasat, Inc. | Methods and systems for implementing a cache model in a prefetching system |
KR101653268B1 (en) * | 2007-10-18 | 2016-09-01 | 삼성전자주식회사 | Processing method of tagged information and the client-server system for the same |
US8677141B2 (en) * | 2007-11-23 | 2014-03-18 | Microsoft Corporation | Enhanced security and performance of web applications |
US20090216639A1 (en) * | 2008-02-25 | 2009-08-27 | Mark Joseph Kapczynski | Advertising selection and display based on electronic profile information |
US8364664B2 (en) * | 2008-05-12 | 2013-01-29 | Enpulz, L.L.C. | Web browser accessible search engine that identifies search result maxima through user search flow and result content comparison |
US8229911B2 (en) * | 2008-05-13 | 2012-07-24 | Enpulz, Llc | Network search engine utilizing client browser activity information |
US8359237B2 (en) * | 2008-05-23 | 2013-01-22 | Ebay Inc. | System and method for context and community based customization for a user experience |
US8984395B2 (en) * | 2008-06-19 | 2015-03-17 | Opera Software Asa | Methods, systems and devices for transcoding and displaying electronic documents |
US9152722B2 (en) * | 2008-07-22 | 2015-10-06 | Yahoo! Inc. | Augmenting online content with additional content relevant to user interest |
FR2934388A1 (en) * | 2008-07-25 | 2010-01-29 | Proviciel Mlstate | METHOD FOR CREATING COMPUTER PROGRAM |
US20100180186A1 (en) * | 2008-09-16 | 2010-07-15 | James Skinner | System and Method for Storage and Distribution of Electronic Publications by Content Creators and Online Publishers with Referral-Based Commissions |
US8452793B2 (en) * | 2008-09-30 | 2013-05-28 | Yahoo! Inc. | Query refinement based on user selections |
US8386519B2 (en) * | 2008-12-30 | 2013-02-26 | Expanse Networks, Inc. | Pangenetic web item recommendation system |
US7962547B2 (en) * | 2009-01-08 | 2011-06-14 | International Business Machines Corporation | Method for server-side logging of client browser state through markup language |
US20100180192A1 (en) * | 2009-01-09 | 2010-07-15 | Cerner Innovation, Inc. | Dynamically configuring a presentation layer associated with a webpage delivered to a client device |
US8869290B2 (en) * | 2010-06-04 | 2014-10-21 | Broadcom Corporation | Method and system for secure content distribution by a broadband gateway |
US8533582B2 (en) * | 2009-03-20 | 2013-09-10 | Xerox Corporation | Trail-based data content discovery, organization, and processing |
US9436482B2 (en) * | 2009-03-25 | 2016-09-06 | Microsoft Technology Licensing, Llc | Input content to application via web browser |
US8712992B2 (en) * | 2009-03-28 | 2014-04-29 | Microsoft Corporation | Method and apparatus for web crawling |
US10699235B2 (en) * | 2009-05-05 | 2020-06-30 | Oracle America, Inc. | System, method and computer readable medium for placing advertisements into web pages |
US20100325607A1 (en) * | 2009-06-17 | 2010-12-23 | Microsoft Corporation | Generating Code Meeting Approved Patterns |
US8458604B2 (en) * | 2009-07-06 | 2013-06-04 | Fairwinds Partners Llc | Methods and apparatus for determining website validity |
US8849725B2 (en) * | 2009-08-10 | 2014-09-30 | Yahoo! Inc. | Automatic classification of segmented portions of web pages |
US20110060788A1 (en) * | 2009-09-04 | 2011-03-10 | ExactFactor, Ltd. | System and method for automatically providing metadata elements on a web page or web site |
JP2011070481A (en) * | 2009-09-28 | 2011-04-07 | Fujifilm Corp | Web browser transmission server and operation control method thereof |
US10607235B2 (en) * | 2009-12-24 | 2020-03-31 | Outbrain Inc. | Systems and methods for curating content |
US9003380B2 (en) * | 2010-01-12 | 2015-04-07 | Qualcomm Incorporated | Execution of dynamic languages via metadata extraction |
US8280378B2 (en) * | 2010-03-08 | 2012-10-02 | Telcordia Technologies, Inc. | Method and system to support user-centric selection of point of attachment through momentary interactive multimedia experience conveyance and through correlation of web links to quality and experience metrics |
JP2011186913A (en) * | 2010-03-10 | 2011-09-22 | Fujifilm Corp | Web site browsing system and server |
JP5464662B2 (en) * | 2010-03-30 | 2014-04-09 | 株式会社Kddi研究所 | Content playback control system and proxy server thereof |
US8595216B2 (en) * | 2010-06-04 | 2013-11-26 | Joel R. Harris | Method of providing an interactive entertainment system |
US20110307561A1 (en) * | 2010-06-14 | 2011-12-15 | Qualcomm Incorporated | System and apparatus for power-efficiently delivering webpage contents in a broadcast network |
US20120096073A1 (en) * | 2010-10-18 | 2012-04-19 | Blabbelon, Inc. | Local polling method and system for real time updating of web-based services |
US9864611B2 (en) * | 2010-12-15 | 2018-01-09 | Microsoft Technology Licensing, Llc | Extensible template pipeline for web applications |
US9805009B2 (en) * | 2010-12-30 | 2017-10-31 | Opera Software As | Method and device for cascading style sheet (CSS) selector matching |
US9015230B2 (en) * | 2011-02-23 | 2015-04-21 | Broadcom Corporation | Gateway/set top box image merging for delivery to serviced client device |
US8713103B2 (en) * | 2011-03-10 | 2014-04-29 | Ebay Inc. | Managing delivery of application server content |
US8510237B2 (en) * | 2011-03-15 | 2013-08-13 | Qualcomm Incorporated | Machine learning method to identify independent tasks for parallel layout in web browsers |
US20120297429A1 (en) * | 2011-05-17 | 2012-11-22 | Cbs Interactive, Inc. | Emulating Television Viewing Experience In A Browser |
US9460224B2 (en) * | 2011-06-16 | 2016-10-04 | Microsoft Technology Licensing Llc. | Selection mapping between fetched files and source files |
US9146909B2 (en) | 2011-07-27 | 2015-09-29 | Qualcomm Incorporated | Web browsing enhanced by cloud computing |
US10467289B2 (en) * | 2011-08-02 | 2019-11-05 | Comcast Cable Communications, Llc | Segmentation of video according to narrative theme |
US9165308B2 (en) * | 2011-09-20 | 2015-10-20 | TagMan Inc. | System and method for loading of web page assets |
US20130124301A1 (en) * | 2011-11-10 | 2013-05-16 | Google Inc. | System and method for dynamic user feedback for display and context advertisements |
US9239862B2 (en) | 2012-05-01 | 2016-01-19 | Qualcomm Incorporated | Web acceleration based on hints derived from crowd sourcing |
-
2011
- 2011-07-27 US US13/192,064 patent/US9146909B2/en not_active Expired - Fee Related
-
2012
- 2012-06-19 KR KR1020147004887A patent/KR101609483B1/en not_active IP Right Cessation
- 2012-06-19 JP JP2014522829A patent/JP5869124B2/en not_active Expired - Fee Related
- 2012-06-19 CA CA2842737A patent/CA2842737C/en not_active Expired - Fee Related
- 2012-06-19 CN CN201280036754.1A patent/CN103718177B/en not_active Expired - Fee Related
- 2012-06-19 WO PCT/US2012/043081 patent/WO2013015911A1/en unknown
- 2012-06-19 EP EP12733821.8A patent/EP2737414A1/en not_active Withdrawn
- 2012-06-19 RU RU2014107492/08A patent/RU2577193C2/en active IP Right Revival
- 2012-06-19 BR BR112014001889A patent/BR112014001889A2/en not_active Application Discontinuation
-
2013
- 2013-04-18 US US13/865,474 patent/US20140149850A1/en not_active Abandoned
Patent Citations (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6282548B1 (en) * | 1997-06-21 | 2001-08-28 | Alexa Internet | Automatically generate and displaying metadata as supplemental information concurrently with the web page, there being no link between web page and metadata |
US6182133B1 (en) * | 1998-02-06 | 2001-01-30 | Microsoft Corporation | Method and apparatus for display of information prefetching and cache status having variable visual indication based on a period of time since prefetching |
US20030110181A1 (en) * | 1999-01-26 | 2003-06-12 | Hinrich Schuetze | System and method for clustering data objects in a collection |
US20040205516A1 (en) * | 1999-12-23 | 2004-10-14 | Patrick Tufts | Use of web usage trail data to identify relationships between browsable items |
US20020120940A1 (en) * | 2001-02-02 | 2002-08-29 | Open Tv | Method and apparatus compilation of an interpretative language for interactive television |
US20050149557A1 (en) * | 2002-04-12 | 2005-07-07 | Yoshimi Moriya | Meta data edition device, meta data reproduction device, meta data distribution device, meta data search device, meta data reproduction condition setting device, and meta data distribution method |
US20040088375A1 (en) * | 2002-11-01 | 2004-05-06 | Sethi Bhupinder S. | Method for prefetching Web pages to improve response time networking |
US20100083105A1 (en) * | 2004-07-29 | 2010-04-01 | Prashanth Channabasavaiah | Document modification by a client-side application |
US7735062B2 (en) * | 2005-01-21 | 2010-06-08 | Outsystems—Software Em Rede, S.A. | Software development system and method |
US20060248442A1 (en) * | 2005-04-29 | 2006-11-02 | Rosenstein Justin M | Web page authoring tool for structured documents |
US9514235B2 (en) * | 2005-04-29 | 2016-12-06 | Google Inc. | Web page authoring tool for structured documents |
US20110282877A1 (en) * | 2005-07-15 | 2011-11-17 | Fetch Technologies, Inc. | Method and system for automatically extracting data from web sites |
US20070055964A1 (en) * | 2005-09-06 | 2007-03-08 | Morfik Technology Pty. Ltd. | System and method for synthesizing object-oriented high-level code into browser-side javascript |
US20090234861A1 (en) * | 2005-09-14 | 2009-09-17 | Jorey Ramer | Using mobile application data within a monetization platform |
US20160012047A1 (en) * | 2005-11-09 | 2016-01-14 | Ramp Holdings, Inc. | Method and Apparatus for Updating Speech Recognition Databases and Reindexing Audio and Video Content Using the Same |
US20070168935A1 (en) * | 2005-12-01 | 2007-07-19 | Ogami Kenneth Y | Multivariable transfer functions |
US8701023B1 (en) * | 2006-02-16 | 2014-04-15 | Cypress Semiconductor Corporation | Global parameter management graphical user interface (GUI) for embedded application design |
US20080222273A1 (en) * | 2007-03-07 | 2008-09-11 | Microsoft Corporation | Adaptive rendering of web pages on mobile devices using imaging technology |
US20080235566A1 (en) * | 2007-03-20 | 2008-09-25 | Apple Inc. | Presentation of media in an application |
US20080244080A1 (en) * | 2007-03-29 | 2008-10-02 | James Thomas H | Prefetching Based on Streaming Hints |
US20100211638A1 (en) * | 2007-07-27 | 2010-08-19 | Goojet | Method and device for creating computer applications |
US20090144158A1 (en) * | 2007-12-03 | 2009-06-04 | Matzelle Brent R | System And Method For Enabling Viewing Of Documents Not In HTML Format |
US8806431B1 (en) * | 2007-12-03 | 2014-08-12 | Appecelerator, Inc. | Aspect oriented programming |
US20090171790A1 (en) * | 2008-01-01 | 2009-07-02 | Transaxtions Llc | Time based targeted advertising |
US20090244385A1 (en) * | 2008-03-26 | 2009-10-01 | Kabushiki Kaisha Toshiba | Information display apparatus and information display method |
US8250054B2 (en) * | 2008-05-13 | 2012-08-21 | Enpulz, L.L.C. | Network search engine utilizing client browser favorites |
US9092538B2 (en) * | 2008-09-30 | 2015-07-28 | Disney Enterprises, Inc. | System and method for determining the data model used to create a web page |
US8527883B2 (en) * | 2008-12-18 | 2013-09-03 | International Business Machines Corporation | Browser operation with sets of favorites |
US20100223322A1 (en) * | 2009-02-27 | 2010-09-02 | Sun Microsystems, Inc. | Server based framework for improving ajax performance |
US8200617B2 (en) * | 2009-04-15 | 2012-06-12 | Evri, Inc. | Automatic mapping of a location identifier pattern of an object to a semantic type using object metadata |
US20120203734A1 (en) * | 2009-04-15 | 2012-08-09 | Evri Inc. | Automatic mapping of a location identifier pattern of an object to a semantic type using object metadata |
US20100332993A1 (en) * | 2009-06-30 | 2010-12-30 | International Business Machines Corporation | Method and system for delivering digital content |
US20110154305A1 (en) * | 2009-07-31 | 2011-06-23 | Leroux Brian | System and method for remotely compiling multi-platform native applications for mobile devices |
US8612947B2 (en) * | 2009-07-31 | 2013-12-17 | Adobe Systems Canada Inc. | System and method for remotely compiling multi-platform native applications for mobile devices |
US8543907B1 (en) * | 2009-10-16 | 2013-09-24 | Google Inc. | Context-sensitive optimization level selection |
US20110179176A1 (en) * | 2010-01-15 | 2011-07-21 | Endurance International Group, Inc. | Migrating a web hosting service between a one box per client architecture and a multiple box per client architecture |
US20110202821A1 (en) * | 2010-02-17 | 2011-08-18 | Yahoo! Inc. | Bidded marketplace for applications |
US20110296375A1 (en) * | 2010-05-27 | 2011-12-01 | Salesforce.Com, Inc. | Adding directives for javascript files directly into source code in a multi-tenant database environment |
US20140189541A1 (en) * | 2010-11-01 | 2014-07-03 | Google Inc. | Content sharing interface for sharing content in social networks |
US20160196448A1 (en) * | 2010-12-15 | 2016-07-07 | Facebook, Inc. | Comment plug-in for third party system |
US20150193214A1 (en) * | 2011-04-13 | 2015-07-09 | Microsoft Technology Licensing, Llc | API Descriptions |
US20130055063A1 (en) * | 2011-08-24 | 2013-02-28 | Qualcomm Innovation Center, Inc. | Controlled Parallel Compilation and Execution of JavaScripts |
US8990151B2 (en) * | 2011-10-14 | 2015-03-24 | Box, Inc. | Automatic and semi-automatic tagging features of work items in a shared workspace for metadata tracking in a cloud-based content management system with selective or optional user contribution |
US9341481B2 (en) * | 2011-11-30 | 2016-05-17 | Tata Consultancy Services Limited | Method and system for providing tourist assistance and guided navigation by metadata transmission |
US9307009B2 (en) * | 2012-02-15 | 2016-04-05 | Mobilespan Inc. | Presenting execution of a remote application in a mobile device native format |
US9325806B2 (en) * | 2012-02-24 | 2016-04-26 | Qualcomm Incorporated | Cooperative loading of webpages based on shared meta information |
US20140143231A1 (en) * | 2012-11-16 | 2014-05-22 | Apollo Group, Inc. | Contextual help article provider |
Non-Patent Citations (5)
Title |
---|
AbuJarour et al., Dynamic Tags for Dynamic Data Web Services, ACM 2010, pages 3-9. * |
Curtis US 7,954,052, filed 7/7/06 * |
Dima et al., A Metadata Editor to Support the Description of Linguistic Resources, Citeseer 2012, pages 1061-1066. * |
Jim et al., Defeating Script Injection Attacks with Browser-Enforced Embedded Policies, ACM 2007, pages 601-610. * |
Li et al., Data Sharing between Web Applications based on the Request of User, IEEE 2009, pages 280-282. * |
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10645143B1 (en) | 2010-04-18 | 2020-05-05 | Viasat, Inc. | Static tracker |
US10171550B1 (en) | 2010-04-18 | 2019-01-01 | Viasat, Inc. | Static tracker |
US10789326B2 (en) | 2011-04-11 | 2020-09-29 | Viasat, Inc. | Progressive prefetching |
US11256775B1 (en) | 2011-04-11 | 2022-02-22 | Viasat, Inc. | Progressive prefetching |
US11176219B1 (en) | 2011-04-11 | 2021-11-16 | Viasat, Inc. | Browser based feedback for optimized web browsing |
US10972573B1 (en) | 2011-04-11 | 2021-04-06 | Viasat, Inc. | Browser optimization through user history analysis |
US10735548B1 (en) | 2011-04-11 | 2020-08-04 | Viasat, Inc. | Utilizing page information regarding a prior loading of a web page to generate hinting information for improving load time of a future loading of the web page |
US10491703B1 (en) | 2011-04-11 | 2019-11-26 | Viasat, Inc. | Assisted browsing using page load feedback information and hinting functionality |
US10372780B1 (en) * | 2011-04-11 | 2019-08-06 | Viasat, Inc. | Browser based feedback for optimized web browsing |
US9146909B2 (en) | 2011-07-27 | 2015-09-29 | Qualcomm Incorporated | Web browsing enhanced by cloud computing |
US9239862B2 (en) | 2012-05-01 | 2016-01-19 | Qualcomm Incorporated | Web acceleration based on hints derived from crowd sourcing |
US10042948B2 (en) | 2013-03-15 | 2018-08-07 | Instart Logic, Inc. | Identifying correlated components of dynamic content |
US10091289B2 (en) | 2013-03-15 | 2018-10-02 | Instart Logic, Inc. | Provisional execution of dynamic content component |
US10855797B2 (en) | 2014-06-03 | 2020-12-01 | Viasat, Inc. | Server-machine-driven hint generation for improved web page loading using client-machine-driven feedback |
US11310333B2 (en) | 2014-06-03 | 2022-04-19 | Viasat, Inc. | Server-machine-driven hint generation for improved web page loading using client-machine-driven feedback |
US10425464B2 (en) | 2015-01-08 | 2019-09-24 | Instart Logic, Inc. | Adaptive learning periods in HTML streaming |
US10382520B2 (en) | 2015-01-08 | 2019-08-13 | Instart Logic, Inc. | Placeholders for dynamic components in HTML streaming |
US10931731B2 (en) | 2015-01-08 | 2021-02-23 | Akamai Technologies, Inc. | Adaptive learning periods in HTML streaming |
US9998521B2 (en) | 2015-01-08 | 2018-06-12 | Instart Logic, Inc. | HTML streaming |
US9813480B2 (en) | 2015-01-08 | 2017-11-07 | Instart Logic, Inc. | Placeholders for dynamic components in HTML streaming |
WO2016112354A3 (en) * | 2015-01-08 | 2016-09-29 | Instart Logic, Inc. | Html streaming |
US11200292B2 (en) | 2015-10-20 | 2021-12-14 | Viasat, Inc. | Hint model updating using automated browsing clusters |
US11443099B2 (en) * | 2015-10-28 | 2022-09-13 | Viasat, Inc. | Time-dependent machine-generated hinting |
US10367879B2 (en) * | 2016-06-10 | 2019-07-30 | Apple Inc. | Download prioritization |
US20170359404A1 (en) * | 2016-06-10 | 2017-12-14 | Apple Inc. | Download prioritization |
US11308179B2 (en) * | 2020-05-14 | 2022-04-19 | Sap Se | Core data service-based compile time webpage generation |
Also Published As
Publication number | Publication date |
---|---|
CN103718177B (en) | 2018-03-23 |
RU2577193C2 (en) | 2016-03-10 |
RU2014107492A (en) | 2015-09-10 |
KR20140051359A (en) | 2014-04-30 |
JP5869124B2 (en) | 2016-02-24 |
WO2013015911A1 (en) | 2013-01-31 |
US9146909B2 (en) | 2015-09-29 |
EP2737414A1 (en) | 2014-06-04 |
CN103718177A (en) | 2014-04-09 |
CA2842737A1 (en) | 2013-01-31 |
US20130031459A1 (en) | 2013-01-31 |
JP2014525103A (en) | 2014-09-25 |
KR101609483B1 (en) | 2016-04-20 |
CA2842737C (en) | 2017-01-03 |
BR112014001889A2 (en) | 2017-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9146909B2 (en) | Web browsing enhanced by cloud computing | |
US10645143B1 (en) | Static tracker | |
US9749400B2 (en) | Cooperative loading of webpages based on shared meta information | |
KR101657578B1 (en) | Machine learning method to identify independent tasks for parallel layout in web browsers | |
KR102294326B1 (en) | Prefetching application data for periods of disconnectivity | |
US7483941B2 (en) | System and method for dynamically inserting prefetch tags by the web server | |
US20190222667A1 (en) | Speculative prefetch of resources across page loads | |
CN102438045A (en) | Method and system for pre-fetching web page, and method for accessing web page | |
US20080235708A1 (en) | Selectively updating web pages on a mobile client | |
CN103714172A (en) | Page processing method, device and system | |
US20130227388A1 (en) | Persistent Storage of Profile Data for Script Compilation | |
US10909170B2 (en) | Method for processing and rendering feed-like based images for mobile devices | |
Mittal et al. | A survey of techniques for improving efficiency of mobile web browsing | |
US11176223B1 (en) | Page rendering by an intermediary system that uses a truncated library | |
US10152463B1 (en) | System for profiling page browsing interactions | |
KR20120016335A (en) | Web page pre-caching system and method for offline-executing | |
CN116846881A (en) | Cache library file updating method and terminal | |
Guo et al. | Web access latency reduction using crf-based predictive caching |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: QUALCOMM INCORPORATED, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:KHORASHADI, BEHROOZ;RESHADI, MOHAMMAD H.;DAS, SAUMITRA MOHAN;REEL/FRAME:030451/0683 Effective date: 20110727 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |