EP1424779A1 - Selectif compression de données pour une transmission de données sur le web - Google Patents

Selectif compression de données pour une transmission de données sur le web Download PDF

Info

Publication number
EP1424779A1
EP1424779A1 EP03256973A EP03256973A EP1424779A1 EP 1424779 A1 EP1424779 A1 EP 1424779A1 EP 03256973 A EP03256973 A EP 03256973A EP 03256973 A EP03256973 A EP 03256973A EP 1424779 A1 EP1424779 A1 EP 1424779A1
Authority
EP
European Patent Office
Prior art keywords
data
data component
client
server
compressing
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.)
Withdrawn
Application number
EP03256973A
Other languages
German (de)
English (en)
Inventor
Theodore R. Ernst
Greg Dugi
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BMC Software Inc
Original Assignee
BMC Software Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by BMC Software Inc filed Critical BMC Software Inc
Publication of EP1424779A1 publication Critical patent/EP1424779A1/fr
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/303Terminal profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Definitions

  • the invention relates generally to data compression and, more particularly but not by way of limitation, to the selective compression of data based on user-specified controls in an web-based operating environment.
  • Intranets Today, a significant portion of many businesses interact with the public is by way of the Internet in the form of World Wide Web browsing. In addition, most businesses have web servers with content targeted at their own employees, often referred to as "intranets.” The same is true of educational institutions and government agencies. The popularity and growth of browsing the Internet and intranets have led to performance issues and user frustration with timeouts or long wait times to receive the information requested via their browsers.
  • TCP/IP Transport Control Protocol/Internet Protocol
  • TCP/IP performance is generally excellent over lightly loaded networks (30% or lower utilization).
  • network devices such as bridges, switches and routers (which generally have very limited buffering and queuing capabilities) respond to congestion by discarding those frames or packets they cannot process.
  • the host systems that initiated transmission of the discarded frames or packets retransmit the lost data, thus adding to the congestion.
  • HTTP HyperText Transfer Protocol
  • One approach to addressing network congestion has been the development of hardware/firmware devices such as load balancers and traffic shapers - devices that attempt to regulate network loads and traffic patterns.
  • Another approach to addressing network congestion has been to provide users with increased bandwidth in the form of faster backbones. In the intranet environment, this has meant the deployment of high-speed corporate backbones. In the Internet environment, this has meant the deployment of larger bandwidth public accessible backbones and digital subscriber lines (DSL) and cable modems for consumer use.
  • Yet another approach to addressing network congestion is to compress data before it is transmitted. For example, a host computer system's web server may be configured to compress all of the data it transmits via a given protocol (e.g., the HTTP protocol) or to an identified destination.
  • a given protocol e.g., the HTTP protocol
  • Web server applications that support data compression in this way include the Internet Information Services (IIS) from the Microsoft corporation, the iPlanet web server supported by Sun Microsystems and the Apache web server available through the open-source software project and supported by the Apache Software Foundation.
  • IIS Internet Information Services
  • iPlanet web server supported by Sun Microsystems
  • Apache web server available through the open-source software project and supported by the Apache Software Foundation.
  • Most currently available web servers support "gzip" compression (a compression routine freely available through the GNU Project), while all known web browsers currently available support gzip decompression.
  • PATROL IP/Optimizer utilized a two-sided approach wherein server application 100 running on server computer system 105, communicated via link 110 with client application 115 running on client computer system 120. All communications of a specified type (e.g., communications related to a specified application or IP traffic) between server 105 and client 120 passed through applications 100 and 115 and could, therefore, be selectively compressed based on user specified criteria. For example, all data except specified file types (e.g., image files or files stored in compressed format) could be compressed.
  • a specified type e.g., communications related to a specified application or IP traffic
  • IP/Optimizer Another feature of IP/Optimizer's two-sided approach was that both server application 100 and client application 115 could time-stamp the packets/frames they transmitted via link 110 . This, in turn, allowed IP/Optimizer to determine the speed of link 110. If it was determined during data packet/frame transmission between server 105 and client 120 that compression was not saving transmission time, the remainder of the data packets/frames that would have been compressed (in accordance with user specified criteria) were sent uncompressed. While a two-sided approach to selective data compression allows a large degree of control by the user, it does not scale to large networks such as the Internet (or even large corporate intranets) because it is not always practical to load client application 115 on each new client computer system. This is particularly true in the Internet environment where the "user" is a consumer.
  • proxy server computer system 200 is inserted between web server computer system 205 and client computer system 210 in a manner that is transparent to a user of client 210. That is, a user directs their communication to server 205 without knowledge that proxy server 200 is in place.
  • This approach allows proxy server 200 to selectively compress data flowing from server 205 to client 210 in a manner similar to that of a system in accordance with FIG. 1.
  • One drawback to this approach is that the purchase, installation and maintenance of proxy server 200 represents a significant cost.
  • proxy server 200 represents a single point failure. That is, if proxy server 200 fails (due to hardware and/or software malfunctions) server 205 goes off-line with respect to client 210.
  • the invention provides a method to selectively compress data transmitted between server and client computer systems.
  • the method includes receiving a request for data from a web-based application executing on the client computer, determining a plurality of characteristics associated with the client, passing the request to an application executing on the server, receiving a response from the server (the response having a data component), selectively compressing the data component based on a match between at least one of the client characteristics and at least one attribute associated with the data component, and transmitting the selectively compressed data component to the client.
  • the method may be stored in any media that is readable and executable by a computer system.
  • a method executing on a server computer to selectively compress data comprising: receiving a request for data from a web-based application executing on a client computer, the client being different from the server; determining a plurality of characteristics associated with the client; passing the request to an application executing on the server; receiving a response from the server, the response having a data component, the data component having attributes; selectively compressing the data component based on a match between at least one of the client characteristics and at least one of the data component attributes; and transmitting the selectively compressed data component to the client.
  • the act of receiving a request for data may comprise receiving a request for data from an application using a web-based communication protocol.
  • the web-based communication protocol may be a HyperText Transport Protocol (HTTP).
  • HTTP HyperText Transport Protocol
  • the act of receiving a request in the HyperText Transport Protocol may comprise receiving a request for data from a web-browser application executing on the client.
  • the act of receiving a request for data may comprise receiving a request for data from an application-server application.
  • the act of determining a plurality of characteristics associated with the web-based application comprises determining an Internet address associated with the client, a Uniform Resource Locator associated with the data and whether the web-based application can uncompress data.
  • the act of passing the request to an application may comprise passing the request to a web-server application.
  • the act of receiving a response from the server may further comprise identifying one or more data component attributes selected from the group consisting of size and data type.
  • the act of selectively compressing the data component may comprise any of; compressing the data component if an Internet address associated with the client is an unrestricted Internet address; compressing the data component if the data component is associated with an unrestricted Uniform Resource Locator; compressing the data component if a processor designated to compress the data component has a utilization factor below a specified threshold; compressing the data component if a size attribute of the data component indicates the data component is larger than a minimum specified size; or compressing the data component if a client characteristic indicates the web-based application is capable of decompressing data.
  • the act of transmitting the selectively compressed data component to the client may comprise: compressing the data component in accordance with a compression routine acceptable to the web-based application; and transmitting the compressed data component to the web-based application.
  • a method according to the invention may further comprise recording compression information associated with the data component in a first storage.
  • the act of recording compression information in the first storage may comprise: recording a uniform resource locator (URL) associated with the data component; recording a value indicative of a size of the compressed data component; and recording a value indicative of the time required to compress the data component.
  • URL uniform resource locator
  • the method may then comprise: storing the compressed data component in a second storage; and recording, in the first storage, an value indicative of a location of the compressed data component in the second storage.
  • the act of storing the compressed data component in the second storage may comprise: determining if the second storage has sufficient room to store the compressed data component; and if it does not, removing a previously stored compressed data component from the second storage, modifying a value in the first storage indicative of the location of the previously compressed data component to indicate the previously compressed data component has been removed from the second storage, and storing the compressed data component in the second storage.
  • the act of determining a plurality of characteristics associated with the client may comprise determining a transmission rate between the server and client.
  • the act of selectively compressing the data component may comprise determining whether the data component has been previously compressed and, if it has: determining a first time indicative of the time required to compress the data component; determining a second time indicative of the time required transmit the compressed data component; determining a third time indicative of the time required to transmit the data component; and compressing the data component if the sum of the first time and the second time is less than the third time by at least a specified amount.
  • the specified amount may be zero (0) or may be greater than zero.
  • the act of selectively compressing the data component and transmitting the selectively compressed data component to the client may comprise determining whether the data component has been previously compressed and, if it has, whether it is available and, if it is, then transmitting the previously compressed data component to the client.
  • the invention further provides a program storage device, or a data carrier, readable by a programmable control device, comprising instructions stored on the program storage device or data carrier for causing a server computer to: receive a request for data from a web-based application executing on a client computer, the client computer being different from the server computer; determine a plurality of characteristics associated with the client; pass the request to an application executing on the server; receive a response from the server, the response having a data component, the data component having attributes; selectively compress the data component based on a match between at least one of the client characteristics and at least one of the data component attributes; and transmit the selectively compressed data component to the client.
  • a server computer to: receive a request for data from a web-based application executing on a client computer, the client computer being different from the server computer; determine a plurality of characteristics associated with the client; pass the request to an application executing on the server; receive a response from the server, the response having a data component, the data component having attributes; selectively
  • the instructions to receive a request for data from a web-based application may comprise instructions to receive a request for data from an application using a HyperText Transport Protocol (HTTP).
  • HTTP HyperText Transport Protocol
  • the instructions to determine a plurality of characteristics associated with the web-based application may comprise instructions to determine an Internet address associated with the client and a Uniform Resource Locator associated with the data.
  • the instructions to receive a response from the server may comprise instructions to identify a size attribute of the data component.
  • the instructions to selectively compress the data component may comprise any of:
  • the instructions to transmit the selectively compressed data component to the client may comprise instructions to record compression information associated with the data component in a first storage.
  • the instructions to determine a plurality of characteristics associated with the client may comprise instructions to determine a transmission rate between the server and client.
  • the instructions to selectively compress the data component may comprise instructions to determine whether the data component has been previously compressed and, if it has: determine a first time indicative of the time required to compress the data component; determine a second time indicative of the time required transmit the compressed data component; determine a third time indicative of the time required to transmit the data component; and compress the data component if the sum of the first time and the second time is less than the third time by at least a specified amount.
  • the instructions to compress the data component may be performed if the specified amount is zero (0), or is greater than zero.
  • a method to selectively compress data comprising: receiving, at a server computer system, a request for data from a client computer system, the client computer system being different from the server computer system; determining a uniform resource locator (URL) associated with the requested data and a transmission rate between the server and client computer systems; passing the request for data to a web-server application executing on the server computer system; receiving a response from the web-server application, the response having a data component, the data component having a size; determining if the data component has previously been compressed and, if it has, further determining if the compressed data component is available and, if it is, transmitting the compressed data component to the client, else, determining a first time indicative of the time required to compress the data component, a second time indicative of the time required to transmit the compressed data component to the client, a third time indicative of the time required to transmit the data component to the client, and compressing the data component if the sum of the first time and the second time
  • the act of selectively compressing the data component further comprises compressing the data component if an Internet address associated with the client computer system is an unrestricted Internet address.
  • the act of selectively compressing the data component may further comprise compressing the data component if the data component has a size larger than a minimum specified value.
  • the act of selectively compressing the data component may further comprise compressing the data component if a processor designated to for compress the data component has a utilization factor below a specified maximum value.
  • the invention relates generally to data compression and more particularly to server-side only techniques for the selective compression of data based on user-specified controls in an web-based operating environment.
  • server-side only refers to techniques that rely on the execution of routines on a server computer system and, in particular, do not rely on or require the installation and operation of special purpose software or hardware on a client computer system specifically designed to operate with those routines.
  • system 300 in accordance with one embodiment of the invention comprises server computer system 305 on which web server application 310 and selective compression routine 315 execute.
  • routine 315 is logically positioned between web server application 310 and client computer system 320 executing conventional web browser application 325. Accordingly, data requests from browser 325 are received and passed to web server 310 by routine 315. Similarly, data returned by web server 310 in response to such requests are first received by routine 315 before being sent to browser 325 (with or without modification as described herein).
  • communication link 330 may be a dedicated point-to-point connection, a local or wide area network such as an intranet or the Internet and that any of these "communication links" may employ wired or wireless technology. While the following descriptions of routine 315 assume client-server communications via the HyperText Transport Protocol (HTTP), such descriptions are illustrative only and are not to be considered limiting in any respect.
  • HTTP HyperText Transport Protocol
  • routine 315 begins by determining certain client 320 /browser 325 information (block 400 ). (See discussion below regarding FIG. 5.) For example, routine 315 may determine the approximate data transfer rate between browser 325 and web server 310 during connection set-up operations. In addition, routine 315 may ascertain if browser 325 supports decompression utilities. When routine 315 receives web server 310' s response to browser 325' s request for data (block 405 ), it determines whether the data contained therein is eligible for compression (decision block 410 ). (See discussion below regarding FIG.
  • data less than a specified size, or data already in a compressed format, or of a specified file type, or requested from one or more specified locations (e.g., URL patterns, see discussion below), or directed to one or more specified Internet addresses or data requested by a specified browser application (e.g., the Netscape browser of a specified version) may be designated "not eligible.” If the data is not eligible for compression (the "NO" prong of decision block 410 ), the data received from web server 310 during the acts of block 405 is passed or relayed to browser 325 without further processing (block 415 ).
  • routine 315 next determines if it has previously compressed the data and, if so, if the compressed data is available for transmission to browser 325 (decision block 420 ). (See discussion below regarding FIG. 7.) In one embodiment, routine 315 retains knowledge about, for example, whether it has previously compressed a specified data object, and, if so, the amount of compression achieved, the amount of time it took to perform the compression and whether that compressed data object is currently available for transmission to browser 325 . If previously compressed data is available (the "YES" prong of decision block 420 ), the compressed data is sent to browser 325 (block 425 ).
  • a further check is made to determine if the central processor unit executing routine 315 and/or designated to compress data for routine 315 is below a specified utilization (decision block 430).
  • the check of block 430 may be performed to ensure that server 305 (or a functional unit associated with server 305) is not tasked to perform a computationally intensive job (the act of compressing data) if it is already heavily utilized for other tasks.
  • a utilization threshold may be set at a specified percentage of the processor's total capacity. In some embodiments, this threshold may be set at the user's discretion anywhere from 0% to 100%. For example 85%.
  • routine 315' s processor's utilization is at or above the specified threshold (the "YES" prong of decision block 430)
  • data received from web server 310 during the acts of block 405 is passed or relayed to browser 325 without further processing (block 415).
  • routine 315' s processor's utilization is below the specified threshold (the "NO" prong of decision block 430 )
  • routine 315 determines if it has previously compressed the data (decision block 435 ). (See discussion below regarding FIGS. 7 and 8.) If routine 315 has previously compressed the data and that compressed data is currently not available (the "YES" prong of decision block 435 ), it then determines if compressing the data would provide a transmission benefit (block 440 ). (See discussion below regarding FIG.
  • routine 315 can determine if the time it will take to compress the data object provides an acceptable speed-up in transmission (decision block 440 ). In one embodiment, if the time saved in transmitting the compressed data does not save more time (at the determined transmission rate between web server 310 and browser 325 ) than it takes to compress the data (the "NO" prong of decision block 440 ), the data received from web server 310 during the acts of block 405 is passed or relayed to browser 325 without further processing (block 415).
  • routine 315 determines that the time saved in transmitting the compressed data is acceptable/beneficial (the "YES" prong of decision block 440 ) or if the data received from web server 310 has not yet been compressed (the "NO" prong of decision block 435 ), routine 315 compresses the data (block 445 ).
  • routine 315 may use any compression routine/technique, for historical reasons most current browsers (e.g., browser 325 ) incorporate the ability to decompress data in gzip format. After compressing the data, routine 315 may update a metadata store it uses to track what data objects its has compressed (block 450 ) and then transmit the compressed data to browser 325 (block 455 ). (See discussion below regarding FIGS. 7 and 8.)
  • Figure 5 illustrates how one embodiment of routine 315 begins the capture of client information (see block 400 in FIG. 4) during establishment of an HTTP connection between browser 325 and web server 310 .
  • HTTP connection setup is initiated when browser 325 transmits Connection Request message 500 to web server 310 via routine 315.
  • routine 315 initiates a timer (505).
  • Web server 310 responds to Connection Request message 500 by issuing Request Acknowledgement message 510.
  • Browser 325 in turn, responds by issuing Connection Acknowledgement message 515 .
  • an HTTP connection between browser 325 and web server 310 is established.
  • routine 315 issues Get message 520 to initiate transfer of the data for which the connection was established.
  • routine 315 stops the timer (525).
  • the interval measured by the timer approximates the roundtrip time between browser 325 and web server 310 and may be used to determine a transfer rate (i.e., bytes/second) because routine 315 also has knowledge of the size of each of Connection Request 500 , Request Acknowledgement 510 , Connection Acknowledgement 515 and Get 520 messages.
  • a transfer rate i.e., bytes/second
  • routine 315 may also capture certain additional client 320 /browser 325 information ( 525). For example, the Internet (IP) address associated with client 320 may be captured at the time Connection Request message 500 is received.
  • IP Internet
  • HTTP Get message 520 can be used to identify: (1) the data being sought in terms of its URL; (2) the highest HTTP level supported by browser 325 ; (3) browser 325 type; (4) what file types browser 325 can accommodate; (5) whether browser 325 supports decompression via, for example, gzip or tar utilities; and (6) other capabilities such as, for example, platform configuration and software version information.
  • Figure 6 illustrates how one embodiment of routine 315 determines if data 530 (see FIG. 5) received from web server 310 is eligible for compression (see block 410 in FIG. 4).
  • an initial check is made to determine if the IP address associated with client 320 has been excluded by the user (decision block 600 ). For example, the user may not want to compress any data transmitted to IP address AAA.1.1.1 or the block of IP addresses identified by 1B.*.*.* (i.e., all IP addresses beginning with 1B). If client 320 's IP address has been excluded or restricted as described above (the "YES" prong of decision block 600 ), control passes to block 415 in FIG. 4.
  • a second check is made to determine if data 530 is from a specified one or more locations (decision block 605 ). That is, the invention allows the user to identify one or more restricted URLs. For example, a user may not want to compress data requested from the location identified by the URL http://www.bmc.com/abc or from any destinations identified via the URL pattern http://www.bmc.com/* (meaning any destination at the bmc.com web site). If data 530 's URL has been excluded or restricted as described above (the "YES" prong of decision block 605 ), control passes to block 415 in FIG. 4.
  • a third check is made to determine if data 530 is compressible (decision block 610).
  • image files such as Graphic Image Format (GIF) and Joint Photographic Experts Group (JPEG) files are not typically compressible and are, therefore, not generally processed further.
  • archive files such as "zip” and "tar” files are already in compressed form and are, therefore, not generally processed further.
  • a user may specify that certain file types (e.g., Portable Document Format, PDF, files) are not to be compressed. If data 530 is not compressible (the "NO" prong of decision block 610 ), control passes to block 415 in FIG. 4.
  • a fourth check is made to determine if data 530 is at least a minimum size (decision block 615 ). This test is performed to avoid compressing files that are so small that the computational overhead of compressing them exceeds the time savings obtained in their transmission.
  • An illustrative "minimum size" is 200 bytes. If the size of data 530 is less than or equal to a minimum specified size (the "NO" prong of decision block 615 ), control passes to block 415 in FIG. 4.
  • a fifth check is made to determine if browser 325 is capable of handling compressed data (decision block 620 ). If browser 325 cannot handle compressed data (the "NO" prong of decision block 620 ), control passes to block 415 in FIG. 4. If browser 325 can handle compressed data (the "YES" prong of decision block 620 ), a sixth check is made to determine if the user has restricted compressed transmission to the specific type of browser making the request (decision block 625 ). For example, a user may specify that compressed data is not to be sent to version 6 of browsers provided by the Netscape Corporation.
  • browser 325 is a type (i.e., has a "signature") that has been excluded by the user (the "YES" prong of decision block 625), control passes to block 415 in FIG. 4. If browser 325 is of a type not excluded by the user (the "NO" prong of decision block 625), control passes to decision block 420 in FIG. 4.
  • One of ordinary skill in the art will recognize that one or more additional tests may also be implemented or that fewer than the described tests can be performed or that the tests may be run in various orders. For example, if certain browser types are known to be unable to handle certain data in compressed form (even if they can handle compressed data in general), a test may be performed for this/these conditions.
  • routine 315 maintains, and has access to, three (3) storage areas: connection database 700, data cache 705 and URL table 710 (see, for example, the discussion above regarding FIG. 4 at blocks 420 and 435- 450 ).
  • Connection database 700 is used by routine 315 to track each user request for data (i.e., an HTTP connection in accordance with 500, 510, 515 and 520 of FIG. 5). For example, unique identifiers may be assigned to each requesting agent (e.g., browser 325 in FIG. 3).
  • this storage is where routine 315 typically records the transmission rate determined in accordance with block 400 in FIG. 4 and discussed above regarding FIG. 5.
  • Data cache 705 is used by routine 315 to store data received from web server 310 that has been compressed.
  • URL table 710 is used to store metadata associated with each compressed data object and, in one embodiment, is organized in accordance with the data object's URL value.
  • each URL table entry 715 identifies a data object's URL 720 , the time it took to compress the data object 725 , the data object's size before compression 730 , the data object's size after compression 735 and the location of the compressed data object 740 in data cache 705 .
  • each data object that has been compressed is stored in data cache 705 and each compressed object has an entry in URL table 710.
  • data cache 705 may be smaller than needed to store all compressed data objects and/or URL table 710 may be smaller than needed to store all of the compressed data object's metadata entries. In the latter case, it may be necessary to periodically remove some entries from data cache 705 and/or URL table 710 to make room for a new entry. Techniques to do this are known in the art as cache management techniques.
  • URL table 710 may contain an entry for a data object that has been removed (flushed) from data cache 705 . Accordingly, when a data object is removed from data cache 705 , its entry in URL table 710 is either removed or, in a preferred embodiment, modified to note this.
  • the "removed" object's URL table's entry may have its location field 740 set to a value indicating that the object no longer is available.
  • URL table entries corresponding to data objects that have been removed from data cache 705 may be beneficial during the acts of blocks 420, 435 and 440 of FIG. 4.
  • routine 315 makes use of the storage structures of FIG. 7 to determine if a compressed data object is available for transmission (block 420 in FIG. 4), whether the data object being processed has been previously compressed (block 435 in FIG. 4) and whether compressing the data object will provide a benefit (block 440 in FIG. 4).
  • the acts of block 420 to determine if a compressed data object is available comprise determining if the data object has a URL table entry (decision block 800 ). If the data object does not have a URL table entry (the "NO" prong of decision block 800 ), either the data object has never been compressed before or, if it has, both its data cache and URL table entries have been purged (see discussion above).
  • control is passed to block 430 in FIG. 4. If the data object has a URL table entry (the "YES" prong of decision block 800 ), a check is made to determine if the URL table entry has an associated data cache entry (decision block 805 ). If the data object's URL table entry (i.e., its location field 740 ) does not identify a compressed object in data cache 705 (the "NO" prong of decision block 805 ), control is passed to block 430 in FIG. 4. If, on the other hand, the data object's URL table identifies an entry in data cache 705 (the "YES" prong of decision block 805 ), control passes to block 425 in FIG. 4.
  • routine 315 determines if the data object has a URL table entry.
  • routine 315 determines if the data object has a URL table entry.
  • the acts of block 440 to determine if there would be a speed benefit to compressing the current data objects comprise determining the time it would take to compress the data object (block 900 ). For example, the data object's URL table entry's compression time field 725 provides this information.
  • the time needed to transmit the compressed data object based on the transmission rate calculated in accordance with block 400 of FIG. 4 and recorded in connection database 700 is determined (block 905 ). A similar calculation is performed to determine the time needed to transmit the uncompressed data object (block 910).
  • control is passed to block 445 in FIG. 4. If the calculated time savings does not meet the specified level (the "NO" prong of decision block 915 ), control is passed to block 415 in FIG. 4. It is noted, that the acts of block 440 (and FIG. 9) are only performed if the data object being processed has a corresponding URL table entry but no data cache entry.
  • the data being transmitted from web server 310 to browser 325 (e.g., data 530 of FIG. 5) was dynamically generated, it is not stored in data cache 705 and an entry for the data object is not stored in URL table 710 . That is, the acts of block 450 (see FIG. 4) are not performed for dynamically generated data objects.
  • dynamically generated refers to data (e.g., data 530 ) whose content is uniquely generated by the responding application (e.g., web server 310 ) in answer to a user query (e.g., Get message 520 ) and which may change from query to query.
  • data 530 may comprise a dynamically generated HyperText Markup Language (HTML) web-page.
  • HTML HyperText Markup Language
  • One benefit of a compression routine in accordance with the invention is that only server-side installation and execution is required. This can provide significant advantage over techniques and technologies that require and rely on the operation of companion software and/or hardware on client side computer systems. This advantage is particularly relevant in distributed environments such as the Internet in which a provider organization (e.g., a business operating computer server 305 in FIG. 3) provides services and/or data to an unknown number of users via standard Internet messaging protocols.
  • a provider organization e.g., a business operating computer server 305 in FIG. 3
  • Another benefit of a compression routine in accordance with the invention is that only data that a user (e.g., the operator of computer server 305 ) determines to be beneficial is compressed.
  • Yet another benefit of a compression routine in accordance with the invention is that characteristics other than the data itself may be considered to determine if it is beneficial or desirable to compress data.
  • the IP address of the destination computer server may be considered as can the inherent capabilities of the receiving application (e.g., a web browser). It has been found that selective compression in accordance with the techniques described herein, provide a twenty percent (20%) to fifty percent (50%) improvement in transmission speed to client applications in a web-based environment.
  • computer server 305 in FIG. 3 may be a mainframe computer system, a high-performance workstation computer system, a personal computer system or a specially designed device to interact with web-based communications (e.g., via link 330 ).
  • any of these embodiments may execute any desired operating system.
  • acts in accordance with FIGS. 4, 5, 6, 8 and 9 may be performed by a programmable control device executing instructions organized into a program module (e.g., routine 315 ).
  • a programmable control device may be a single computer processor, a plurality of computer processors coupled by a communications link, or a custom designed state machine.
  • Custom designed state machines may be embodied in a hardware device such as a printed circuit board comprising discrete logic, integrated circuits, or specially designed application specific integrated circuits (ASICs).
  • Storage devices suitable for tangibly embodying program instructions include all forms of non-volatile memory including, but not limited to: semiconductor memory devices such as electrically programmable read only memory (EPROM), electrically erasable programmable read only memory (EEPROM), and flash devices; magnetic disks (fixed, floppy, and removable); other magnetic media such as tape; and optical media such as CD-ROM disks.
  • connection database 700, data cache 705 and URL table 710 may be embodied in one or more physical storage devices such as, for example, dynamic and static random access memory (DRAM and SRAM) devices.
  • DRAM and SRAM dynamic and static random access memory
  • the size of each of connection database 700, data cache 705 and URL table 710 is an implementation detail, but that the sizes chosen will impact the number of entries that may be retained in each and, as a consequence, the need or desirability of various memory management techniques.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Information Transfer Between Computers (AREA)
EP03256973A 2002-11-26 2003-11-04 Selectif compression de données pour une transmission de données sur le web Withdrawn EP1424779A1 (fr)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US305220 2002-11-26
US10/305,220 US20040103215A1 (en) 2002-11-26 2002-11-26 Selective compression of web-based data transmissions

Publications (1)

Publication Number Publication Date
EP1424779A1 true EP1424779A1 (fr) 2004-06-02

Family

ID=32298047

Family Applications (1)

Application Number Title Priority Date Filing Date
EP03256973A Withdrawn EP1424779A1 (fr) 2002-11-26 2003-11-04 Selectif compression de données pour une transmission de données sur le web

Country Status (2)

Country Link
US (1) US20040103215A1 (fr)
EP (1) EP1424779A1 (fr)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007000493A1 (fr) * 2005-06-29 2007-01-04 Ascia Oy Agencement de compression de donnees
US7639700B1 (en) 2003-01-29 2009-12-29 F5 Networks, Inc. Architecture for efficient utilization and optimum performance of a network
US7783781B1 (en) 2005-08-05 2010-08-24 F5 Networks, Inc. Adaptive compression
US7882084B1 (en) 2005-12-30 2011-02-01 F5 Networks, Inc. Compression of data transmitted over a network
US8159940B1 (en) 2004-11-11 2012-04-17 F5 Networks, Inc. Obtaining high availability using TCP proxy devices
US8275909B1 (en) 2005-12-07 2012-09-25 F5 Networks, Inc. Adaptive compression
US8417833B1 (en) 2006-11-29 2013-04-09 F5 Networks, Inc. Metacodec for optimizing network data compression based on comparison of write and read rates

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7305490B2 (en) * 2003-07-29 2007-12-04 Hewlett-Packard Development Company, L.P. Preparing electronic data for transmission
US7398325B2 (en) * 2003-09-04 2008-07-08 International Business Machines Corporation Header compression in messages
US20050158038A1 (en) * 2004-01-20 2005-07-21 International Business Machines Corporation Lowering the quality level of a selected program
US20050234927A1 (en) * 2004-04-01 2005-10-20 Oracle International Corporation Efficient Transfer of Data Between a Database Server and a Database Client
US20050224579A1 (en) * 2004-04-08 2005-10-13 Steve Adler System and methods for generating bar codes in a distributed computing environment
US20060224700A1 (en) * 2005-03-15 2006-10-05 Microsoft Corporation Multipart response generation
US7941525B1 (en) 2006-04-01 2011-05-10 ClickTale, Ltd. Method and system for monitoring an activity of a user
US8117315B2 (en) * 2007-07-20 2012-02-14 International Business Machines Corporation Apparatus, system, and method for archiving small objects to improve the loading time of a web page
US8391148B1 (en) * 2007-07-30 2013-03-05 Rockstar Consortion USLP Method and apparatus for Ethernet data compression
US20090059872A1 (en) * 2007-08-31 2009-03-05 Symbol Technologies, Inc. Wireless dynamic rate adaptation algorithm
JP5565412B2 (ja) * 2009-06-22 2014-08-06 日本電気株式会社 処理ノード選択システム、情報処理ノード、処理ノード決定方法およびプログラム
US8892608B2 (en) * 2010-07-30 2014-11-18 Apollo Education Group, Inc. Highly reliable cross-session web application instrumentation
CN102523246B (zh) * 2011-11-23 2015-07-01 陈刚 一种云计算处理系统及方法
US20160011816A1 (en) * 2014-07-09 2016-01-14 Nexenta Systems, Inc. Method to optimize inline i/o processing in tiered distributed storage systems
US10244250B2 (en) 2015-05-29 2019-03-26 Samsung Electronics Co., Ltd. Variable-rate texture compression using fixed-rate codes
US9847936B2 (en) * 2015-06-25 2017-12-19 Intel Corporation Apparatus and method for hardware-accelerated packet processing
US10169360B2 (en) * 2015-11-11 2019-01-01 International Business Machines Corporation Mixing software based compression requests with hardware accelerated requests
JP6940771B2 (ja) * 2017-12-27 2021-09-29 富士通株式会社 データ送信プログラム、データ送信装置、及びデータ送信方法
CN108599774B (zh) * 2018-04-26 2022-03-08 郑州云海信息技术有限公司 一种压缩方法、系统、装置及计算机可读存储介质
US11249987B2 (en) * 2019-08-14 2022-02-15 Advanced New Technologies Co., Ltd. Data storage in blockchain-type ledger
US10958732B1 (en) * 2020-02-03 2021-03-23 Michael Jeffrey Procopio Serverless archive file creation and extraction system and serverless, in-browser, cloud storage enabled methods for opening, decompressing, and creating archive files

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001055904A1 (fr) * 2000-01-31 2001-08-02 X/Net Associates, Inc. Systeme et procede pour la compression de donnees en continu
WO2002010929A1 (fr) * 2000-07-28 2002-02-07 Remote Communications Inc. Systeme et procede permettant de prendre en charge un contenu compresse sur un reseau informatique
WO2002031668A1 (fr) * 2000-10-06 2002-04-18 Redline Networks, Inc. Procede et systeme destines a accelerer le transfert de donnees sur un reseau
US6442588B1 (en) * 1998-08-20 2002-08-27 At&T Corp. Method of administering a dynamic filtering firewall
US20020170065A1 (en) * 2001-05-08 2002-11-14 Pinnick Skyler D. Apparatus and method of managing compression of video and delivery of video over the internet

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2170065A (en) * 1935-11-09 1939-08-22 Permutit Co Making carbonaceous zeolites
US6101170A (en) * 1996-09-27 2000-08-08 Cabletron Systems, Inc. Secure fast packet switch having improved memory utilization

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6442588B1 (en) * 1998-08-20 2002-08-27 At&T Corp. Method of administering a dynamic filtering firewall
WO2001055904A1 (fr) * 2000-01-31 2001-08-02 X/Net Associates, Inc. Systeme et procede pour la compression de donnees en continu
WO2002010929A1 (fr) * 2000-07-28 2002-02-07 Remote Communications Inc. Systeme et procede permettant de prendre en charge un contenu compresse sur un reseau informatique
WO2002031668A1 (fr) * 2000-10-06 2002-04-18 Redline Networks, Inc. Procede et systeme destines a accelerer le transfert de donnees sur un reseau
US20020170065A1 (en) * 2001-05-08 2002-11-14 Pinnick Skyler D. Apparatus and method of managing compression of video and delivery of video over the internet

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7639700B1 (en) 2003-01-29 2009-12-29 F5 Networks, Inc. Architecture for efficient utilization and optimum performance of a network
US8432799B1 (en) 2004-11-11 2013-04-30 F5 Networks, Inc. Obtaining high availability using TCP proxy devices
US8804512B1 (en) 2004-11-11 2014-08-12 F5 Networks, Inc. Obtaining high availability using TCP proxy devices
US8159940B1 (en) 2004-11-11 2012-04-17 F5 Networks, Inc. Obtaining high availability using TCP proxy devices
US8203949B1 (en) 2004-11-11 2012-06-19 F5 Networks, Inc. Obtaining high availability using TCP proxy devices
WO2007000493A1 (fr) * 2005-06-29 2007-01-04 Ascia Oy Agencement de compression de donnees
US7783781B1 (en) 2005-08-05 2010-08-24 F5 Networks, Inc. Adaptive compression
US8516156B1 (en) 2005-08-05 2013-08-20 F5 Networks, Inc. Adaptive compression
US8499100B1 (en) 2005-12-07 2013-07-30 F5 Networks, Inc. Adaptive compression
US8275909B1 (en) 2005-12-07 2012-09-25 F5 Networks, Inc. Adaptive compression
US7882084B1 (en) 2005-12-30 2011-02-01 F5 Networks, Inc. Compression of data transmitted over a network
US9002806B1 (en) 2005-12-30 2015-04-07 F5 Networks, Inc. Compression of data transmitted over a network
US8417833B1 (en) 2006-11-29 2013-04-09 F5 Networks, Inc. Metacodec for optimizing network data compression based on comparison of write and read rates
US9210239B1 (en) 2006-11-29 2015-12-08 F5 Networks, Inc. Metacodec for optimizing network data compression based on comparison of write and read rates

Also Published As

Publication number Publication date
US20040103215A1 (en) 2004-05-27

Similar Documents

Publication Publication Date Title
EP1424779A1 (fr) Selectif compression de données pour une transmission de données sur le web
US5978849A (en) Systems, methods, and computer program products for establishing TCP connections using information from closed TCP connections in time-wait state
US7711956B2 (en) Information processing apparatus, information system, proxy processing method, and program and recording medium therefor
US6601098B1 (en) Technique for measuring round-trip latency to computing devices requiring no client-side proxy presence
US7437451B2 (en) System and method for collecting desired information for network transactions at the kernel level
US8131823B2 (en) System and method for reading ahead of content
US7200141B2 (en) Bandwidth detection in a heterogeneous network with parallel and proxy modes
RU2549135C2 (ru) Система и способ для обеспечения более быстрой и более эффективной передачи данных
JP3980596B2 (ja) サーバを遠隔かつ動的に構成する方法およびシステム
JP2004342069A (ja) データ・キャッシュ方法およびデータ・キャッシュ装置
Zhang et al. On wide area network optimization
US8341285B2 (en) Method and system for transferring files
JP2004535631A (ja) 通信ネットワークからユーザへ情報を送る時間を減らすシステムと方法
KR20000057718A (ko) 자각-개시 푸시를 제공하기 위한 방법 및 장치
WO2009021318A1 (fr) Expiration de cache dans un environnement à serveurs multiples
US20120117253A1 (en) Methods for reducing latency in network connections and systems thereof
US20040221059A1 (en) Shared socket connections for efficient data transmission
US6892224B2 (en) Network interface device capable of independent provision of web content
JP2003141002A (ja) Url長変換システム及びそのプログラム
WO2019243890A2 (fr) Transmission de données multiport par l'intermédiaire du protocole udp
US7860129B2 (en) Device, system and method for data transfer optimization
US20060155819A1 (en) Methods and system for using caches
US20060268851A1 (en) Method and apparatus for address resolution protocol persistent in a network data processing system
CN116150513A (zh) 数据处理方法、装置、电子设备及计算机可读存储介质
US20050086390A1 (en) Efficient packet desegmentation on a network adapter

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LI LU MC NL PT RO SE SI SK TR

AX Request for extension of the european patent

Extension state: AL LT LV MK

17P Request for examination filed

Effective date: 20041126

AKX Designation fees paid

Designated state(s): DE FR GB

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 20070531