System and method for dynamically adjusting a refresh interval

A method for providing information to a client device includes receiving a first status request from the client device and communicating status information to the client device in response. The status information specifies a first refresh interval. The method also includes detecting an input of the client device and determining a second refresh interval in response to detecting the input. The method further includes receiving a second status request from the client device after the expiration of the first refresh interval and communicating updated status information to the client device in response to the second status request. The updated status information specifies the second refresh interval.

TECHNICAL FIELD OF THE INVENTION

This invention relates in general to electronic communications, and more particularly to dynamically adjusting a status information refresh interval.

BACKGROUND OF THE INVENTION

Many web-based applications are designed to monitor the status of a remote component, such as a web-server, and to display the results in near real-time. Such applications often include some mechanism for conveying updated status information from the remote component to the monitoring application. A common technique for updating the status information displayed by the monitoring application is to design the monitoring application to repeatedly query the remote component.

For example, the Hyper-Text Transfer Protocol (HTTP) includes “refresh timer” semantics to inform monitoring applications, such as web browsers, how often to reload status information. Web servers provide configuration files and Application Program Interfaces (“APIs”) that can be designed to specify a refresh interval for a particular webpage. When status information is requested by a web browser, the web server specifies this value in the HTTP header information for that webpage. After loading the webpage, the web browser begins timing the refresh interval. When the refresh interval expires, the web browser reloads the webpage to acquire updated information.

When several applications are monitoring a particular web server, the web server may become overwhelmed by status requests if the refresh interval is set too short. On the other hand, if the refresh interval is too long, the information provided by the monitoring applications may become so outdated as to be useless. Furthermore, a user relying on the information may need the information updated more frequently under certain circumstance and less frequently under others.

SUMMARY OF THE INVENTION

In accordance with the present invention, the disadvantages and problems associated with providing status information to terminal devices have been substantially reduced or eliminated. In particular, a method and system are disclosed for providing status information with a dynamically adjusted refresh interval.

In accordance with a particular embodiment of the present invention, a method for providing information to a client device includes receiving a first status request from the client device and communicating status information to the client device in response to the first status request. The status information specifies a first refresh interval. The method also includes detecting an input of the client device and determining a second refresh interval in response to detecting the input. The method further includes receiving a second status request from the client device after the expiration of the first refresh interval and communicating updated status information to the client device in response to the second status request. The updated status information specifies the second refresh interval.

In accordance with another embodiment of the present invention, a method for providing information to a client device includes receiving a first status request from a client device and communicating status information to the client device in response to the first status request. The status information specifies a first refresh interval. The method also includes determining a second refresh interval based on a network load and receiving a second status request from the client device after the expiration of the first refresh interval. The method further includes communicating updated status information to the client device in response to the second status request. The updated status information specifies the second refresh interval.

Technical advantages of certain embodiments of the present invention include a process for providing dynamic refresh intervals that adjust to changing conditions on a communication network.

Other technical advantages of certain embodiments of the present invention include providing a refresh interval that is responsive to user input, providing a refresh interval that adapts to network characteristics, and providing a refresh interval that reflects a user priority of a user of the relevant client device.

DETAILED DESCRIPTION OF THE INVENTION

FIG. 1illustrates a communication system10that includes a network appliance20, a network30, and one or more client devices40. Client devices40obtain information from network appliance20by requesting status information status information50from network appliance20.

Communication system10may employ a “pull”, or polling, scheme for providing updated information to client devices40. For example, in a particular embodiment, communication system10may utilize the Hyper-text Transport Protocol (HTTP) that includes “refresh timer” semantics, which network appliance20may use to inform client devices40how often to refresh status information50. In such an embodiment, network appliance20may indicate a refresh interval value in an HTTP header of status information50. Client device40may then set a timer for the desired refresh interval and reload status information50or alternate status information, such as updated status information55, based on the refresh interval.

By dynamically adjusting the refresh interval transmitted to client devices40, in response to fluctuations in network activity, changes in status information data, and/or other considerations, network appliance20may balance responsiveness and accuracy with scalability. Additionally, by responding to input at client devices40, network appliance20may also be all to set the refresh interval to more accurately serve the current needs of users. Furthermore, by adjusting the refresh interval based on a user priority associated with a user of a particular client device4, network appliance20may also be able to provide differentiated quality of service to two or more client devices40.

