US20140325399A1 - Front-end tool for displaying diagnostic information to facilitate web page development - Google Patents
Front-end tool for displaying diagnostic information to facilitate web page development Download PDFInfo
- Publication number
- US20140325399A1 US20140325399A1 US13/874,297 US201313874297A US2014325399A1 US 20140325399 A1 US20140325399 A1 US 20140325399A1 US 201313874297 A US201313874297 A US 201313874297A US 2014325399 A1 US2014325399 A1 US 2014325399A1
- Authority
- US
- United States
- Prior art keywords
- web page
- metadata
- page
- user
- browser
- 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.)
- Granted
Links
Images
Classifications
-
- G06F17/3089—
-
- 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/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
Definitions
- the disclosed embodiments generally relate to software development tools. More specifically, the disclosed embodiments relate to the design of a front-end development tool that displays diagnostic information and/or performance metrics to facilitate web page development.
- a front-end server that generates the web page frequently makes calls to one or more back-end servers to perform various operations and to gather data from multiple sources for the web page.
- the front-end server incorporates this data into markup for the web page and sends the markup to a browser on a client system to be displayed to the user.
- This distributed web-page-creation process can make it challenging to fix an error in the web page, because it is often difficult to identify the source of the error.
- the front-end server can translate the web page into French, and can possibly make calls to one or more back-end servers to perform various operations or to gather data to facilitate the translation process.
- the developer if there is an error in the French-language text on the web page, the developer must somehow identify the source of the error, which can possibly exist in a number of files or servers located on different machines. In existing systems, this typically involves sifting through log files on various front-end and/or back-end servers to identify the source of the error, which can be an extremely time-consuming process.
- FIG. 1 illustrates a system that generates a web page in accordance with the disclosed embodiments.
- FIG. 2A presents a flow chart illustrating the process of gathering and displaying metadata associated with the web-page-assembly process in accordance with the disclosed embodiments.
- FIG. 2B presents a flow chart illustrating the process of gathering and displaying performance metrics associated with user interactions with a web page in accordance with the disclosed embodiments.
- FIG. 3A presents a flow chart illustrating the process of displaying metadata in accordance with the disclosed embodiments.
- FIG. 3B presents a flow chart illustrating the process of displaying additional metadata in accordance with the disclosed embodiments.
- FIG. 4 illustrates a web page and an associated popup in accordance with the disclosed embodiments.
- FIG. 5 illustrates a popup in accordance with the disclosed embodiments.
- FIG. 6 presents a flow chart illustrating the process of fixing a translation error in accordance with the disclosed embodiments.
- the data structures and code described in this detailed description are typically stored on a computer-readable storage medium, which may be any device or medium that can store code and/or data for use by a computer system.
- the computer-readable storage medium includes, but is not limited to, volatile memory, non-volatile memory, magnetic and optical storage devices such as disk drives, magnetic tape, CDs (compact discs), DVDs (digital versatile discs or digital video discs), or other media capable of storing computer-readable media now known or later developed.
- the methods and processes described in the detailed description section can be embodied as code and/or data, which can be stored in a computer-readable storage medium as described above.
- a computer system reads and executes the code and/or data stored on the computer-readable storage medium, the computer system performs the methods and processes embodied as data structures and code and stored within the computer-readable storage medium.
- the methods and processes described below can be included in hardware modules.
- the hardware modules can include, but are not limited to, application-specific integrated circuit (ASIC) chips, field-programmable gate arrays (FPGAs), and other programmable-logic devices now known or later developed. When the hardware modules are activated, the hardware modules perform the methods and processes included within the hardware modules.
- ASIC application-specific integrated circuit
- FPGAs field-programmable gate arrays
- FIG. 1 illustrates a system that generates a web page 117 in accordance with the disclosed embodiments.
- This system assembles and renders web page 117 at a front-end server 120 that hosts a website 119 .
- a user 106 can access website 119 through a browser 102 located on a client system 118 .
- website 119 can generally include any type of website comprising one or more web-interlinked pages which can be accessed by a user 106 .
- the website 119 provides access to an online professional network, such as the LinkedInTM website hosted by the LinkedIn Corporation of Mountain View, Calif.
- Browser 102 can generally include any type of browser that can be used to view web pages, such as the Internet ExplorerTM browser distributed by the Microsoft Corporation of Redmond, Wash., or the FirefoxTM browser distributed by the Mozilla Corporation of Mountain View, Calif.
- Client system 118 can generally include any type of portable or non-portable computer system that is capable of hosting a web browser, such as a desktop computer system, a laptop computer system, a tablet computer system or a smartphone.
- Browser 102 is associated with a cache 103 that can store a number of different items, such as markup for recently accessed web pages, JavaScript code and metadata 104 , wherein metadata 104 is associated with the page-assembly process as is described in more detail below with reference to FIGS. 2A-5 .
- metadata 104 can generally include any type of data that can be used to determine how specific elements of web page 117 were assembled.
- metadata 104 can include (1) a list of services that were accessed during the web-page-assembly process, (2) a list of files were accessed by the services, (3) data items that were returned by the services, and (4) a description of computational operations that were applied to the returned information to produce the data items.
- Browser 102 can additionally request and receive static JavaScript code (JS) 108 from a content distribution network 110 (CDN), wherein CDN 110 comprises a distributed set of servers configured to serve content to end-users with high availability and high performance.
- JS JavaScript code
- front-end server 120 communicates with multiple back-end servers 121 - 123 to retrieve data items to be incorporated into various web pages.
- a back-end server 121 can be responsible for translating textual information on a web page from a source language (such as US English) into a target language (such as French).
- back-end server 122 can provide real-time prices for stocks, and front-end server 120 can incorporate these real-time prices in a web page that displays an associated investment portfolio to a user.
- front-end server 120 renders markup for the web page 117 .
- This can involve making calls to back-end servers 121 - 123 to obtain raw data for web page 117 .
- Front-end server 120 processes this raw data and incorporates it into the markup for web page 117 .
- front-end server 120 and back-end servers 121 - 123 can collect metadata describing how data is assembled to produce web page 117 .
- Front-end server 120 accumulates this metadata 104 and sends it to browser 102 located on client system 118 .
- Browser 102 can store this metadata 104 in a local cache 103 along with the markup for web page 117 .
- web page 117 can be configured to request and receive JavaScript code (JS) 108 from CDN 110 to process metadata 104 .
- this JavaScript code 108 renders a popup, which selectively displays portions of metadata 104 as is described in more detail below with reference to FIGS. 2A-5 .
- metadata 104 can be displayed in a number of different ways, such as by using a popup, temporarily switching to another page that displays the metadata, or displaying the metadata in a translucent overlay. Hence, the disclosed embodiments are not meant to be limited to using popups to display metadata.
- FIG. 2A presents a flow chart illustrating the process of gathering and displaying metadata 104 associated with the assembly process for web page 117 in accordance with the disclosed embodiments.
- This process starts when the user triggers or somehow activates a special “diagnostic mode” on client system 118 (step 202 ). This can involve the user selecting an option to activate the special diagnostic mode while the user is accessing the website 119 . Alternatively, an administrator associated with website 119 can activate the special diagnostic mode from client system 118 or from front-end server 120 .
- client system 118 sends a cookie to front-end server 120 , wherein this cookie tells front-end server 120 to begin capturing metadata 104 associated with the page-assembly process (step 204 ). Then, front-end server 120 instructs back-end servers 121 - 123 to begin capturing metadata 104 associated with the page-assembly process (step 206 ). For example, suppose back-end server 121 is asked to provide a data value to be incorporated into the web page.
- back-end server 121 can keep track of which files were accessed by back-end server 121 , what information was retrieved from the files, and what computational operations were performed on the retrieved information by back-end server 121 to generate a data value.
- front-end server 120 When web page 117 is being rendered by front-end server 120 , front-end server 120 captures metadata 104 describing the assembly process and receives captured metadata 104 from the back-end servers 121 - 123 (step 208 ). While gathering this metadata 104 , front-end server 120 can possibly create a “call graph” which lists services and/or servers that were accessed to assemble the page, and possibly how long each service took to execute. Note that services can possibly call other services, so the call graph can have multiple levels.
- Metadata 104 can also include information from a JavaServer Pages (JSP) template or a Dynamic Web Template (DWT), which is used to render web page 117 , wherein the JSP template or the DWT template indicates which files are accessed to create web page 117 .
- JSP JavaServer Pages
- DWT Dynamic Web Template
- Front-end server 120 can also incorporate an instruction into web page 117 which causes browser 102 to retrieve static JavaScript code 108 from CDN 110 , wherein JavaScript code 108 generates a popup (or some other user interface element) that can be used to selectively display the metadata 104 associated with the web page (step 210 ).
- front-end server 120 sends web page 117 and its associated metadata 104 to browser 102 (step 212 ), and browser 102 stores metadata 104 (and possibly the markup for web page 117 ) in local cache 103 . Then, browser 102 displays web page 117 and also executes JavaScript code 108 , which creates a popup to display metadata 104 as is described in more detail below with reference to FIGS. 3-5 (step 214 ).
- FIG. 2B presents a flow chart illustrating the process of gathering and displaying performance metrics associated with user interactions with web page 117 in accordance with the disclosed embodiments.
- the same mechanism that can be used to display metadata about the web-page-assembly process can also be used to display metadata comprising performance metrics associated with web page 117 .
- the user triggers or somehow activates a performance-monitoring mode on client system 118 (step 232 ). This can involve the user selecting an option to activate the performance-monitoring mode while the user is accessing the website 119 . Alternatively, an administrator associated with website 119 can activate the performance-monitoring mode.
- the performance-monitoring mode can be enabled separately from, or at the same time as, the diagnostic mode that gathers metadata associated with the web-page-assembly process.
- the system keeps track of various performance metrics related to the user's interactions with web page 117 (step 234 ). For example, the system can keep track of the number of queries per page. Or, the system can keep track of latency information for web page 117 , which can involve keeping track of how long web page 117 takes to load, or how long specific elements within web page 117 take to load. The system can also keep track of how long the user views web page 117 , or how often the user activates certain user interface elements (e.g., buttons) within web page 117 .
- user interface elements e.g., buttons
- the system stores the measured performance metrics (step 236 ). This can involve storing the performance metrics in application-level data structures, system-level data structures, a special file, or possibly in cache 103 .
- the system selectively displays the performance metrics to the user (step 238 ). This can involve using a popup as described above.
- Metadata 104 can include a call graph specifying which services or servers were involved in generating the web page and how long each service took to execute. It can also include information from JSP/DWT templates specifying which files were accessed to generate the web page, and performance metrics associated with use of the web page.
- the system can also display metadata associated with translations of textual information in a web page.
- a web page can be translated from a source language, such as US English, into a target language, such as French.
- This translation process can involve accessing a number of different services and files, and metadata 104 can keep track of which services and files were accessed.
- the system can also display metadata that describes A/B tests, wherein during A/B tests different variations (treatments) of a web page are tested to determine their associated impact on user behavior.
- A/B test can be used to determine how effective different advertising messages are in causing a user to click on a link to an advertiser's website.
- the system can keep track of metadata that described different treatments for both the active and inactive A/B tests, as well as associated empirical data about resulting user behavior.
- the system can additionally display metadata containing debugging information.
- the front-end server 120 can keep track of warnings and error messages that are triggered as the web page is being assembled and rendered. The system can then selectively output these warnings and error messages using a popup when the associated web page is displayed.
- FIG. 3A presents a flow chart illustrating the process of displaying metadata in accordance with the disclosed embodiments.
- browser 102 receives markup for a web page 117 and associated metadata 104 from front-end server 120 (step 302 ).
- browser 102 stores metadata 104 in a local cache 103 (step 304 ).
- metadata 104 comprises a set of properties files that were used to render the page, wherein each properties file includes sets of keys which index specific entries in the properties file, and associated values stored in the entries.
- metadata 104 can generally be stored in a wide range of formats with different indexing techniques.
- a properties file might be associated with a specific language, such as German; the indices into the properties file can be associated with specific English phrases; and the associated values can be text strings containing German translations for the English phrases.
- browser 102 requests and receives JavaScript code 108 for a popup from CDN 110 (step 306 ). Then, browser 102 display web page 117 (step 308 ), and JavaScript code 108 generates and displays a popup that can be used to selectively display metadata 104 (step 310 ).
- the popup can display all of the metadata associated with web page 117 , or alternatively can display selected portions of the metadata. For example, in one embodiment, when user 106 moves a cursor over a specific clement on web page 117 (step 312 ), the system displays metadata associated with the element.
- the JavaScript code 108 uses a value (e.g., a text string) associated with the element to search metadata 104 to identify a specific properties file and a specific key containing the value (text string) (step 314 ).
- the JavaScript code 108 uses a popup to display: (1) the file name for the properties file, (2) the specific key, and (3) the associated value (text string) (step 316 ).
- the popup displays all entries in properties files that match a specific value. For example, if the values are text strings, the popup can display all properties file entries that contain a specific keyword which is entered by the user.
- FIG. 3B presents a flow chart illustrating the process of displaying additional metadata in accordance with the disclosed embodiments.
- the user may want to obtain additional information about a specific item of metadata that appears in the popup. For example, if the popup displays a translation of a text string, the user may want to know the last date the translation was updated, or the user may want to obtain contact information for the person who performed the translation.
- the system allows the user to obtain the additional information as follows.
- the user requests additional information about an item of metadata which appears in the popup associated with a web page in a browser (step 322 ). This can involve double-clicking on the item of metadata in the popup, or entering a query for the additional metadata into a field in the popup.
- the popup sends a request for the additional information to a front-end server (step 324 ).
- the front-end server can possibly send associated requests to one or more back-end servers (step 326 ).
- the additional metadata does not exist on the front-end server and it is necessary to query the back-end servers to obtain this additional metadata.
- the contact information for the person who performed the translation may be located on aback-end server that stores the translations.
- the front-end server assembles the additional information (step 328 ), which can involve assembling information obtained from the front-end server and/or one or more back-end servers.
- the front end-server then sends the additional information to the popup (step 330 ). This enables the popup to display the additional information (step 332 ).
- FIG. 4 illustrates a web page 400 and associated popup 402 for displaying metadata
- FIG. 5 illustrates more details about popup 402 in accordance with the disclosed embodiments.
- popup 402 includes a criteria field 504 and a search button 502 .
- the user can enter a string or a value into criteria field 504 and can activate search button 502 to find matching properties file entries. (Alternatively, as mentioned above, the search can be directed to metadata associated with a web page element in proximity to a cursor.)
- popup 402 displays the specific search criteria 505 .
- Popup 402 also displays properties file entries that are exact matches 506 and partial matches 508 . Note that each displayed entry lists (1) the name of the properties file, (2) the key for the entry, and (3) the value stored in the entry.
- popup 402 includes a number of buttons, including buttons to: retranslate 509 (which is described in more detail below with reference to FIG. 6 ); show metadata 510 ; ask for help 512 ; and cancel a query 5
- the front-end tool is configured to fix translation errors in web pages, wherein the web page is translated from a source language, such as US English, into a target language, such as French.
- FIG. 6 presents a flow chart illustrating the process of fixing a translation error in accordance with the disclosed embodiments.
- the user identifies some text that appears to be mistranslated on a web page and moves a cursor over the text in question (step 602 ).
- the popup selects and displays metadata associated with the text in question (step 604 ).
- the user moves the cursor inside the popup and clicks on the entry for the text in question (step 606 ).
- the user clicks on the retranslate button 509 (step 608 ).
- the system updates various translation parameters, such as the email address of the translator and the language associated with the translation (step 610 ).
- the system then creates a new project to correct the translation error (step 612 ), which can involve causing a service which is responsible for the translation to create the new project which is sent to a translation application.
- an operator of the translation application receives the project to correct the translation error (step 614 ).
- the operator corrects the translation which corrects a file or database that stores the translation, and this ultimately causes the corrected translation to be displayed in the web page.
- the above-described system can possibly be extended to mobile applications which display pages to a user, wherein the pages are assembled through a process which similarly involves a front-end server and one or more back-end servers.
- the disclosed embodiments can be applied to any system that displays metadata associated with some type of user interface, such as a web page, a page of a mobile application, or a user interface for a desktop application. Note that, in mobile applications, instead of using a popup it may be more advantageous to allow the user to “swipe” the screen to uncover an underlying screen that contains the diagnostic information.
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
Description
- 1. Field
- The disclosed embodiments generally relate to software development tools. More specifically, the disclosed embodiments relate to the design of a front-end development tool that displays diagnostic information and/or performance metrics to facilitate web page development.
- 2. Related Art
- In modern websites, a great amount of effort can go into assembling and rendering a web page that is ultimately presented to a user. For example, a front-end server that generates the web page frequently makes calls to one or more back-end servers to perform various operations and to gather data from multiple sources for the web page. Next, the front-end server incorporates this data into markup for the web page and sends the markup to a browser on a client system to be displayed to the user.
- This distributed web-page-creation process can make it challenging to fix an error in the web page, because it is often difficult to identify the source of the error. For example, if a web page is generated for a user in a French-speaking country, the front-end server can translate the web page into French, and can possibly make calls to one or more back-end servers to perform various operations or to gather data to facilitate the translation process. In this case, if there is an error in the French-language text on the web page, the developer must somehow identify the source of the error, which can possibly exist in a number of files or servers located on different machines. In existing systems, this typically involves sifting through log files on various front-end and/or back-end servers to identify the source of the error, which can be an extremely time-consuming process.
-
FIG. 1 illustrates a system that generates a web page in accordance with the disclosed embodiments. -
FIG. 2A presents a flow chart illustrating the process of gathering and displaying metadata associated with the web-page-assembly process in accordance with the disclosed embodiments. -
FIG. 2B presents a flow chart illustrating the process of gathering and displaying performance metrics associated with user interactions with a web page in accordance with the disclosed embodiments. -
FIG. 3A presents a flow chart illustrating the process of displaying metadata in accordance with the disclosed embodiments. -
FIG. 3B presents a flow chart illustrating the process of displaying additional metadata in accordance with the disclosed embodiments. -
FIG. 4 illustrates a web page and an associated popup in accordance with the disclosed embodiments. -
FIG. 5 illustrates a popup in accordance with the disclosed embodiments. -
FIG. 6 presents a flow chart illustrating the process of fixing a translation error in accordance with the disclosed embodiments. - The following description is presented to enable any person skilled in the art to make and use the present embodiments, and is provided in the context of a particular application and its requirements. Various modifications to the disclosed embodiments will be readily apparent to those skilled in the art, and the general principles defined herein may be applied to other embodiments and applications without departing from the spirit and scope of the present embodiments. Thus, the present embodiments are not limited to the embodiments shown, but are to be accorded the widest scope consistent with the principles and features disclosed herein.
- The data structures and code described in this detailed description are typically stored on a computer-readable storage medium, which may be any device or medium that can store code and/or data for use by a computer system. The computer-readable storage medium includes, but is not limited to, volatile memory, non-volatile memory, magnetic and optical storage devices such as disk drives, magnetic tape, CDs (compact discs), DVDs (digital versatile discs or digital video discs), or other media capable of storing computer-readable media now known or later developed.
- The methods and processes described in the detailed description section can be embodied as code and/or data, which can be stored in a computer-readable storage medium as described above. When a computer system reads and executes the code and/or data stored on the computer-readable storage medium, the computer system performs the methods and processes embodied as data structures and code and stored within the computer-readable storage medium. Furthermore, the methods and processes described below can be included in hardware modules. For example, the hardware modules can include, but are not limited to, application-specific integrated circuit (ASIC) chips, field-programmable gate arrays (FPGAs), and other programmable-logic devices now known or later developed. When the hardware modules are activated, the hardware modules perform the methods and processes included within the hardware modules.
-
FIG. 1 illustrates a system that generates aweb page 117 in accordance with the disclosed embodiments. This system assembles and rendersweb page 117 at a front-end server 120 that hosts awebsite 119. As illustrated inFIG. 1 , a user 106 can accesswebsite 119 through abrowser 102 located on aclient system 118. Note thatwebsite 119 can generally include any type of website comprising one or more web-interlinked pages which can be accessed by a user 106. In one embodiment, thewebsite 119 provides access to an online professional network, such as the LinkedIn™ website hosted by the LinkedIn Corporation of Mountain View, Calif.Browser 102 can generally include any type of browser that can be used to view web pages, such as the Internet Explorer™ browser distributed by the Microsoft Corporation of Redmond, Wash., or the Firefox™ browser distributed by the Mozilla Corporation of Mountain View, Calif.Client system 118 can generally include any type of portable or non-portable computer system that is capable of hosting a web browser, such as a desktop computer system, a laptop computer system, a tablet computer system or a smartphone. -
Browser 102 is associated with acache 103 that can store a number of different items, such as markup for recently accessed web pages, JavaScript code andmetadata 104, whereinmetadata 104 is associated with the page-assembly process as is described in more detail below with reference toFIGS. 2A-5 . Note thatmetadata 104 can generally include any type of data that can be used to determine how specific elements ofweb page 117 were assembled. For example,metadata 104 can include (1) a list of services that were accessed during the web-page-assembly process, (2) a list of files were accessed by the services, (3) data items that were returned by the services, and (4) a description of computational operations that were applied to the returned information to produce the data items.Browser 102 can additionally request and receive static JavaScript code (JS) 108 from a content distribution network 110 (CDN), wherein CDN 110 comprises a distributed set of servers configured to serve content to end-users with high availability and high performance. - During operation, front-
end server 120 communicates with multiple back-end servers 121-123 to retrieve data items to be incorporated into various web pages. For example, a back-end server 121 can be responsible for translating textual information on a web page from a source language (such as US English) into a target language (such as French). In another example, back-end server 122 can provide real-time prices for stocks, and front-end server 120 can incorporate these real-time prices in a web page that displays an associated investment portfolio to a user. - During operation, user 106 causes
browser 102 to request aweb page 117 fromwebsite 119 on front-end server 120. In response to this request, front-end server 120 renders markup for theweb page 117. This can involve making calls to back-end servers 121-123 to obtain raw data forweb page 117. Front-end server 120 processes this raw data and incorporates it into the markup forweb page 117. During this process, front-end server 120 and back-end servers 121-123 can collect metadata describing how data is assembled to produceweb page 117. (Also, note that the web page can alternatively be assembled ahead of time, not in response to the browser requesting the web page.) Front-end server 120 accumulates thismetadata 104 and sends it tobrowser 102 located onclient system 118.Browser 102 can store thismetadata 104 in alocal cache 103 along with the markup forweb page 117. - Note that
web page 117 can be configured to request and receive JavaScript code (JS) 108 from CDN 110 to processmetadata 104. In one embodiment, this JavaScriptcode 108 renders a popup, which selectively displays portions ofmetadata 104 as is described in more detail below with reference toFIGS. 2A-5 . Moreover,metadata 104 can be displayed in a number of different ways, such as by using a popup, temporarily switching to another page that displays the metadata, or displaying the metadata in a translucent overlay. Hence, the disclosed embodiments are not meant to be limited to using popups to display metadata. -
FIG. 2A presents a flow chart illustrating the process of gathering and displayingmetadata 104 associated with the assembly process forweb page 117 in accordance with the disclosed embodiments. This process starts when the user triggers or somehow activates a special “diagnostic mode” on client system 118 (step 202). This can involve the user selecting an option to activate the special diagnostic mode while the user is accessing thewebsite 119. Alternatively, an administrator associated withwebsite 119 can activate the special diagnostic mode fromclient system 118 or from front-end server 120. - Next, in response to the user activating the special diagnostic mode,
client system 118 sends a cookie to front-end server 120, wherein this cookie tells front-end server 120 to begin capturingmetadata 104 associated with the page-assembly process (step 204). Then, front-end server 120 instructs back-end servers 121-123 to begin capturingmetadata 104 associated with the page-assembly process (step 206). For example, suppose back-end server 121 is asked to provide a data value to be incorporated into the web page. While gatheringmetadata 104, back-end server 121 can keep track of which files were accessed by back-end server 121, what information was retrieved from the files, and what computational operations were performed on the retrieved information by back-end server 121 to generate a data value. - When
web page 117 is being rendered by front-end server 120, front-end server 120 captures metadata 104 describing the assembly process and receives capturedmetadata 104 from the back-end servers 121-123 (step 208). While gathering thismetadata 104, front-end server 120 can possibly create a “call graph” which lists services and/or servers that were accessed to assemble the page, and possibly how long each service took to execute. Note that services can possibly call other services, so the call graph can have multiple levels. -
Metadata 104 can also include information from a JavaServer Pages (JSP) template or a Dynamic Web Template (DWT), which is used to renderweb page 117, wherein the JSP template or the DWT template indicates which files are accessed to createweb page 117. - Front-
end server 120 can also incorporate an instruction intoweb page 117 which causesbrowser 102 to retrievestatic JavaScript code 108 from CDN 110, whereinJavaScript code 108 generates a popup (or some other user interface element) that can be used to selectively display themetadata 104 associated with the web page (step 210). - Next, front-
end server 120 sendsweb page 117 and its associatedmetadata 104 to browser 102 (step 212), andbrowser 102 stores metadata 104 (and possibly the markup for web page 117) inlocal cache 103. Then,browser 102displays web page 117 and also executesJavaScript code 108, which creates a popup to displaymetadata 104 as is described in more detail below with reference toFIGS. 3-5 (step 214). -
FIG. 2B presents a flow chart illustrating the process of gathering and displaying performance metrics associated with user interactions withweb page 117 in accordance with the disclosed embodiments. Note that the same mechanism that can be used to display metadata about the web-page-assembly process can also be used to display metadata comprising performance metrics associated withweb page 117. First, the user triggers or somehow activates a performance-monitoring mode on client system 118 (step 232). This can involve the user selecting an option to activate the performance-monitoring mode while the user is accessing thewebsite 119. Alternatively, an administrator associated withwebsite 119 can activate the performance-monitoring mode. Note that the performance-monitoring mode can be enabled separately from, or at the same time as, the diagnostic mode that gathers metadata associated with the web-page-assembly process. - Next, while the
web page 117 is being displayed to the user, the system keeps track of various performance metrics related to the user's interactions with web page 117 (step 234). For example, the system can keep track of the number of queries per page. Or, the system can keep track of latency information forweb page 117, which can involve keeping track of howlong web page 117 takes to load, or how long specific elements withinweb page 117 take to load. The system can also keep track of how long the user viewsweb page 117, or how often the user activates certain user interface elements (e.g., buttons) withinweb page 117. - Next, the system stores the measured performance metrics (step 236). This can involve storing the performance metrics in application-level data structures, system-level data structures, a special file, or possibly in
cache 103. - Finally, the system selectively displays the performance metrics to the user (step 238). This can involve using a popup as described above.
- The described embodiments can generally be used to display any type of metadata associated with
web page 117. As mentioned above,metadata 104 can include a call graph specifying which services or servers were involved in generating the web page and how long each service took to execute. It can also include information from JSP/DWT templates specifying which files were accessed to generate the web page, and performance metrics associated with use of the web page. - In addition to these previously mentioned types of metadata, the system can also display metadata associated with translations of textual information in a web page. For example, a web page can be translated from a source language, such as US English, into a target language, such as French. This translation process can involve accessing a number of different services and files, and
metadata 104 can keep track of which services and files were accessed. - The system can also display metadata that describes A/B tests, wherein during A/B tests different variations (treatments) of a web page are tested to determine their associated impact on user behavior. For example, A/B test can be used to determine how effective different advertising messages are in causing a user to click on a link to an advertiser's website. In this example, the system can keep track of metadata that described different treatments for both the active and inactive A/B tests, as well as associated empirical data about resulting user behavior.
- The system can additionally display metadata containing debugging information. For example, the front-
end server 120 can keep track of warnings and error messages that are triggered as the web page is being assembled and rendered. The system can then selectively output these warnings and error messages using a popup when the associated web page is displayed. -
FIG. 3A presents a flow chart illustrating the process of displaying metadata in accordance with the disclosed embodiments. At the start of this process,browser 102 receives markup for aweb page 117 and associatedmetadata 104 from front-end server 120 (step 302). Next,browser 102 stores metadata 104 in a local cache 103 (step 304). - In one embodiment,
metadata 104 comprises a set of properties files that were used to render the page, wherein each properties file includes sets of keys which index specific entries in the properties file, and associated values stored in the entries. However, note thatmetadata 104 can generally be stored in a wide range of formats with different indexing techniques. In one example, to facilitate translations of website text, a properties file might be associated with a specific language, such as German; the indices into the properties file can be associated with specific English phrases; and the associated values can be text strings containing German translations for the English phrases. - Next, in response to an instruction stored in
web page 117,browser 102 requests and receivesJavaScript code 108 for a popup from CDN 110 (step 306). Then,browser 102 display web page 117 (step 308), andJavaScript code 108 generates and displays a popup that can be used to selectively display metadata 104 (step 310). - The popup can display all of the metadata associated with
web page 117, or alternatively can display selected portions of the metadata. For example, in one embodiment, when user 106 moves a cursor over a specific clement on web page 117 (step 312), the system displays metadata associated with the element. In this embodiment, theJavaScript code 108 uses a value (e.g., a text string) associated with the element to searchmetadata 104 to identify a specific properties file and a specific key containing the value (text string) (step 314). Finally, theJavaScript code 108 uses a popup to display: (1) the file name for the properties file, (2) the specific key, and (3) the associated value (text string) (step 316). In another example, the popup displays all entries in properties files that match a specific value. For example, if the values are text strings, the popup can display all properties file entries that contain a specific keyword which is entered by the user. -
FIG. 3B presents a flow chart illustrating the process of displaying additional metadata in accordance with the disclosed embodiments. In some cases, the user may want to obtain additional information about a specific item of metadata that appears in the popup. For example, if the popup displays a translation of a text string, the user may want to know the last date the translation was updated, or the user may want to obtain contact information for the person who performed the translation. - In some embodiments, the system allows the user to obtain the additional information as follows. First, the user requests additional information about an item of metadata which appears in the popup associated with a web page in a browser (step 322). This can involve double-clicking on the item of metadata in the popup, or entering a query for the additional metadata into a field in the popup. Next, the popup sends a request for the additional information to a front-end server (step 324). When the front-end server receives this request, the front-end server can possibly send associated requests to one or more back-end servers (step 326). In many cases, the additional metadata does not exist on the front-end server and it is necessary to query the back-end servers to obtain this additional metadata. In the example mentioned above, the contact information for the person who performed the translation may be located on aback-end server that stores the translations.
- Next, the front-end server assembles the additional information (step 328), which can involve assembling information obtained from the front-end server and/or one or more back-end servers. The front end-server then sends the additional information to the popup (step 330). This enables the popup to display the additional information (step 332).
-
FIG. 4 illustrates aweb page 400 and associatedpopup 402 for displaying metadata, andFIG. 5 illustrates more details aboutpopup 402 in accordance with the disclosed embodiments. Note thatpopup 402 includes acriteria field 504 and asearch button 502. The user can enter a string or a value intocriteria field 504 and can activatesearch button 502 to find matching properties file entries. (Alternatively, as mentioned above, the search can be directed to metadata associated with a web page element in proximity to a cursor.) Note thatpopup 402 displays thespecific search criteria 505.Popup 402 also displays properties file entries that areexact matches 506 andpartial matches 508. Note that each displayed entry lists (1) the name of the properties file, (2) the key for the entry, and (3) the value stored in the entry. Finally,popup 402 includes a number of buttons, including buttons to: retranslate 509 (which is described in more detail below with reference toFIG. 6 );show metadata 510; ask forhelp 512; and cancel aquery 514. - In one embodiment, the front-end tool is configured to fix translation errors in web pages, wherein the web page is translated from a source language, such as US English, into a target language, such as French. More specifically,
FIG. 6 presents a flow chart illustrating the process of fixing a translation error in accordance with the disclosed embodiments. (Note that the corresponding popup for this embodiment appears inFIG. 5 .) At the start of the process, the user identifies some text that appears to be mistranslated on a web page and moves a cursor over the text in question (step 602). Next, the popup selects and displays metadata associated with the text in question (step 604). - In order to fix the translation, the user moves the cursor inside the popup and clicks on the entry for the text in question (step 606). The user then clicks on the retranslate button 509 (step 608). Next, in preparation for retranslation, the system updates various translation parameters, such as the email address of the translator and the language associated with the translation (step 610). The system then creates a new project to correct the translation error (step 612), which can involve causing a service which is responsible for the translation to create the new project which is sent to a translation application. Subsequently, an operator of the translation application receives the project to correct the translation error (step 614). Finally, the operator corrects the translation which corrects a file or database that stores the translation, and this ultimately causes the corrected translation to be displayed in the web page.
- The above-described system can possibly be extended to mobile applications which display pages to a user, wherein the pages are assembled through a process which similarly involves a front-end server and one or more back-end servers. In general, the disclosed embodiments can be applied to any system that displays metadata associated with some type of user interface, such as a web page, a page of a mobile application, or a user interface for a desktop application. Note that, in mobile applications, instead of using a popup it may be more advantageous to allow the user to “swipe” the screen to uncover an underlying screen that contains the diagnostic information.
- The foregoing descriptions of embodiments have been presented for purposes of illustration and description only. They are not intended to be exhaustive or to limit the present description to the forms disclosed. Accordingly, many modifications and variations will be apparent to practitioners skilled in the art. Additionally, the above disclosure is not intended to limit the present description. The scope of the present description is defined by the appended claims.
Claims (23)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/874,297 US8875012B1 (en) | 2013-04-30 | 2013-04-30 | Front-end tool for displaying diagnostic information to facilitate web page development |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/874,297 US8875012B1 (en) | 2013-04-30 | 2013-04-30 | Front-end tool for displaying diagnostic information to facilitate web page development |
Publications (2)
Publication Number | Publication Date |
---|---|
US8875012B1 US8875012B1 (en) | 2014-10-28 |
US20140325399A1 true US20140325399A1 (en) | 2014-10-30 |
Family
ID=51752908
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/874,297 Active US8875012B1 (en) | 2013-04-30 | 2013-04-30 | Front-end tool for displaying diagnostic information to facilitate web page development |
Country Status (1)
Country | Link |
---|---|
US (1) | US8875012B1 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106686037A (en) * | 2015-11-09 | 2017-05-17 | 广州市动景计算机科技有限公司 | Page detecting method, device, equipment and system |
US9740668B1 (en) * | 2013-03-14 | 2017-08-22 | Amazon Technologies, Inc. | Plotting webpage loading speeds and altering webpages and a service based on latency and pixel density |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10909475B2 (en) * | 2013-05-09 | 2021-02-02 | TravelPass, Group, LLC | Systems and methods for minimizing travel costs for multi-night stays |
US10277703B2 (en) | 2015-07-22 | 2019-04-30 | International Business Machines Corporation | Optimizing bandwidth usage and improving performance for web page caching |
CN107229655B (en) * | 2016-03-25 | 2021-05-25 | 北京京东尚科信息技术有限公司 | Updating method, device and system of page static file |
US10462239B1 (en) * | 2016-07-29 | 2019-10-29 | Microsoft Technology Licensing, Llc | Flexible units for experimentation |
CN106100936A (en) * | 2016-08-10 | 2016-11-09 | 乐视控股(北京)有限公司 | Webpage method for monitoring performance and device and the webserver, client |
CN108536805A (en) * | 2018-04-04 | 2018-09-14 | 平安科技(深圳)有限公司 | web access method and device |
CN111045615A (en) * | 2019-12-19 | 2020-04-21 | 厦门商集网络科技有限责任公司 | Method and system for printing JS template customized at browser end |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001344105A (en) * | 2000-03-31 | 2001-12-14 | Hitachi Software Eng Co Ltd | Web application developing method, development support system, and memory medium storing program related to this method |
US7155489B1 (en) * | 2000-06-28 | 2006-12-26 | Microsoft Corporation | Acquiring web page information without commitment to downloading the web page |
US7653706B2 (en) * | 2000-07-19 | 2010-01-26 | Akamai Technologies, Inc. | Dynamic image delivery system |
US7792919B2 (en) * | 2005-04-15 | 2010-09-07 | Microsoft Corporation | Methods and apparatus for performing diagnostics of web applications and services |
US7941394B2 (en) * | 2005-06-03 | 2011-05-10 | Adobe Systems Incorporated | User interface providing summary information or a status pane in a web analytics tool |
US7975019B1 (en) * | 2005-07-15 | 2011-07-05 | Amazon Technologies, Inc. | Dynamic supplementation of rendered web pages with content supplied by a separate source |
US7822596B2 (en) * | 2005-12-05 | 2010-10-26 | Microsoft Corporation | Flexible display translation |
US8160909B2 (en) * | 2007-02-06 | 2012-04-17 | Digital River, Inc. | Site optimizer |
US20080228920A1 (en) * | 2007-03-16 | 2008-09-18 | Souders Steven K | System and method for resource aggregation and distribution |
US8271836B2 (en) * | 2007-09-27 | 2012-09-18 | Microsoft Corporation | Capturing diagnostics in web browser applications |
US8347269B2 (en) * | 2007-09-28 | 2013-01-01 | International Business Machines Corporation | Method, system and computer program for debugging software applications in a web environment |
US9064021B2 (en) * | 2008-10-02 | 2015-06-23 | Liveramp, Inc. | Data source attribution system |
US9141344B2 (en) * | 2010-02-05 | 2015-09-22 | Red Hat, Inc. | Hover help support for application source code |
US8341464B2 (en) * | 2010-04-28 | 2012-12-25 | Microsoft Corporation | Diagnostic dashboard for web pages |
US8566654B2 (en) * | 2010-08-13 | 2013-10-22 | Salesforce.Com, Inc. | Debugging site errors by an admin as a guest user in a multi-tenant database environment |
-
2013
- 2013-04-30 US US13/874,297 patent/US8875012B1/en active Active
Non-Patent Citations (1)
Title |
---|
Oney, Stephen, and Brad Myers. "FireCrystal: Understanding interactive behaviors in dynamic web pages." In Visual Languages and Human-Centric Computing, 2009. VL/HCC 2009. IEEE Symposium on, pp. 105-108. IEEE, 2009. * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9740668B1 (en) * | 2013-03-14 | 2017-08-22 | Amazon Technologies, Inc. | Plotting webpage loading speeds and altering webpages and a service based on latency and pixel density |
CN106686037A (en) * | 2015-11-09 | 2017-05-17 | 广州市动景计算机科技有限公司 | Page detecting method, device, equipment and system |
Also Published As
Publication number | Publication date |
---|---|
US8875012B1 (en) | 2014-10-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8875012B1 (en) | Front-end tool for displaying diagnostic information to facilitate web page development | |
US11886402B2 (en) | Systems, methods, and media for dynamically generating informational content | |
US11838350B2 (en) | Techniques for identifying issues related to digital interactions on websites | |
US10140314B2 (en) | Previews for contextual searches | |
US20180232389A1 (en) | Generating file usage information | |
US10169374B2 (en) | Image searches using image frame context | |
US10423672B2 (en) | Network resource-specific search assistance | |
US8910074B2 (en) | System and method for performing auto scroll | |
US9460167B2 (en) | Transition from first search results environment to second search results environment | |
US20120016857A1 (en) | System and method for providing search engine optimization analysis | |
JP2018518726A (en) | Information retrieval navigation method and apparatus | |
RU2583764C1 (en) | Method of processing request for user to access web resource and server | |
US20190018884A1 (en) | Multiple entity aware typeahead in searches | |
US8756292B2 (en) | Smart cache learning mechanism in enterprise portal navigation | |
US10909170B2 (en) | Method for processing and rendering feed-like based images for mobile devices | |
US12041142B2 (en) | Analyzing website performance | |
Aljedaani et al. | A comparison of bugs across the ios and android platforms of two open source cross platform browser apps | |
WO2019013834A1 (en) | Index aware typeahead in searches | |
US20160292218A1 (en) | Extensible data query scenario definition and consumption | |
US11250084B2 (en) | Method and system for generating content from search results rendered by a search engine | |
US9298784B1 (en) | Searching inside items | |
WO2015176415A1 (en) | Method and apparatus for providing target information for user | |
Haapala | Analyzing and Improving the Loading Performance of Large-scale Websites on Mobile Devices | |
US11790019B2 (en) | Searching and sharing content with an overlaid interface | |
Saed et al. | Loading time effects: A case study of Malaysian Examination Syndicate web portal |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: LINKEDIN CORPORATION, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:PUCHTA, GEORG;BASAVARAJ, VEENA;LEPPERT, JOHNATHAN;REEL/FRAME:030680/0210 Effective date: 20130430 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
AS | Assignment |
Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:LINKEDIN CORPORATION;REEL/FRAME:044746/0001 Effective date: 20171018 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551) Year of fee payment: 4 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 8 |