US20070203886A1 - Method and apparatus for accelerating and improving access to network files - Google Patents
Method and apparatus for accelerating and improving access to network files Download PDFInfo
- Publication number
- US20070203886A1 US20070203886A1 US11/729,183 US72918307A US2007203886A1 US 20070203886 A1 US20070203886 A1 US 20070203886A1 US 72918307 A US72918307 A US 72918307A US 2007203886 A1 US2007203886 A1 US 2007203886A1
- Authority
- US
- United States
- Prior art keywords
- file
- parent
- thumbnail
- component
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/04—Protocols for data compression, e.g. ROHC
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/184—Distributed file systems implemented as replicated file system
- G06F16/1844—Management specifically adapted to replicated file systems
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99954—Version management
Definitions
- the present invention relates to accessing network files and more specifically to accelerating and improving access to network files.
- FIG. 1 is a block diagram of a decentralized file system with three computers ( 110 , 120 , and 130 ). Each of these three computers is associated with a corresponding local disk ( 111 , 121 , 131 ). Using a decentralized file system mechanism, computer 110 can access data on disk 131 , which is associated with computer 130 .
- decentralized file systems make file sharing difficult. For example, a department may have files that each person in the department needs to update on a regular basis. If these files are spread among various computer systems, all of those various systems must constantly remain online for the files to be available. Furthermore, because of the critical nature of these files, these files need to be backed up on a regular basis. Backing up files that are spread across many systems can by a complex, and time and resource-consuming, operation.
- a decentralized file system is not convenient for file sharing or managing files.
- FIG. 2 is a block diagram of a centralized file system.
- the shared files reside on the shared disk 240 .
- the computers ( 210 , 220 , and 230 ) have access to the files on shared disk 240 .
- This is a more convenient topology for sharing files among many people and for managing files, for example, by backing up the files.
- problems with centralized file systems For example, if the bandwidth of the connection 250 between the shared disk 240 and the computer 210 is low, then computer 210 will have slow access to the files on shared disk 240 . Worse yet, if connection 250 is down, computer 210 will not be able to access files on shared disk 240 at all.
- FIG. 3 is a block diagram of a hybrid file system.
- the computers ( 310 , 320 , 330 , 350 , and 360 ) share files that are on the shared disks ( 341 and 342 ), but do so by accessing the replicated versions of those files on their local disks ( 311 , 321 , 331 , 351 , and 361 ).
- the data on the shared disks ( 341 and 342 ) is periodically replicated and this replicated data is pushed to the individual computers ( 310 , 320 , 330 , 350 , and 360 ) that are interested in the replicated data. Then the replicated data is stored on the local disks ( 311 , 321 , 331 , 351 , and 361 ).
- Policies are used to determine which computers are interested in what shared files and at what intervals the shared files of interest are to be transmitted to the interested computers. For example, assume there is a slide-presentation file on shared disk 341 that computer 350 is interested in. A policy is set up indicating that this slide-presentation file on shared disk 341 is replicated every 24 hours and sent to computer 350 where the slide-presentation file is then stored on the local disk 351 .
- hybrid file system addresses the problem of access speed because computer 350 accesses the local version.
- the slide-presentation file on shared disk 341 may be transmitted to computer 350 at 2:00 AM and stored locally on disk 351 . Then, at 2:05 AM on the same day, someone modifies the slide-presentation file on shared disk 341 . The person using computer 350 will be using an old version of the slide-presentation file until the next time the slide-presentation file is transmitted to computer 350 .
- a hybrid file system is not an efficient use of resources such as CPU cycles or storage space. Additional CPU cycles are needed to replicate data and transmit the replicated data to the interested parties. Additional storage space is needed to store the various versions of replicated data on all the computers that are interested in this replicated data. The problem of connections having low bandwidth or going down still exists. Policies for replicating the shared data are also needed, increasing the complexity of setup and maintenance.
- One technique for providing data quickly and efficiently is to send a thumbnail of a file to a user rather than sending the entire file.
- the thumbnail has enough information to convey the contents of the full version of the file, but contains less data.
- the thumbnail version is accompanied by address data that allows the full version of the file to be easily retrieved if, after inspecting the thumbnail, a user determines that the full version is needed.
- Another technique for providing data quickly and efficiently is to generate, at a “parent” component that is remote relative to the requester, the difference between a current version of data and a non-current version of data.
- the parent component then transmits this difference to a “child” component that is located closer to the requester.
- the child component uses the difference to update the non-current version of data the requesting user currently has access to, and to provide the current version thus created to the requestor.
- a third technique that can be used in combination with the first two techniques is to use the parent component to compress data (either the entire file, the thumbnail or file difference) before transmitting the data to the child component.
- the child component decompresses the data prior to providing the data to the requester.
- a fourth technique that can be used in combination with the third technique is to securely transmit the compressed data between the parent and child component.
- FIG. 1 is a block diagram of a decentralized file system
- FIG. 2 is a block diagram of a centralized file system
- FIG. 3 is a block diagram of a hybrid file system
- FIG. 4 is a block diagram of system that implements an embodiment of the invention.
- FIG. 5 is a block diagram of a computer system on which embodiments of the invention may be implemented.
- One technique for providing data quickly and efficiently is to send a thumbnail of a file to a user rather than sending the entire file. For example, if the user on computer 350 requests a large slide-presentation file on shared disk 341 , instead of sending the entire slide-presentation file, which could take 10 to 15 minutes, a second file that is smaller than the slide-presentation file and contains content of the slide-presentation file (hereinafter referred to as a “thumbnail”) is sent to the user on computer 350 . When the user looks at the thumbnail, the user can determine based on the information in the thumbnail whether the user is interested in retrieving the entire slide-presentation file.
- This technique provides quicker data transmission because a thumbnail of the slide-presentation file is smaller than the entire slide-presentation file. Furthermore, the user is provided with an opportunity to determine whether the user is interested in the slide-presentation file. This technique is efficient in that CPU cycles and storage space are saved in the event that the user is not interested in the slide-presentation file.
- the parent component resides near a source of files.
- the child component resides near a requestor.
- the requester interacts with the child component as if the child component actually stored the files.
- the child component provides the files to the child by, transparent to the requestor, interacting with the parent component.
- the parent and child components are used to: (1) generate at the parent component the difference (hereinafter referred to as a “delta”) between a current version of data and a non-current version of data that resides on or near the child component, (2) transmit this delta from the parent component to the child component, and (3) use the delta and the non-current version of data at the child component to construct the current version of the data.
- this technique provides quicker transmission of data because the delta that is transmitted between the parent component and the child component is typically significantly smaller than the whole file.
- a third technique which can be used in combination with the first two techniques, is to compress data, such as a thumbnail or a delta, before transmitting this data to the child component. Then, when the compressed data arrives at the child component, the data is decompressed. The decompressed version is provided to the requestor. This technique provides quicker data transmission because compressed data is smaller than the decompressed version of the same data.
- the communication between the parent component and the child component may involve the “least secure” segment of the communication path between the source and the requestor.
- the parent component may communicate with the source through a secure private network
- the child component may communicate with the requestor through a secure private network.
- the parent component may communicate with the child component through a large public network, such as the Internet. Therefore, a fourth technique that can be used in combination with any of the preceding techniques is to securely transmit the data between the parent component and the child component.
- the portion of the communication path that is most vulnerable to attack is rendered secure without requiring either the source or the requestor to be modified to handle the complexities associated with secure communications.
- FIG. 4 is a block diagram of a system where the above four techniques are used.
- the slide-presentation file resides on a file source 400 .
- the file source 400 could be any device capable of storing data. Examples of such devices include but are not limited to a disk, a database, and a file system.
- the parent component 410 is a gateway that understands various features associated with the slide-presentation file, such as the permissions for accessing the slide-presentation file and the “cacheability” of the slide-presentation file.
- the cacheability of a file generally refers to the rules that govern the conditions under which the file is allowed to be cached. For example, some files may be designated as “uncacheable”. Other files may be cacheable for up to a particular amount of time, at which point the cached version “expires”.
- the parent component 410 understands many different protocols and translates those protocols into HTTP. Therefore, many different protocols may be used over connection 411 , whereas HTTP is used for connection 412 . Examples of the different protocols that may be used on connection 411 include but are not limited to storage area network protocols, Network File Server (NFS), fiber channel protocol, SCSI protocol, and Common Internet File System (CIFS).
- NFS Network File Server
- CIFS Common Internet File System
- Child component 420 is any mechanism that is capable of storing (1) the slide-presentation file, (2) part of the slide-presentation file, or (3) information associated with the slide-presentation file. Examples of information associated with the slide-presentation file include but are not limited to (1) a thumbnail of the file, (2) cacheability of the file, (3) access permissions, (4) size of the file, and (5) name of the file.
- the child component 420 could be, among other things: a cache, a micro traffic server in the user's lab top behind the user's browser, a cache in a cable modem, or a cache in a set top box. There is no requirement for the child component 420 to be a cache.
- the requester 430 represents the computer used by a user who is interested in the slide-presentation file on file source 400 . Although this example refers to a slide-presentation file, the file in question could be any kind of file or data.
- a web server can be used as a parent component 410 . Since web servers are capable of indexing files, parent component 410 is used to index the files on the file source 400 . Then requestor 430 is provided with a directory listing of the indexed files on the file source. For example, assume that file source 400 has files foo 1 , foo 2 , and foo 3 . Requestor 430 requests to see the directory listing for the files on file source 400 . Parent component 410 indexes the files foo 1 , foo 2 , and foo 3 and provides a directory listing of these indexed files to requestor 430 . A user on requestor 430 requests a particular file, foo 1 , by clicking on an icon associated with foo 1 in the directory list.
- parent component 410 inspects the size of foo 1 before sending it. If the size of foo 1 exceeds a particular threshold, then parent component 410 does not send foo 1 . Instead, requestor 430 is provided with a thumbnail of foo 1 .
- parent component 410 determines if foo 1 has been modified since foo 1 was last provided to child component 420 . If foo 1 has been modified since last provided to child component 420 , parent component 410 generates a delta between the current version of foo 1 on file source 400 and the version of foo 1 last provided to child component 420 . Parent component 410 transmits this delta to child component 420 . Then child component 420 uses the delta to update foo 1 and transmits the updated foo 1 to requestor 430 .
- Child component 420 can cache foo 1 , thereby increasing speed of access and decreasing CPU cycles in providing foo 1 to requestor 430 .
- child component 420 may respond to a request for foo 1 by (1) determining the version of foo 1 contained in the cache, (2) sending a request for foo 1 to parent component 410 along with information indicating the version of foo 1 contained in the cache.
- Parent component 410 determines that the version in the cache is the current version, then parent component 410 simply tells child component 420 to provide the cached version.
- parent component 410 sends a delta to child component 420 .
- Child component 420 uses the delta and the cached version to construct a copy of the current version. The current version thus created is provided to the requestor.
- a user on requestor 430 clicks on a link for a particular web page, which is a type of file.
- the requested page is on file source 400 .
- the requestor 430 requests the web page using a browser on requestor 430 .
- the request for the web page goes to child component 420 .
- Child component 420 already has the web page.
- Child component 420 may already have the particular web page under a variety of circumstances. For example, child component 420 may already have the web page because requestor 430 or some other requestor previously requested the web page, or because the parent component 410 monitors the web site that contains the web page, and “pushes” the web page (or a delta thereof) to child component 420 whenever the web page is modified.
- the child component 420 determines whether the copy can be supplied to the requestor 430 .
- the operation of determining whether the copy can be supplied to the requester 430 may involve, for example, sending version information to the parent component 410 , and receiving from the parent component a response that indicates whether the version contained in child component 420 is current.
- child component 420 may determine that the version is current because an expiration time associated with the version has not yet been reached. If the version currently stored at child component 420 can be supplied to requestor 430 , then that version is supplied to requestor 430 without requiring the web page be supplied again from source 400 .
- parent component 410 uses the version information from the child component 420 to determine a delta between the new version and the version currently at the child component.
- the parent component 410 sends the delta to the child component 420 , and the child component 420 constructs the current version of the web page based on the delta and the version that is already at the child component 420 .
- parent component 410 monitors the file source 400 for modified files. During one such monitoring operation, parent component 410 determines that the slide-presentation file has been modified. Parent component 410 generates a delta of the slide-presentation file and transmits this delta to child component 420 . The delta thus provided to the child component 420 is said to be “pushed” to the child component 420 because the sending of the delta is not performed in response to any request from the child component 420 .
- Child component 420 updates a local copy of the slide-presentation file using the delta. Sometime later, a user on requester 430 requests to see the same slide-presentation file. When this request for the slide-presentation file arrives at child component 420 , child component 420 transmits the updated slide-presentation file to requestor 430 .
- Any data that is transmitted between the parent component 410 and requestor 430 can be compressed. Examples of this data include but are not limited to (1) a file, (2) part of a file such as a delta, or (3) information associated with the file. Examples of information associated with the file include but are not limited to (1) a thumbnail of the file, (2) cacheability of the file, (3) access permissions to the file, (4) size of the file, and (5) name of the file.
- parent component 410 compresses the delta.
- Child component 420 decompresses the delta and uses the delta to update a local non-current version of the same file.
- the current version of the file, thus constructed, is sent to the requester. Because the decompression of the file is performed by the child component 420 , the data transmission operation is performed more efficiently without requiring the requester 430 itself to handle the complexities of decompression.
- Parent component 410 and child component 420 may be used to transmit data securely in a manner that is transparent to the requestor. For example, parent component 410 compresses a requested file, then transmits the file securely to child component 420 .
- HTTP SSL is one of many mechanisms that may be used to transmit the data securely.
- Child component 420 When the file arrives at child component 420 , the file is received securely and decompressed. Child component 420 may then provide the file to requestor 430 . Thus, requestor 430 may receive a file that has been transmitted securely without having to have any knowledge of or logic to implement the mechanism used in the secure transmission.
- the examples herein described a user on a requestor computer (such as 430 and 440 ) requesting a file
- the requestor computer could instead be an intermediary computer in a string of computers.
- an automated program running on a requesting computer could cause the thumbnail or delta to be generated and transmitted.
- FIG. 5 is a block diagram that illustrates a computer system 500 upon which an embodiment of the invention may be implemented.
- Computer system 500 includes a bus 502 or other communication mechanism for communicating information, and a processor 504 coupled with bus 502 for processing information.
- Computer system 500 also includes a main memory 506 , such as a random access memory (RAM) or other dynamic storage device, coupled to bus 502 for storing information and instructions to be executed by processor 504 .
- Main memory 506 also may be used for storing temporary variables or other intermediate information during execution of instructions to be executed by processor 504 .
- Computer system 500 further includes a read only memory (ROM) 508 or other static storage device coupled to bus 502 for storing static information and instructions for processor 504 .
- ROM read only memory
- a storage device 510 such as a magnetic disk or optical disk, is provided and coupled to bus 502 for storing information and instructions.
- Computer system 500 may be coupled via bus 502 to a display 512 , such as a cathode ray tube (CRT), for displaying information to a computer user.
- a display 512 such as a cathode ray tube (CRT)
- An input device 514 is coupled to bus 502 for communicating information and command selections to processor 504 .
- cursor control 516 is Another type of user input device
- cursor control 516 such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor 504 and for controlling cursor movement on display 512 .
- This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), that allows the device to specify positions in a plane.
- the invention is related to the use of computer system 500 for implementing the techniques described herein. According to one embodiment of the invention, those techniques are performed by computer system 500 in response to processor 504 executing one or more sequences of one or more instructions contained in main memory 506 . Such instructions may be read into main memory 506 from another computer-readable medium, such as storage device 510 . Execution of the sequences of instructions contained in main memory 506 causes processor 504 to perform the process steps described herein. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the invention. Thus, embodiments of the invention are not limited to any specific combination of hardware circuitry and software.
- Non-volatile media includes, for example, optical or magnetic disks, such as storage device 510 .
- Volatile media includes dynamic memory, such as main memory 506 .
- Transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise bus 502 . Transmission media can also take the form of acoustic or light waves, such as those generated during radio-wave and infra-red data communications.
- Computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, or any other magnetic medium, a CD-ROM, any other optical medium, punchcards, papertape, any other physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, any other memory chip or cartridge, a carrier wave as described hereinafter, or any other medium from which a computer can read.
- Various forms of computer readable media may be involved in carrying one or more sequences of one or more instructions to processor 504 for execution.
- the instructions may initially be carried on a magnetic disk of a remote computer.
- the remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem.
- a modem local to computer system 500 can receive the data on the telephone line and use an infra-red transmitter to convert the data to an infra-red signal.
- An infra-red detector can receive the data carried in the infra-red signal and appropriate circuitry can place the data on bus 502 .
- Bus 502 carries the data to main memory 506 , from which processor 504 retrieves and executes the instructions.
- the instructions received by main memory 506 may optionally be stored on storage device 510 either before or after execution by processor 504 .
- Computer system 500 also includes a communication interface 518 coupled to bus 502 .
- Communication interface 518 provides a two-way data communication coupling to a network link 520 that is connected to a local network 522 .
- communication interface 518 may be an integrated services digital network (ISDN) card or a modem to provide a data communication connection to a corresponding type of telephone line.
- ISDN integrated services digital network
- communication interface 518 may be a local area network (LAN) card to provide a data communication connection to a compatible LAN.
- LAN local area network
- Wireless links may also be implemented.
- communication interface 518 sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information.
- Network link 520 typically provides data communication through one or more networks to other data devices.
- network link 520 may provide a connection through local network 522 to a host computer 524 or to data equipment operated by an Internet Service Provider (ISP) 526 .
- ISP 526 in turn provides data communication services through the world wide packet data communication network now commonly referred to as the “Internet” 528 .
- Internet 528 uses electrical, electromagnetic or optical signals that carry digital data streams.
- the signals through the various networks and the signals on network link 520 and through communication interface 518 which carry the digital data to and from computer system 500 , are exemplary forms of carrier waves transporting the information.
- Computer system 500 can send messages and receive data, including program code, through the network(s), network link 520 and communication interface 518 .
- a server 530 might transmit a requested code for an application program through Internet 528 , ISP 526 , local network 522 and communication interface 518 .
- the received code may be executed by processor 504 as it is received, and/or stored in storage device 510 , or other non-volatile storage for later execution. In this manner, computer system 500 may obtain application code in the form of a carrier wave.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
A method and apparatus for accelerating and improving access to network files is provided. One technique for providing data quickly and efficiently is to send a thumbnail of a file to a user rather than sending the entire file. Another technique for providing data quickly and efficiently is to generate the difference between a current version of data and a non-current version of data, to transmit this difference to the requesting user, and to use the difference to update the non-current version of data the user currently has access to. A third technique that can be used in combination with the first two techniques is to compress data, such as the thumbnail or file difference, before transmitting this data. A fourth technique that can be used in combination with the third technique is to securely transmit the compressed data.
Description
- This application is a divisional of U.S. application Ser. No. 10/174,735, filed Jun. 18, 2002, the contents of which are incorporated herein by reference as if fully set forth herein.
- The present invention relates to accessing network files and more specifically to accelerating and improving access to network files.
- In the early days of computing, a computer only had access to data that was on that computer's local disk. As time progressed, computers were connected together using networks. Thus, there was a possibility that each computer could access data on other computer's local disks (hereinafter referred to as “decentralized file systems”).
FIG. 1 is a block diagram of a decentralized file system with three computers (110, 120, and 130). Each of these three computers is associated with a corresponding local disk (111, 121, 131). Using a decentralized file system mechanism,computer 110 can access data ondisk 131, which is associated withcomputer 130. - However, the problem with decentralized file systems is that managing the data is difficult because the data is spread out. Furthermore, decentralized file systems make file sharing difficult. For example, a department may have files that each person in the department needs to update on a regular basis. If these files are spread among various computer systems, all of those various systems must constantly remain online for the files to be available. Furthermore, because of the critical nature of these files, these files need to be backed up on a regular basis. Backing up files that are spread across many systems can by a complex, and time and resource-consuming, operation. A decentralized file system is not convenient for file sharing or managing files.
- The next step in the evolution of file systems was to centralize important data onto one or more centralized shared disks (hereinafter referred to as a “centralized file system”).
FIG. 2 is a block diagram of a centralized file system. The shared files reside on the shareddisk 240. The computers (210, 220, and 230) have access to the files on shareddisk 240. This is a more convenient topology for sharing files among many people and for managing files, for example, by backing up the files. However, there are also problems with centralized file systems. For example, if the bandwidth of theconnection 250 between the shareddisk 240 and thecomputer 210 is low, thencomputer 210 will have slow access to the files on shareddisk 240. Worse yet, ifconnection 250 is down,computer 210 will not be able to access files on shareddisk 240 at all. - A third approach to file sharing is where not only do computers share data using shared disks but also the data on the shared disks is replicated. The replicated data is “pushed” to local disks associated with the individual computers (hereinafter referred to as a “hybrid file system”).
FIG. 3 is a block diagram of a hybrid file system. The computers (310, 320, 330, 350, and 360) share files that are on the shared disks (341 and 342), but do so by accessing the replicated versions of those files on their local disks (311, 321, 331, 351, and 361). - To address potential problems with speed of access and connections going down, the data on the shared disks (341 and 342) is periodically replicated and this replicated data is pushed to the individual computers (310, 320, 330, 350, and 360) that are interested in the replicated data. Then the replicated data is stored on the local disks (311, 321, 331, 351, and 361). Policies are used to determine which computers are interested in what shared files and at what intervals the shared files of interest are to be transmitted to the interested computers. For example, assume there is a slide-presentation file on shared
disk 341 thatcomputer 350 is interested in. A policy is set up indicating that this slide-presentation file on shareddisk 341 is replicated every 24 hours and sent tocomputer 350 where the slide-presentation file is then stored on thelocal disk 351. - Such a hybrid file system addresses the problem of access speed because
computer 350 accesses the local version. However, other problems are associated with hybrid file systems. For example, the slide-presentation file on shareddisk 341 may be transmitted tocomputer 350 at 2:00 AM and stored locally ondisk 351. Then, at 2:05 AM on the same day, someone modifies the slide-presentation file on shareddisk 341. Theperson using computer 350 will be using an old version of the slide-presentation file until the next time the slide-presentation file is transmitted tocomputer 350. Furthermore, a hybrid file system is not an efficient use of resources such as CPU cycles or storage space. Additional CPU cycles are needed to replicate data and transmit the replicated data to the interested parties. Additional storage space is needed to store the various versions of replicated data on all the computers that are interested in this replicated data. The problem of connections having low bandwidth or going down still exists. Policies for replicating the shared data are also needed, increasing the complexity of setup and maintenance. - Based on the foregoing, it is clearly desirable to provide techniques and mechanisms for sharing data that avoids problems associated with current approaches.
- Techniques are provided for accelerating and improving access to network files. One technique for providing data quickly and efficiently is to send a thumbnail of a file to a user rather than sending the entire file. The thumbnail has enough information to convey the contents of the full version of the file, but contains less data. According to one embodiment, the thumbnail version is accompanied by address data that allows the full version of the file to be easily retrieved if, after inspecting the thumbnail, a user determines that the full version is needed.
- Another technique for providing data quickly and efficiently is to generate, at a “parent” component that is remote relative to the requester, the difference between a current version of data and a non-current version of data. The parent component then transmits this difference to a “child” component that is located closer to the requester. The child component uses the difference to update the non-current version of data the requesting user currently has access to, and to provide the current version thus created to the requestor.
- A third technique that can be used in combination with the first two techniques is to use the parent component to compress data (either the entire file, the thumbnail or file difference) before transmitting the data to the child component. The child component decompresses the data prior to providing the data to the requester. A fourth technique that can be used in combination with the third technique is to securely transmit the compressed data between the parent and child component.
- The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:
-
FIG. 1 is a block diagram of a decentralized file system; -
FIG. 2 is a block diagram of a centralized file system; -
FIG. 3 is a block diagram of a hybrid file system; -
FIG. 4 is a block diagram of system that implements an embodiment of the invention; and -
FIG. 5 is a block diagram of a computer system on which embodiments of the invention may be implemented. - A method and apparatus for accelerating and improving access to network files is described. In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the present invention.
- Given that much of the data that people are interested in resides on remote devices, techniques are needed to access this data quickly, securely, and efficiently. One technique for providing data quickly and efficiently is to send a thumbnail of a file to a user rather than sending the entire file. For example, if the user on
computer 350 requests a large slide-presentation file on shareddisk 341, instead of sending the entire slide-presentation file, which could take 10 to 15 minutes, a second file that is smaller than the slide-presentation file and contains content of the slide-presentation file (hereinafter referred to as a “thumbnail”) is sent to the user oncomputer 350. When the user looks at the thumbnail, the user can determine based on the information in the thumbnail whether the user is interested in retrieving the entire slide-presentation file. This technique provides quicker data transmission because a thumbnail of the slide-presentation file is smaller than the entire slide-presentation file. Furthermore, the user is provided with an opportunity to determine whether the user is interested in the slide-presentation file. This technique is efficient in that CPU cycles and storage space are saved in the event that the user is not interested in the slide-presentation file. - Another technique for providing data quickly and efficiently involves the use of a “parent component” and a “child component”. The parent component resides near a source of files. The child component resides near a requestor. The requester interacts with the child component as if the child component actually stored the files. The child component provides the files to the child by, transparent to the requestor, interacting with the parent component.
- Specifically, according to one technique, the parent and child components are used to: (1) generate at the parent component the difference (hereinafter referred to as a “delta”) between a current version of data and a non-current version of data that resides on or near the child component, (2) transmit this delta from the parent component to the child component, and (3) use the delta and the non-current version of data at the child component to construct the current version of the data. Furthermore, this technique provides quicker transmission of data because the delta that is transmitted between the parent component and the child component is typically significantly smaller than the whole file.
- A third technique, which can be used in combination with the first two techniques, is to compress data, such as a thumbnail or a delta, before transmitting this data to the child component. Then, when the compressed data arrives at the child component, the data is decompressed. The decompressed version is provided to the requestor. This technique provides quicker data transmission because compressed data is smaller than the decompressed version of the same data.
- The communication between the parent component and the child component may involve the “least secure” segment of the communication path between the source and the requestor. For example, the parent component may communicate with the source through a secure private network, and the child component may communicate with the requestor through a secure private network. However, the parent component may communicate with the child component through a large public network, such as the Internet. Therefore, a fourth technique that can be used in combination with any of the preceding techniques is to securely transmit the data between the parent component and the child component. As a result, the portion of the communication path that is most vulnerable to attack is rendered secure without requiring either the source or the requestor to be modified to handle the complexities associated with secure communications.
-
FIG. 4 is a block diagram of a system where the above four techniques are used. To continue the example, the slide-presentation file resides on afile source 400. Thefile source 400 could be any device capable of storing data. Examples of such devices include but are not limited to a disk, a database, and a file system. Theparent component 410 is a gateway that understands various features associated with the slide-presentation file, such as the permissions for accessing the slide-presentation file and the “cacheability” of the slide-presentation file. The cacheability of a file generally refers to the rules that govern the conditions under which the file is allowed to be cached. For example, some files may be designated as “uncacheable”. Other files may be cacheable for up to a particular amount of time, at which point the cached version “expires”. - According to one embodiment, the
parent component 410 understands many different protocols and translates those protocols into HTTP. Therefore, many different protocols may be used overconnection 411, whereas HTTP is used forconnection 412. Examples of the different protocols that may be used onconnection 411 include but are not limited to storage area network protocols, Network File Server (NFS), fiber channel protocol, SCSI protocol, and Common Internet File System (CIFS). -
Child component 420 is any mechanism that is capable of storing (1) the slide-presentation file, (2) part of the slide-presentation file, or (3) information associated with the slide-presentation file. Examples of information associated with the slide-presentation file include but are not limited to (1) a thumbnail of the file, (2) cacheability of the file, (3) access permissions, (4) size of the file, and (5) name of the file. Thechild component 420 could be, among other things: a cache, a micro traffic server in the user's lab top behind the user's browser, a cache in a cable modem, or a cache in a set top box. There is no requirement for thechild component 420 to be a cache. Therequester 430 represents the computer used by a user who is interested in the slide-presentation file onfile source 400. Although this example refers to a slide-presentation file, the file in question could be any kind of file or data. - A web server can be used as a
parent component 410. Since web servers are capable of indexing files,parent component 410 is used to index the files on thefile source 400. Then requestor 430 is provided with a directory listing of the indexed files on the file source. For example, assume thatfile source 400 has files foo1, foo2, and foo3.Requestor 430 requests to see the directory listing for the files onfile source 400.Parent component 410 indexes the files foo1, foo2, and foo3 and provides a directory listing of these indexed files torequestor 430. A user onrequestor 430 requests a particular file, foo1, by clicking on an icon associated with foo1 in the directory list. - Assume that a user requests a particular file, such as foo1. According to one embodiment,
parent component 410 inspects the size of foo1 before sending it. If the size of foo1 exceeds a particular threshold, thenparent component 410 does not send foo1. Instead, requestor 430 is provided with a thumbnail of foo1. - According to another technique, upon receiving a request,
parent component 410 determines if foo1 has been modified since foo1 was last provided tochild component 420. If foo1 has been modified since last provided tochild component 420,parent component 410 generates a delta between the current version of foo1 onfile source 400 and the version of foo1 last provided tochild component 420.Parent component 410 transmits this delta tochild component 420. Thenchild component 420 uses the delta to update foo1 and transmits the updated foo1 torequestor 430. -
Child component 420 can cache foo1, thereby increasing speed of access and decreasing CPU cycles in providing foo1 torequestor 430. In an embodiment in whichchild component 420 caches foo1,child component 420 may respond to a request for foo1 by (1) determining the version of foo1 contained in the cache, (2) sending a request for foo1 toparent component 410 along with information indicating the version of foo1 contained in the cache.Parent component 410 determines that the version in the cache is the current version, thenparent component 410 simply tellschild component 420 to provide the cached version. On the other hand, ifparent component 410 determines that the cached version is not current, thenparent component 410 sends a delta tochild component 420.Child component 420 uses the delta and the cached version to construct a copy of the current version. The current version thus created is provided to the requestor. - A user on
requestor 430 clicks on a link for a particular web page, which is a type of file. The requested page is onfile source 400. The requestor 430 requests the web page using a browser onrequestor 430. The request for the web page goes tochild component 420. Assume thatchild component 420 already has the web page.Child component 420 may already have the particular web page under a variety of circumstances. For example,child component 420 may already have the web page becauserequestor 430 or some other requestor previously requested the web page, or because theparent component 410 monitors the web site that contains the web page, and “pushes” the web page (or a delta thereof) tochild component 420 whenever the web page is modified. - If the
child component 420 has a copy of the web page, thechild component 420 determines whether the copy can be supplied to therequestor 430. The operation of determining whether the copy can be supplied to therequester 430 may involve, for example, sending version information to theparent component 410, and receiving from the parent component a response that indicates whether the version contained inchild component 420 is current. On the other hand,child component 420 may determine that the version is current because an expiration time associated with the version has not yet been reached. If the version currently stored atchild component 420 can be supplied torequestor 430, then that version is supplied to requestor 430 without requiring the web page be supplied again fromsource 400. - If it is determined that the version of the web page that is stored on the
child component 420 cannot be supplied to therequester 430, thenparent component 410 uses the version information from thechild component 420 to determine a delta between the new version and the version currently at the child component. Theparent component 410 sends the delta to thechild component 420, and thechild component 420 constructs the current version of the web page based on the delta and the version that is already at thechild component 420. - Assume that a slide-presentation file on
file source 400 is modified. According to one embodiment, at some predetermined interval,parent component 410 monitors thefile source 400 for modified files. During one such monitoring operation,parent component 410 determines that the slide-presentation file has been modified.Parent component 410 generates a delta of the slide-presentation file and transmits this delta tochild component 420. The delta thus provided to thechild component 420 is said to be “pushed” to thechild component 420 because the sending of the delta is not performed in response to any request from thechild component 420. -
Child component 420 updates a local copy of the slide-presentation file using the delta. Sometime later, a user onrequester 430 requests to see the same slide-presentation file. When this request for the slide-presentation file arrives atchild component 420,child component 420 transmits the updated slide-presentation file torequestor 430. - Any data that is transmitted between the
parent component 410 and requestor 430 can be compressed. Examples of this data include but are not limited to (1) a file, (2) part of a file such as a delta, or (3) information associated with the file. Examples of information associated with the file include but are not limited to (1) a thumbnail of the file, (2) cacheability of the file, (3) access permissions to the file, (4) size of the file, and (5) name of the file. - For example, before
parent component 410 transmits a delta tochild component 420,parent component 410 compresses the delta.Child component 420 decompresses the delta and uses the delta to update a local non-current version of the same file. The current version of the file, thus constructed, is sent to the requester. Because the decompression of the file is performed by thechild component 420, the data transmission operation is performed more efficiently without requiring therequester 430 itself to handle the complexities of decompression. -
Parent component 410 andchild component 420 may be used to transmit data securely in a manner that is transparent to the requestor. For example,parent component 410 compresses a requested file, then transmits the file securely tochild component 420. HTTP SSL is one of many mechanisms that may be used to transmit the data securely. - When the file arrives at
child component 420, the file is received securely and decompressed.Child component 420 may then provide the file torequestor 430. Thus,requestor 430 may receive a file that has been transmitted securely without having to have any knowledge of or logic to implement the mechanism used in the secure transmission. - Although the examples herein described a user on a requestor computer (such as 430 and 440) requesting a file, the requestor computer could instead be an intermediary computer in a string of computers. Furthermore, instead of a user's actions causing a thumbnail or delta to be generated and transmitted, an automated program running on a requesting computer could cause the thumbnail or delta to be generated and transmitted.
-
FIG. 5 is a block diagram that illustrates acomputer system 500 upon which an embodiment of the invention may be implemented.Computer system 500 includes abus 502 or other communication mechanism for communicating information, and aprocessor 504 coupled withbus 502 for processing information.Computer system 500 also includes amain memory 506, such as a random access memory (RAM) or other dynamic storage device, coupled tobus 502 for storing information and instructions to be executed byprocessor 504.Main memory 506 also may be used for storing temporary variables or other intermediate information during execution of instructions to be executed byprocessor 504.Computer system 500 further includes a read only memory (ROM) 508 or other static storage device coupled tobus 502 for storing static information and instructions forprocessor 504. Astorage device 510, such as a magnetic disk or optical disk, is provided and coupled tobus 502 for storing information and instructions. -
Computer system 500 may be coupled viabus 502 to adisplay 512, such as a cathode ray tube (CRT), for displaying information to a computer user. Aninput device 514, including alphanumeric and other keys, is coupled tobus 502 for communicating information and command selections toprocessor 504. Another type of user input device iscursor control 516, such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections toprocessor 504 and for controlling cursor movement ondisplay 512. This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), that allows the device to specify positions in a plane. - The invention is related to the use of
computer system 500 for implementing the techniques described herein. According to one embodiment of the invention, those techniques are performed bycomputer system 500 in response toprocessor 504 executing one or more sequences of one or more instructions contained inmain memory 506. Such instructions may be read intomain memory 506 from another computer-readable medium, such asstorage device 510. Execution of the sequences of instructions contained inmain memory 506 causesprocessor 504 to perform the process steps described herein. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the invention. Thus, embodiments of the invention are not limited to any specific combination of hardware circuitry and software. - The term “computer-readable medium” as used herein refers to any medium that participates in providing instructions to
processor 504 for execution. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media includes, for example, optical or magnetic disks, such asstorage device 510. Volatile media includes dynamic memory, such asmain memory 506. Transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprisebus 502. Transmission media can also take the form of acoustic or light waves, such as those generated during radio-wave and infra-red data communications. - Common forms of computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, or any other magnetic medium, a CD-ROM, any other optical medium, punchcards, papertape, any other physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, any other memory chip or cartridge, a carrier wave as described hereinafter, or any other medium from which a computer can read.
- Various forms of computer readable media may be involved in carrying one or more sequences of one or more instructions to
processor 504 for execution. For example, the instructions may initially be carried on a magnetic disk of a remote computer. The remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem. A modem local tocomputer system 500 can receive the data on the telephone line and use an infra-red transmitter to convert the data to an infra-red signal. An infra-red detector can receive the data carried in the infra-red signal and appropriate circuitry can place the data onbus 502.Bus 502 carries the data tomain memory 506, from whichprocessor 504 retrieves and executes the instructions. The instructions received bymain memory 506 may optionally be stored onstorage device 510 either before or after execution byprocessor 504. -
Computer system 500 also includes acommunication interface 518 coupled tobus 502.Communication interface 518 provides a two-way data communication coupling to anetwork link 520 that is connected to alocal network 522. For example,communication interface 518 may be an integrated services digital network (ISDN) card or a modem to provide a data communication connection to a corresponding type of telephone line. As another example,communication interface 518 may be a local area network (LAN) card to provide a data communication connection to a compatible LAN. Wireless links may also be implemented. In any such implementation,communication interface 518 sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information. - Network link 520 typically provides data communication through one or more networks to other data devices. For example,
network link 520 may provide a connection throughlocal network 522 to ahost computer 524 or to data equipment operated by an Internet Service Provider (ISP) 526.ISP 526 in turn provides data communication services through the world wide packet data communication network now commonly referred to as the “Internet” 528.Local network 522 andInternet 528 both use electrical, electromagnetic or optical signals that carry digital data streams. The signals through the various networks and the signals onnetwork link 520 and throughcommunication interface 518, which carry the digital data to and fromcomputer system 500, are exemplary forms of carrier waves transporting the information. -
Computer system 500 can send messages and receive data, including program code, through the network(s),network link 520 andcommunication interface 518. In the Internet example, aserver 530 might transmit a requested code for an application program throughInternet 528,ISP 526,local network 522 andcommunication interface 518. - The received code may be executed by
processor 504 as it is received, and/or stored instorage device 510, or other non-volatile storage for later execution. In this manner,computer system 500 may obtain application code in the form of a carrier wave. - In the foregoing specification, the invention has been described with reference to specific embodiments thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.
Claims (23)
1. A method for accelerating and improving access to network files comprising the computer-implemented steps of:
retrieving, at a parent component, a parent file from a file source;
generating a thumbnail of said parent file, wherein said thumbnail is a file that communicates contents of said parent file and is smaller than said parent file; and
in response to a request for said parent file, transmitting said thumbnail to said child component; and
if a requestor requests said parent file after viewing said thumbnail, then transmitting said parent file to said requestor.
2. The method of claim 1 , wherein the step of transmitting said thumbnail to said child component is performed in response to determining that said parent file exceeds a predetermined size threshold.
3. The method of claim 1 , wherein said thumbnail is compressed and the step of generating said thumbnail further includes compressing said thumbnail.
4. The method of claim 1 , wherein said thumbnail is transmitted securely with the HTTP SSL protocol.
5. The method of claim 1 , wherein said request is received at said parent component and the steps of retrieving said parent file and generating said thumbnail are performed by said parent component.
6. The method of claim 5 , wherein said parent component is on a web server.
7. The method of claim 1 , wherein said request is generated in response to input that indicates a user selecting an item in a directory listing, and wherein said item corresponds to said parent file.
8. The method of claim 7 , wherein said parent component generates said directory listing.
9. The method of claim 1 , further comprising the computer-implemented step of caching said parent file on said child component.
10. The method of claim 1 , further comprising the computer-implemented step of caching said thumbnail on said child component.
11. The method of claim 1 , wherein the step of retrieving said parent file from said file source further includes the step of checking permissions associated with said parent file to determine if said requestor is permitted to request said parent file.
12. A system for accelerating and improving access to network files comprising:
a file source wherein a current version of a file is stored;
a parent component; and
a child component;
wherein said parent component is configured to perform the computer-implemented steps of:
generating a thumbnail of said current version, wherein said thumbnail is a file that communicates contents of said current version and is smaller than said current version;
transmitting said thumbnail to said child component; and
said child component being configured to perform the computer-implemented steps of:
provide said thumbnail to a requester in response to a request for said current version; and
if, after said requestor has been provided said thumbnail, said requestor requests said current version, then using said parent component to retrieve said current version, and providing said current version to said requester.
13. A computer-readable-medium carrying one or more sequences of instructions for accelerating and improving access to network files, wherein execution of the one or more sequences of instructions by one or more processors causes the one or more processors to perform the steps of:
retrieving, at a parent component, a parent file from a file source;
generating a thumbnail of said parent file, wherein said thumbnail is a file that communicates contents of said parent file and is smaller than said parent file; and
in response to a request for said parent file, transmitting said thumbnail to said child component; and
if a requestor requests said parent file after viewing said thumbnail, then transmitting said parent file to said requestor.
14. The medium of claim 13 , wherein the step of transmitting said thumbnail to said child component is performed in response to determining that said parent file exceeds a predetermined size threshold.
15. The medium of claim 13 , wherein said thumbnail is compressed and the step of generating said thumbnail further includes compressing said thumbnail.
16. The medium of claim 13 , wherein said thumbnail is transmitted securely with the HTTP SSL protocol.
17. The medium of claim 13 , wherein said request is received at said parent component and the steps of retrieving said parent file and generating said thumbnail are performed by said parent component.
18. The medium of claim 17 , wherein said parent component is on a web server.
19. The medium of claim 13 , wherein said request is generated in response to input that indicates a user selecting an item in a directory listing, and wherein said item corresponds to said parent file.
20. The medium of claim 19 , wherein said parent component generates said directory listing.
21. The medium of claim 13 , further comprising the computer-implemented step of caching said parent file on said child component.
22. The medium of claim 13 , further comprising the computer-implemented step of caching said thumbnail on said child component.
23. The medium of claim 13 , wherein the step of retrieving said parent file from said file source further includes the step of checking permissions associated with said parent file to determine if said requestor is permitted to request said parent file.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/729,183 US20070203886A1 (en) | 2002-06-18 | 2007-03-27 | Method and apparatus for accelerating and improving access to network files |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/174,735 US7228317B1 (en) | 2002-06-18 | 2002-06-18 | Method and apparatus for accelerating and improving access to network files |
US11/729,183 US20070203886A1 (en) | 2002-06-18 | 2007-03-27 | Method and apparatus for accelerating and improving access to network files |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/174,735 Division US7228317B1 (en) | 2002-06-18 | 2002-06-18 | Method and apparatus for accelerating and improving access to network files |
Publications (1)
Publication Number | Publication Date |
---|---|
US20070203886A1 true US20070203886A1 (en) | 2007-08-30 |
Family
ID=38090267
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/174,735 Active 2024-09-09 US7228317B1 (en) | 2002-06-18 | 2002-06-18 | Method and apparatus for accelerating and improving access to network files |
US11/729,183 Abandoned US20070203886A1 (en) | 2002-06-18 | 2007-03-27 | Method and apparatus for accelerating and improving access to network files |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/174,735 Active 2024-09-09 US7228317B1 (en) | 2002-06-18 | 2002-06-18 | Method and apparatus for accelerating and improving access to network files |
Country Status (1)
Country | Link |
---|---|
US (2) | US7228317B1 (en) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100241718A1 (en) * | 2009-03-23 | 2010-09-23 | Jens Eilstrup Rasmussen | Providing Access to a Conversation in a Hosted Conversation System |
US8510399B1 (en) | 2010-05-18 | 2013-08-13 | Google Inc. | Automated participants for hosted conversations |
US8527602B1 (en) * | 2009-05-28 | 2013-09-03 | Google Inc. | Content upload system with preview and user demand based upload prioritization |
GB2516347A (en) * | 2013-05-10 | 2015-01-21 | Appsense Ltd | Systems, methods and media for minimizing data downloads |
US9021386B1 (en) | 2009-05-28 | 2015-04-28 | Google Inc. | Enhanced user interface scrolling system |
US9026935B1 (en) | 2010-05-28 | 2015-05-05 | Google Inc. | Application user interface with an interactive overlay |
US9246966B2 (en) | 2012-03-21 | 2016-01-26 | Samsung Electronics Co., Ltd | Method and apparatus for receiving multimedia contents |
US9380011B2 (en) | 2010-05-28 | 2016-06-28 | Google Inc. | Participant-specific markup |
US9602444B2 (en) | 2009-05-28 | 2017-03-21 | Google Inc. | Participant suggestion system |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030192038A1 (en) * | 2002-04-09 | 2003-10-09 | Thomas Hagmann | Linking data objects to a project development system |
JP4354314B2 (en) * | 2004-03-16 | 2009-10-28 | 株式会社日立製作所 | Server difference management system and information processing apparatus control method |
US7753281B2 (en) * | 2006-06-01 | 2010-07-13 | Hewlett-Packard Development Company, L.P. | System and method of updating a first version of a data file in a contactless flash memory device |
US8527905B2 (en) * | 2006-06-07 | 2013-09-03 | International Business Machines Corporsation | Providing archived web page content in place of current web page content |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6021426A (en) * | 1997-07-31 | 2000-02-01 | At&T Corp | Method and apparatus for dynamic data transfer on a web page |
US20010042124A1 (en) * | 2000-03-27 | 2001-11-15 | Barron Robert H. | Web-based method, apparatus, and system for secure data storage |
US6327616B1 (en) * | 1995-10-27 | 2001-12-04 | Matsushita Electric Industrial Co., Ltd. | Terminal device in document information communication system |
US20020029227A1 (en) * | 2000-01-25 | 2002-03-07 | Multer David L. | Management server for synchronization system |
US20020161860A1 (en) * | 2001-02-28 | 2002-10-31 | Benjamin Godlin | Method and system for differential distributed data file storage, management and access |
US20030220944A1 (en) * | 2002-04-03 | 2003-11-27 | Lyman Schottland Paul Joseph | Delta replication of source files and packages across networked resources |
US6668069B1 (en) * | 2000-05-04 | 2003-12-23 | Microsoft Corporation | Method and system for processing digital objects |
US6920610B1 (en) * | 1999-03-02 | 2005-07-19 | Microsoft Corporation | Method and system for browsing a low-resolution image |
US6967675B1 (en) * | 1999-10-28 | 2005-11-22 | Sanyo Electric Co., Ltd. | Digital camera with image file transmission |
US7197703B1 (en) * | 2001-04-09 | 2007-03-27 | Critical Technologies, Inc. | System and methodology for the storage and manipulation of documents |
US7308487B1 (en) * | 2000-12-12 | 2007-12-11 | Igate Corp. | System and method for providing fault-tolerant remote controlled computing devices |
-
2002
- 2002-06-18 US US10/174,735 patent/US7228317B1/en active Active
-
2007
- 2007-03-27 US US11/729,183 patent/US20070203886A1/en not_active Abandoned
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6327616B1 (en) * | 1995-10-27 | 2001-12-04 | Matsushita Electric Industrial Co., Ltd. | Terminal device in document information communication system |
US6021426A (en) * | 1997-07-31 | 2000-02-01 | At&T Corp | Method and apparatus for dynamic data transfer on a web page |
US6920610B1 (en) * | 1999-03-02 | 2005-07-19 | Microsoft Corporation | Method and system for browsing a low-resolution image |
US6967675B1 (en) * | 1999-10-28 | 2005-11-22 | Sanyo Electric Co., Ltd. | Digital camera with image file transmission |
US20020029227A1 (en) * | 2000-01-25 | 2002-03-07 | Multer David L. | Management server for synchronization system |
US20010042124A1 (en) * | 2000-03-27 | 2001-11-15 | Barron Robert H. | Web-based method, apparatus, and system for secure data storage |
US6668069B1 (en) * | 2000-05-04 | 2003-12-23 | Microsoft Corporation | Method and system for processing digital objects |
US7308487B1 (en) * | 2000-12-12 | 2007-12-11 | Igate Corp. | System and method for providing fault-tolerant remote controlled computing devices |
US20020161860A1 (en) * | 2001-02-28 | 2002-10-31 | Benjamin Godlin | Method and system for differential distributed data file storage, management and access |
US7197703B1 (en) * | 2001-04-09 | 2007-03-27 | Critical Technologies, Inc. | System and methodology for the storage and manipulation of documents |
US20030220944A1 (en) * | 2002-04-03 | 2003-11-27 | Lyman Schottland Paul Joseph | Delta replication of source files and packages across networked resources |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8949359B2 (en) | 2009-03-23 | 2015-02-03 | Google Inc. | Systems and methods for searching multiple instant messages |
US20100241700A1 (en) * | 2009-03-23 | 2010-09-23 | Jens Eilstrup Rasmussen | System and Method for Merging Edits for a Conversation in a Hosted Conversation System |
US20100241749A1 (en) * | 2009-03-23 | 2010-09-23 | Jens Eilstrup Rasmussen | System and Method for Editing a Conversation in a Hosted Conversation System |
US9294421B2 (en) | 2009-03-23 | 2016-03-22 | Google Inc. | System and method for merging edits for a conversation in a hosted conversation system |
US20100241718A1 (en) * | 2009-03-23 | 2010-09-23 | Jens Eilstrup Rasmussen | Providing Access to a Conversation in a Hosted Conversation System |
US8639762B2 (en) | 2009-03-23 | 2014-01-28 | Google Inc. | Providing access to a conversation in a hosted conversation system |
US8700776B2 (en) | 2009-03-23 | 2014-04-15 | Google Inc. | System and method for editing a conversation in a hosted conversation system |
US8984139B2 (en) | 2009-03-23 | 2015-03-17 | Google Inc. | System and method for editing a conversation in a hosted conversation system |
US8527602B1 (en) * | 2009-05-28 | 2013-09-03 | Google Inc. | Content upload system with preview and user demand based upload prioritization |
US9021386B1 (en) | 2009-05-28 | 2015-04-28 | Google Inc. | Enhanced user interface scrolling system |
US9166939B2 (en) | 2009-05-28 | 2015-10-20 | Google Inc. | Systems and methods for uploading media content in an instant messaging conversation |
US9602444B2 (en) | 2009-05-28 | 2017-03-21 | Google Inc. | Participant suggestion system |
US8996635B1 (en) | 2010-05-18 | 2015-03-31 | Google Inc. | Automated participants for hosted conversations |
US8510399B1 (en) | 2010-05-18 | 2013-08-13 | Google Inc. | Automated participants for hosted conversations |
US9026935B1 (en) | 2010-05-28 | 2015-05-05 | Google Inc. | Application user interface with an interactive overlay |
US9380011B2 (en) | 2010-05-28 | 2016-06-28 | Google Inc. | Participant-specific markup |
US9246966B2 (en) | 2012-03-21 | 2016-01-26 | Samsung Electronics Co., Ltd | Method and apparatus for receiving multimedia contents |
GB2516347A (en) * | 2013-05-10 | 2015-01-21 | Appsense Ltd | Systems, methods and media for minimizing data downloads |
Also Published As
Publication number | Publication date |
---|---|
US7228317B1 (en) | 2007-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20070203886A1 (en) | Method and apparatus for accelerating and improving access to network files | |
US7243136B2 (en) | Approach for managing and providing content to users | |
US7711788B2 (en) | Double-proxy remote data access system | |
EP1410247B1 (en) | A network storage system | |
US5878218A (en) | Method and system for creating and utilizing common caches for internetworks | |
US7552223B1 (en) | Apparatus and method for data consistency in a proxy cache | |
US7428540B1 (en) | Network storage system | |
US9575927B2 (en) | RDMA-optimized high-performance distributed cache | |
US7266556B1 (en) | Failover architecture for a distributed storage system | |
US8972348B2 (en) | Method and system for supporting off-line mode of operation and synchronization | |
US7266555B1 (en) | Methods and apparatus for accessing remote storage through use of a local device | |
US8868707B2 (en) | Adaptive write-back and write-through caching for off-line data | |
US8185630B2 (en) | Method for creating global distributed namespace | |
US20070005603A1 (en) | Sharing state information among a plurality of file operation servers | |
US20020198930A1 (en) | Method and apparatus for wide-spread distribution of electronic content in a peer to peer fashion | |
US8365241B1 (en) | Method and apparatus for archiving web content based on a policy | |
US7281168B1 (en) | Failover architecture for local devices that access remote storage | |
JP4806462B2 (en) | Peer-to-peer gateway | |
US9075722B2 (en) | Clustered and highly-available wide-area write-through file system cache | |
JP2002268937A (en) | Device and method for data transfer and program | |
US20090158047A1 (en) | High performance secure caching in the mid-tier | |
US20050027693A1 (en) | Database query operations using storage networks | |
US8250236B2 (en) | Method and apparatus for translating a web services address | |
US11157454B2 (en) | Event-based synchronization in a file sharing environment | |
US20240214449A1 (en) | Ensuring Coherency Across Responses When Handling A Series Of Client Requests |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |
|
AS | Assignment |
Owner name: YAHOO HOLDINGS, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:YAHOO| INC.;REEL/FRAME:042963/0211 Effective date: 20170613 |
|
AS | Assignment |
Owner name: OATH INC., NEW YORK Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:YAHOO HOLDINGS, INC.;REEL/FRAME:045240/0310 Effective date: 20171231 |