Client devices40provide users access to content generated, retrieved, or stored by network appliance20, for example, by loading status information50generated by network appliance20. Client devices40may represent personal computer(s), web-enabled personal data assistants (PDAs), internet protocol (IP) telephones, or any other suitable communication device capable of retrieving information from network appliance20. In particular embodiments, client devices40may also be capable of accepting input from users and communicating the input to network appliance20. In general, client devices40may include any combination of hardware and/or software suitable for providing the functionality described below. For example, in a particular embodiment, client device40hosts a browser application operable to load status information50from network appliance20and display content from the status information50to a user.

Network appliance20generates, stores, retrieves status information50and/or forwards status information50to client devices40in response to status requests from client devices40. Network appliance20may represent a conventional server, a collection of servers, a personal computer (“PC”), or any other suitable component capable of obtaining, hosting, or serving status information50and/or communicating status information50to client devices40over network30. Although, for the sake of simplicity, the description below describes network appliance20as “generating” status information50and updated status information55, network appliance20may generate status information, retrieve status information from remote components, access status information stored in a local memory, and/or obtain status information50and updated status information55in any other suitable manner. Additionally, network appliance20may represent an appliance that receives status information55destined for client device20and modifies status information55, such as by altering refresh intervals included in status information55. After modification, network appliance20may transmit status information55to client device40. Alternatively, network appliance20may represent a component or module of client device40operable to generate refresh intervals for client device40.

Network30represents any hardware and/or software configured to communicate information in the form of packets, cells, frames, segments, or other portions of data. Network30may include routers, hubs, switches, gateways, or any other suitable components in any suitable form or arrangement. Network30may also include any combination of public or private communications equipment such as elements of a public switched telephone network (PSTN), a global computer network such as the Internet, a local area network (LAN), a wide area network (WAN), a Personal Area Network (PAN), a Local Operating Network (LON), or other appropriate communications equipment.

Status information50and updated status information55represent files, messages, or other forms of electronic information suitable for communication to client devices40over network30. For example, status information50may represent eXtensible Markup Language (XML) and/or Hyper-Text Markup Language (HTML) files generated by network appliance20. Moreover, status information50may be transmitted to client device40as a plurality of files, messages datagrams, packets, and/or any other suitable arrangement of information. For example, network appliance20may transmit status information50to client device40as a plurality of Internet Protocol (IP) packets. Client device40may then reconstruct an HTML file from the IP packets and display the HTML file to a user of client device40.

Each set of status information50and updated status information55may additionally specify a refresh interval. The refresh interval indicates to a particular client device40receiving status information50a time period after which that particular client device40should request updated status information55from network appliance20. In a particular embodiment, status information50and updated status information55represent HTML files and the refresh interval is specified in a header of the HTML files. In general, status information50and any one or more sets of updated status information55may include identical information, vary only in refresh interval, or represent substantially different collections of information.

In operation, client device40transmits a status request to network appliance20. The status request may represent any form of communication appropriate for client device20to request information from network appliance20based on the configuration of communication system10. For example, in a particular embodiment, the status request may represent an HTTP request, such as a “POST” or “GET” request.

In response to the status request, network appliance20determines a refresh interval. This process is described in more detail below with respect toFIG. 2. Network appliance20then generates status information50. Status information50specifies the refresh interval and may include additional content requested by the user. Network appliance20then communicates status information50to client device40.

After receiving status information50, client device40may provide information in status information50to a user of client device40. For example, if status information50represents an HTML file, client device40may display contents of the HTML file on a screen of client device40. Client device40also begins timing the refresh interval.

Client device40sends, at a time determined based on the refresh interval, another status request to network appliance20requesting updated status information55. For example, client device40may send another status request to network appliance20requesting updated status information55when the refresh interval expires. Alternatively, client device40may predict the expiration of the refresh interval and transmit another status request slightly before the refresh interval expires. As another example, client device40may monitor the timing of the refresh interval periodically and may not detect the expiration of the refresh interval until slightly after expiration occurs. In such an embodiment, client device40may transmit another status request slightly after expiration of the refresh interval. In general, client device40may transmit another status request at any appropriate time based on the refresh interval.

When the refresh interval has expired, client device40sends another status request to network appliance20requesting updated status information55. Network appliance20then determines a refresh interval for updated status information55. Depending on the circumstances, as discussed further below, network appliance20may or may not determine a refresh interval for updated status information55that is different from the refresh interval determined by network appliance20for status information50. Network appliance20generates updated status information55that specifies this refresh interval. As discussed above, updated status information55may be identical to status information50, differ only in the specified refresh interval, or may be substantially different from status information50in both refresh interval and information content. Network appliance20then communicates updated status information55to client device40.

This process may be repeated indefinitely with client device40sending another status request at the expiration of the refresh interval specified in the most recently received updated status information55. Moreover, depending on relevant factors, the refresh interval specified by subsequent versions of updated status information55may differ from the refresh interval specified by status information50and/or updated status information55. By adjusting the refresh interval specified by status information50, network appliance20can control the frequency with which client device40requests updated status information55. Network appliance20may set a refresh interval that limits a network load experienced by network appliance20but still provides client device40with sufficiently updated information. Furthermore, particular embodiments of network appliance20are capable of adjusting the refresh interval based on input from client devices40, as described in more detail with respect toFIGS. 2 and 3.

Additionally, although the above discussion describes an embodiment of communication system10that determines refresh intervals when a status request is received, network appliance20may instead determine a new refresh interval in response to events occurring on communication system10and then store the new refresh interval until the next status request. When client device40subsequently sends network appliance20a status request, network appliance20retrieves the new refresh interval and generates updated status information55that includes the new refresh interval. After generating updated status information55, web server transmits updated status information55to client device40as described above. In general, network appliance20may generate a new refresh interval at any appropriate time based on the configuration of communication system10.

Although the description below focuses, for the purpose of illustration, on a particular embodiment of communication system10in which network appliance20represents a web server that determines the refresh interval during generation of status information55, network appliance20may represent any appropriate device capable of providing the refresh interval to client device in any appropriate manner. For example, as noted above, network appliance20may represent a forwarding engine that receives status information55from another element on network30. Network appliance20may then modify a refresh interval included in status information55or incorporating a refresh interval in status information55before transmitting status information55to client device40.

Additionally, network appliance20may also represent a module or component of client device40. For example, network appliance20may represent an interface of client device20that receives status information55and modifies refresh intervals of status information55or adds refresh intervals to status information55. Alternatively, network element20may represent a component of client device40that generates refresh intervals for client device20independent of the receipt of status information55.

FIG. 2is a block diagram showing detailed components of network appliance20, according to a particular embodiment. Network appliance20includes a processor220, a memory230, and a network interface210. Processor220generates, obtains, or otherwise acquires status information50and updated status information55using information stored in memory230and communicates status information50and updated status information55to client devices40through network interface210.

Processor220may be a general purpose computer, dedicated microprocessor, or other processing device capable of generating and communicating electronic information. Examples of processor220include application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), digital signal processors (DSPs) and any other suitable specific or general purpose processors.

Memory230may comprise any collection and arrangement of volatile or non-volatile, local or remote devices suitable for storing data, such as for example random access memory (RAM) devices, read only memory (ROM) devices, magnetic storage devices, optical storage devices, or any other suitable data storage devices.

Network interface210receives status requests from client devices40and transmits status information50and updated status information55to client devices40. In a particular embodiment processor220provides, in whole or in part, the functionality of interface210, and interface210and processor220represent the same component. In general, network interface210may include any combination of hardware and/or software suitable for providing the functionality described below.

In operation, network interface210receives a status request from client device40. As noted above, the status requests may represent HTTP requests or communication of any other form appropriate for requesting information from network appliance20. Network interface210communicates the status request to processor220or otherwise notifies processor220that network interface210received the status request.

In accordance with a particular embodiment, in response to receiving the status request, processor220determines a refresh interval. Processor220may determine the refresh interval based on a default interval stored in memory230, a previous refresh interval stored in memory230, a priority level associated with a user of client device40, a number of client devices40currently requesting status information50from network appliance20, input received from client device40, network activity on communication system10and/or any other suitable dynamic or predetermined factor, consideration, or circumstance. In a particular embodiment, processor220determines a refresh interval of thirty seconds for status information50.

As one example, processor220may adjust the refresh interval based on an input received from client device40. Network appliance20may determine that a user of client device40has activated an input of client device40and determine the refresh interval based on activation of the input. For example, processor220may determine that activation of the input warrants network appliance20more frequently updating status information50provided to client device40. Processor220may select a shorter refresh interval as a result.FIG. 3illustrates an example of this process.

As another example, processor220may determine the refresh interval based on a network load on communication system10. The network load may represent a number of requests detected by network appliance20for all status information50offered by network appliance20, a number client devices40that have requested status information50within a predetermined time period, a measure of information currently being exchanged on network30, a number of users currently logged-in on communication system10, or any other appropriate measure of the load on communication system10, or any one or more components of communication system10. Based on the network load, processor220may then select a refresh interval that limits the estimated number of status requests that network appliance20will receive for updated status information55over a predetermined period of time. For example, network appliance20may be configured to maintain an average of ten status requests a minute for status information50. Thus, if five users are presently requesting status information50and updated status information55from network appliance20, network appliance20may select a refresh interval of thirty seconds for all status information generated. When the number of users grows to ten, network appliance20may then select a new refresh interval of one minute to limit the number of status requests network appliance20receives per minute.

As yet another example, processor220may detect a change in an update rate associated with information included in50and determine the refresh interval based on the change in update rate. For example, where status information50provides client device40with stock prices or scores from a sporting event, processor220may detect a period of heavy trading or the start of halftime, respectively, which may affect the rate at which the relevant information will change. In general, processor220may be configured to detect any increases or decreases in the rate at which information associated with status information50and updated status information55is changing and to adjust the refresh interval accordingly. For example, processor220may select a greater refresh interval during periods of low trading or during halftime because the stock prices and scores, respectively, are not changing and the information provided to client device40in previous status information50does not need to be updated.

As another example, processor220may determine the refresh interval based on a user priority associated with client device40or with a user of client device40. In a particular embodiment, one or more client devices40may have an associated user priority. By adjusting the refresh interval based on the user priority, particular embodiments of network appliance20may provide differentiated quality of service to client devices40. For example, network appliance20may generate status information50as part of a conference call between client devices40. Each user of a client device40may be designated as an administrator or a participant of the conference call. Network appliance20may then determine the refresh interval based on the user priority associated with a client device40requesting status information50or updated status information55. Network appliance20may provide the administrator with shorter refresh intervals and, as a result, improve quality of service during the conference call. In particular embodiments, the user priority may designate a particular user as an internal user or an external user with respect to an entity that operates network appliance20, as a preferred user or a normal user, or may classify client devices40or users of client devices40in any other appropriate manner.

As yet another example, processor220may determine the refresh interval based on a request type of the status request. For example, processor220may be configured to identify the processing bandwidth that will be used to respond to a particular type of status request based on, for example, the particular status information50requested, the type of application requesting status information50, or any other appropriate factor. Processor220may select a longer refresh interval for status requests with significant processing needs and/or a shorter refresh interval for status requests with minimal processing needs. In general, processor220may determine the refresh interval based on any other suitable type, categorization, and/or characteristic of the status request.

Additionally, processor220may determine the refresh interval based on a plurality of these factors, considerations, and/or circumstances. For example, processor220may identify a user priority for a user of client device40, such as, for conference call applications, administrator or participant. The user priority may identify any appropriate classification or characteristic of the user of client device40. When processor220receives a status request from that particular client device40processor may determine the refresh interval based on both the user priority associated with client device40and the network load on communication system10. As a result, if the network load exceeds a maximum value, processor220may increase the refresh interval for a particular client device40associated with a participant but may not determine a new refresh interval for a particular client device40associated with an administrator of communication system10.

In a particular embodiment, determining the refresh interval may include reading a refresh interval from a particular location in memory230. For example, processor220may determine the refresh interval by reading a value from a current interval address250of memory230. In such a case, processor220may then modify the refresh interval by reading a new value from a predetermined address in memory210and writing the new value to current interval address250. For example, processor220may respond to an increase in the network load on communication system10by reading a heavy load interval from a heavy load address256in memory230and writing the heavy load interval to current interval address250.

After determining the refresh interval, processor220generates status information50, which specifies the refresh interval. In a particular embodiment, processor220hosts a common gateway script (CGI) script that determines the refresh interval and generates status information50. Processor220communicates status information50to network interface210. Network interface210then communicates status information50to client device40. As noted above, processor220may repeat this process indefinitely as processor220receives additional status requests.

FIG. 3illustrates operation of an example embodiment of communication system10. In the illustrated embodiment, client devices40are represented by personal computers (PCs)300that support Voice over IP (VoIP) telephonic communication between a plurality of users and an administrator. In the illustrated example, network appliance20hosts a telephonic conference for PCs300using conventional VoIP techniques and generates initial conference status information350and updated conference status information355. For purposes of illustration, operation is described with respect to a particular PC300, PC300a.

In this embodiment, initial conference status information350and updated conference status information355represent HTML files that graphically convey conference status information to PCs300, including a count of active participants, names and titles of active participants, a mute status of a particular PC, and/or any other suitable status information. As conference status information changes updated conference status information355provide updated conference status information.

Additionally, in the illustrated embodiment, predetermined locations in memory230, specifically default interval address252and preferred interval address254, store values for refresh intervals to be used in response to particular events occurring on communication system10, as described further below. Moreover, network appliance20generates initial conference status information350and updated conference status information355for a particular PC300a-dusing the value currently stored in a current interval address250a-dassociated with the requesting PC300a-d. Thus, by reading values from particular locations in memory210and writing these values to current interval address250a, network appliance20can adjust the refresh interval used in initial conference status information350and updated conference status information355.

In operation, network appliance20may initiate a conference call between PCs300using conventional methods or any other suitable techniques. In initiating the conference call, network appliance20establishes a VoIP channel between PCs300a-d. Network appliance20also reads a default interval value from default interval address252in memory230and writes the value to current interval address250a. In the illustrated embodiment, the default interval value is one minute.

PC300arequests and receives an initial conference status information350that network appliance20generates for that PC300. As noted above, network appliance20generates an initial conference status information350that contains conference status information, including the names and titles of conference participants and the mute status of each participant. Furthermore, initial conference status information350specifies a first refresh interval based on the value stored in current interval address250a.

After generating an initial conference status information350for PC300a, network appliance20transmits initial conference status information350to PC300a. PC300amay display information included in initial conference status information350to a user of PC300a. PC300aalso begins timing the refresh interval. Meanwhile, users of PCs300communicate with one another using a voice channel established between PCs300. When PC300adetermines that the refresh interval has expired, PC300arequests an updated conference status information355from network appliance20. Network appliance20generates updated conference status information355, which again specifies a refresh interval based on the value stored in current interval address250aand communicates updated conference status information355to PC300a. This process may continue indefinitely.

During the conference call, network appliance20adjusts the refresh interval specified in updated conference status information355based on the activation of a preferred input310of PC300. Depending on the configuration of communication system10, examples of preferred input may include, but are not limited to, inputs associated with mute, disconnect, or other features provided by PC300a. In the illustrated embodiment, preferred input310represents a hyperlink associated with a mute feature of PCs300. The user of a particular PC300may activate the mute feature for that PC300by clicking on the hyperlink.

In response to detecting the activation of preferred input310, network appliance20reads a preferred interval value from a preferred interval address254in memory230and stores the preferred interval value in current interval address250a. In the illustrated embodiment, the preferred interval value is assumed to be five seconds.

When PC300atransmits a status request to network appliance20after network appliance20detects activation of the preferred input, network appliance20again generates updated conference status information355specifying a refresh interval based on the value in current interval address250a. Because current interval address now holds preferred interval value, updated conference status information355will specify a shorter refresh interval. As a result, PC300awill send status requests more often and update conference status information provided to the user more frequently.

Network appliance20may later decide to return to the original refresh interval. For example, after detecting activation of preferred input310, network appliance20may then monitor elements of network appliance20, PC300a, and other components of communication system10to determine when a service feature associated with preferred input310is activated. When network appliance20detects the activation of the service feature, network appliance20may read the default interval value from default interval address252and store the default interval value in current interval address250a. When PC300asends a status request to network appliance20after network appliance20detects the activation of the service feature, network appliance20generates updated conference status information355, which specifies a refresh interval based on the default interval value. In doing so, network appliance20adjusts the rate at which PC300aupdates conference status information back to the original rate.

For example, if the user chooses to initiate a separate conversation and activates a mute input of PC300a, such as by clicking the hyperlink associated with a mute feature, activation of the mute feature may take a non-trivial amount of time depending on the network load and other factors. The user may choose to remain silent until certain that the mute feature has been activated. However, the user may not wish to stay silent any longer than necessary. Thus, the user may desire updates more frequently than normal during this period, so that the user may be informed as soon as possible that the mute feature has been successfully activated. By setting the refresh interval in updated conference status information355to the preferred refresh interval, network appliance20causes PC300ato submit status requests to network appliance20more frequently. Thus, the conference status information that the user receives is updated more frequently as the user desires.

Continuing with the mute example, network appliance20may then monitor elements of network appliance20and/or other components of communication system10to determine when the mute feature is activated for PC300a. If PC300asubmits a status request to network appliance20after network appliance20determines that the mute feature has been activated, network appliance20may then transmit to PC300aupdated conference status information355that includes updated conference status information indicating that the mute feature of PC300ahas been activated. Updated conference status information355also specifies the default refresh interval, and thus, the rate at which PC300aupdates conference status information will return to the default rate.

FIG. 4also illustrates operation of an example embodiment of communication system10. In addition to adjusting refresh intervals to change the frequency at which client devices40request updated status information55, particular embodiments of communication system10may adjust refresh intervals to change the timing of status requests. In the illustrated embodiment, network appliance20stores information, previous interval information360, describing the refresh intervals included in status information50and updated status information55previously transmitted to client devices40. In response to a status request, network appliance20determines a refresh interval based on previous interval information360. Previous interval information360may represent expiration times associated with previously generated refresh intervals, counters specifying a number of refresh intervals set to expire during a particular time period, or any other appropriate information describing previously generated refresh intervals.FIG. 4illustrates an embodiment of communication system10that generates refresh intervals based on previous interval information360and includes network appliance20and a plurality of client devices40.

In operation, in this embodiment, network appliance20receives a status request from a particular client device40. In response to the status request, network appliance20generates a refresh interval. Network appliance20may generate the refresh interval based, at least in part, on previous interval information360. Furthermore, network appliance20may generate the refresh interval based in any appropriate manner on previous interval information360. After generating the refresh interval, network appliance20may transmit status information50that includes the refresh interval to client device20as discussed above.

As an example of how network appliance20may utilize previous interval information20during operation, network appliance20may store expiration times for the refresh intervals included in status information50and updated status information55transmitted by network appliance20. The expiration times represent any suitable time value determined based on the magnitude of the previously generated refresh intervals. As a result, each expiration time may specify an expected expiration time for a previously generated refresh interval, an expected delivery time for a status request received as a result of the expiration of a previously generated refresh interval, or any other suitable time value determined based on a previously generated refresh interval.

In the illustrated embodiment, server20stores these expiration times as stored expiration times370. Network appliance20may then determine refresh intervals for status requests based on stored expiration times370in an effort to more evenly schedule the future status requests. For example, when network appliance20receives a status request, network appliance20may generate a default refresh interval as described above with respect toFIG. 2. Network appliance20may also determine a default expiration time that identifies the expiration time of that default refresh interval. Network appliance20may then compare the default expiration time to stored expiration times370. If more than a predetermined number of stored expiration times370fall within a predetermined time range of the default expiration time, network appliance20may determine a new refresh interval.

As an illustration, assume the default refresh interval is thirty seconds, the maximum value is ten, and the predetermined range is one second. Thus, in response to status requests, network appliance20determines a default refresh interval that has a default expiration time thirty seconds later. Network appliance20then compares the default expiration time to stored expiration times370to determine whether ten or more of stored expiration times370are within one second of the default expiration time or, in other words, if ten or more of stored expiration times370are associated with refresh intervals that will expire between twenty-nine to thirty-one seconds from that point. If so, network appliance20may generate a new refresh interval with a new expiration time.

As another example, network appliance20may store previous interval information360that includes a plurality of counters380. Each counter380may be associated with a particular time range and may represent a number of status requests that network appliance20expects to receive during the time range associated with counter380. Counters380may be associated with a time range defined relative to the current time or based on a range of absolute time values. For example, in a particular embodiment, a particular counter380may be assigned to track a number of status information50that have been transmitted with refresh intervals five to seven seconds from the current time or another suitable reference time, and another counter380may be assigned to track a number of status information50that have been transmitted with refresh intervals from seven to nine seconds from the current time. Additional counters380may be assigned to track other time ranges. In general, network appliance20may have any suitable number of counters380assigned to track any suitable size and number of time ranges. In a particular embodiment, network appliance20maintains counters380associated with 250 millisecond time ranges, with sufficient counters380to span a two-minute time period.

When network appliance20receives a status request, network appliance20may generate a refresh interval based on counters380. In a particular embodiment, network appliance20generates a default refresh interval, as described above with respect toFIG. 2. In generating the default refresh interval, network appliance20may consider user priority, current network load, the processing demands of the status request, or any other appropriate factors, as discussed above.

After generating the default refresh interval, network appliance20compares the default refresh interval to a particular counter380associated with expiration times similar to that of the default refresh interval. For example, if network appliance20generates a default refresh interval of thirty seconds and counters380are configured to monitor 250 millisecond ranges, network appliance20may access a count of a particular counter380associated with a “30-30.25 seconds” range, representing the number of previously transmitted status information50that included a refresh interval set to expire in the next 30 to 30.25 seconds. Network appliance20may then use the count of the relevant counter380in any appropriate way to determine an appropriate refresh interval for the current status request.

In a particular embodiment, network appliance20determines whether the count of the appropriate counter380is greater than a maximum value. If so, network appliance20may adjust the default refresh interval in any appropriate manner. Depending on the configuration of network appliance20, network appliance20may increment or decrement default refresh interval in a suitable manner to generate a new refresh interval with a new expiration time. In a particular embodiment, web server may determine whether to increment or decrement based on the type of status request. If the status request requested a particular status information50associated with a shorter refresh interval, network appliance20may decrement the refresh interval. Alternatively, if the status request requested a particular status information50associated with a longer refresh interval, network appliance20may increment the refresh interval. In general, however, network appliance20may determine an adjustment for the refresh interval in any appropriate manner.

In a particular embodiment, network appliance20may then compare the new refresh interval to a second counter380associated with expiration times similar to that of the new refresh interval. If the second counter380is also greater than a maximum value, network appliance20may then repeat the process generating a third refresh interval by again incrementing or decrementing the new refresh interval.

Network appliance20may repeat this process until network appliance20identifies a refresh interval associated with a particular counter380having a count less than the maximum value. Alternatively, network appliance20may increment or decrement the refresh interval over a limited range and, if network appliance20is unable to identify a counter380within that range that also has a value below the maximum value, network appliance20may use a refresh interval associated with the counter380having the lowest value. For example, network appliance20may increment or decrement the refresh interval up to a predetermined percentage of the default refresh interval and then choose the refresh interval within that adjustment range that is associated with the lower counter value.

After determining an appropriate refresh interval, network appliance20may adjust the particular counter380associated with the chosen refresh interval. More specifically, network appliance20may determine an expiration time associated with the chosen refresh interval and then identify a counter380associated with that expiration time. For example, if network appliance20used the thirty-second refresh interval discussed above, network appliance20may increment the counter380associated with the “30-30.25 second” time range. Moreover, network appliance20may increment the appropriate counter380by one or may increment the counter by a weighted increment based on the type of status request received and/or on any other suitable factors. For example, if network appliance20determines that the status request is associated with a status information50that requires significant computing power to generate and/or transmit, network appliance20may increment the appropriate counter380by a first amount. If network appliance20determines that the status request is associated with a status information50that requires minimal computing power to generate and/or transmit, network appliance20may increment the appropriate counter380by a second amount, with the second amount being less than the first amount. Thus, network appliance20may be able to adjust counters380to accurately predict the processing bandwidth expected to be used to respond to status requests in each of the upcoming time periods.

After determining a refresh interval and adjusting the appropriate counter380, network appliance20transmits status information50that includes that refresh interval to the requesting client device40. As discussed above, network appliance20may generate this status information50, retrieve this status information50from memory230, or acquire this status information50in any other appropriate manner.

At appropriate times, network appliance20may, depending on the configuration of network appliance20, update counters380to reflect the passage of time. For example, counters380may be adjusted at intervals set based on the time ranges covered by each counter380. If counters380are configured to measure expiration times associated with a 250 millisecond range, network appliance20may update web counters380every 250 milliseconds and may adjust the counters by associating each counter380with a new time range without adjusting the count of any counters380. Thus, network appliance20may retain the count of the 30-30.25 second counter but associate that counter with the 29.75-30 second time range. In a particular embodiment, network appliance20may store counters380in a circular buffer in memory230and maintain a pointer to the first counter in the buffer. Network appliance20may then advance the pointer at appropriate times, such as, for this example, every 250 milliseconds.

Alternatively, network appliance20may maintain stored expiration times370, as described above, and may adjust counters380as particular stored expiration times370move into and out of the range associated with each counter380. For example, for the 30-30.25 second counter described above, network appliance20may, at appropriate times, access stored expiration times370to identify previously generated refresh intervals that are no longer set to expire between 30-30.25 seconds in the future and decrement the 30-30.25 second counter appropriately. Network appliance20may also access stored expiration times370to identify previously generated refresh intervals that are now set to expire 30-30.25 seconds in the future and increment the 30-30.25 second counter appropriately. Network appliance20may repeat this process for all counters380resulting in a series of changes as all previously generated refresh intervals move closer to expiration.

Thus, particular embodiments of network appliance20may allow communication system10to provide improved communication service by predicting and accounting for future status requests in generating refresh intervals. More specifically, particular embodiments of web server are capable of smoothing the distribution of status requests by generating refresh intervals based on previously generated refresh intervals. Although this description presents particular methods for storing and maintaining information on previously generated refresh intervals, particular embodiments of network appliance20may store, update, and utilize previous interval information360in any appropriate manner.

FIG. 5is a flowchart illustrating operation of network appliance20according to a particular embodiment. In the illustrated embodiment, network appliance20adjusts refresh interval in response to the activation of preferred input310associated with a client device40.

At step410, network appliance20reads a default interval value from default interval address252. Network appliance20stores the default interval value in current interval address250at step420. In a particular embodiment, the default interval value corresponds to a refresh interval of thirty seconds. At step430, network appliance20determines whether network appliance20has received a status request from client device40. If network appliance20has received a status request, network appliance20transmits to client device40a status information50that includes a refresh interval based on the value stored in current interval address250at step440. As noted above, network appliance20may generate, read, or otherwise acquire status information50in any appropriate manner before transmitting status information50to client device40.

At step450, network appliance20determines whether the user has activated preferred input310. If the user has activated preferred input310, network appliance20reads the preferred interval value from preferred interval address254at step460. Network appliance20stores the preferred interval value in current interval address250at step470.

At step480, network appliance20determines whether a service feature associated with a preferred input310has been activated. If the service feature has been activated, network appliance20reads the default interval value from default interval address252at step490. At step500, network appliance20stores the default interval value in current interval address250. Network appliance20then determines whether the process is done at510. If so, network appliance20returns to step430. If not, network appliance20ends the process.

FIG. 6is a flowchart illustrating operation of network appliance20according to a particular embodiment. In the illustrated embodiment, network appliance20adjusts the refresh interval in response to the network load. In particular, network appliance20adjusts the refresh interval if the network load exceeds a maximum value.

At step610, network appliance20reads the default interval value from default interval address252. At step620, network appliance20stores default interval value in current interval address250.

At step630, network appliance20determines whether network appliance20has received a status request from client device40. If network appliance20has received a status request, network appliance20transmits to client device40a status information50that includes a refresh interval based on the value stored in current interval address250at step640. As noted above, network appliance20may generate, read, or otherwise acquire status information50in any appropriate manner before transmitting status information50to client device40.

At step650, network appliance20determines whether the network load has increased above the maximum value. If the network load has not increased above the maximum value, network appliance20returns to step630. If the network load has increased above the maximum value, network appliance20reads a heavy load value from heavy load address256at step660. Network appliance20stores the heavy traffic value in current interval address250at step670.

Additionally, network appliance20determines whether network appliance20has received a status request from client device40at step680. If network appliance20has received a status request, network appliance20transmits to client device40status information50that includes a refresh interval based on the value stored in current interval address250at step690.

At step700, network appliance20determines whether the network load has decreased below the maximum value. If the network load has decreased below the maximum value, network appliance20returns to step610. If the network load has not decreased below the maximum value, network appliance20reads the default interval value from default interval address252at step710. At step720, network appliance20stores default interval value in current interval address250. At step730, network appliance20determines, at step730, whether to terminate operation. If so, network appliance20returns to step630. If not, network appliance20ends the process.

Although the present invention has been described with several embodiments, a myriad of changes, variations, alterations, transformations, and modifications may be suggested to one skilled in the art, and it is intended that the present invention encompass such changes, variations, alterations, transformations, and modifications as fall within the scope of the appended claims. For example, although the above description focuses on an embodiment of communication system10that utilizes a particular network appliance20to generate refresh intervals according to the provided methods, the refresh intervals may also be generated by an external flow handler that intercepts and rewrites refresh intervals in transmitted status information50, by a dedicated application running on network appliance20, by an interface provided to client devices40for requesting refresh intervals, and/or by other suitable components or combinations of such using the described methods.