SG184587A1 - A method and apparatus for caching and retrieving a stream object - Google Patents

A method and apparatus for caching and retrieving a stream object Download PDF

Info

Publication number
SG184587A1
SG184587A1 SG2011017548A SG2011017548A SG184587A1 SG 184587 A1 SG184587 A1 SG 184587A1 SG 2011017548 A SG2011017548 A SG 2011017548A SG 2011017548 A SG2011017548 A SG 2011017548A SG 184587 A1 SG184587 A1 SG 184587A1
Authority
SG
Singapore
Prior art keywords
stream object
stream
cache
content
proxy device
Prior art date
Application number
SG2011017548A
Inventor
Kian Aun Jeffrey Lau
Original Assignee
To The Point Pte Ltd
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 To The Point Pte Ltd filed Critical To The Point Pte Ltd
Priority to SG2011017548A priority Critical patent/SG184587A1/en
Publication of SG184587A1 publication Critical patent/SG184587A1/en

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

A METHOD AND APPARATUS FOR CACHING AND RETRIEVING A STREAM OBJECTA method and apparatus for identifying and retrieving stream content from a proxy device coupled to the network is disclosed. The proxy device receives a request for stream content having a first URL different from a second URL of a same stream content cached in the proxy device. A fingerprint associated with the cached stream content and a fingerprint associated with the requested content are compared. The cached stream content is delivered in connection with the request if the fingerprints match. [FIG. 3A]

Description

A METHOD AND APPARATUS FOR CACHING AND RETRIEVING A
STREAM OBJECT
FIELD OF THE INVENTION foooi} The present invention relates generally to the caching and retrieval a stream object, and more particularly to caching and retrieving a multimedia stream file or portions thereof from a proxy server coupled to a network.
BACKGROUND
[0002] The transfer and storage of streaming video content within networks has become increasingly popular due to the proliferation of sites that offer streaming multimedia content playback of a wide variety of topics including popular and timely subject matter. Often times, service providers will cache certain content locally in proxy servers to avoid repeated access to original content servers, which may involve transferring the same content and generating traffic over more expensive access platforms. However, problems arise when certain videos become unusually popular or otherwise become the subject of popular awareness, a phenomenon known, for example, as going “viral”. When a particular streaming object becomes viral, the demand for the object, expressed in terms of the number of requests for the object within a given time period, increases dramatically over a short period of time and remains high for some time, but then drops again dramatically when the object is no longer popular.
During such times, it is advantageous for service providers to cache the content to provide more rapid access.
foo03] Several additional issues can arise in connection with both the increase in demand for the object and associated caching of the object, and the access characteristics associated with requestors of the obj ect. For example, to address the high demand, mirror sites may be created for access to the content.
Alternatively, the act of going viral itself means that many diverse links to the content may be created on a variety of different servers different from the original server. Distribution and storage of the content on a diversity of servers leads to storage of the same content throughout the network under a variety of different names attributable to the various domains under which the content is stored or even to different names used for files containing the same content.
[0004] Still further, for example, requestors may not watch the entire object or may alternatively request only certain portions of the object such as portions of the content within the stream that can be associated with a particular elapsed time of the stream. While conventional original content servers have the ability to access content in accordance with discrete files starting at different key frames that can be associated with elapsed time, other servers do not have access to the content arranged as such. Further complicating the scenario is the practice of conventional proxy server caches to discard content when less than the full object is requested and played.
[0005] To better appreciate the retrieval operation in connection with conventional servers, FIG. 1 shows a conventional system 100 for retrieving content from a web server or a website. In the present example, the content may be stream-content or non-stream content, but illustrates the general principles of content caching. In the system 100, an Internet Service Provider (ISP) 102 provides one or a plurality of users 101 access to the Internet 103. Through the
Internet 103, the users 101 can access media websites 104 via the Uniform
Resource Locators (URLs) such as, for example, http://www.youtube.com or http://video.google.com.
[0006] From the perspective of the ISP 102, a rapid increase in demand for content over a short period of time, such as content that suddenly is accessed by a high number of viewers, can cause problems including network congestion, content contention problems, and the like. As shown in FIG. 2A, the ISP 102 can be configured with a proxy cache 201 capable of caching a stream content 204’ such as http://vi.media.com/dir/videoA.rm, for example, in connection with a previous request for the content or from a prediction made by the ISP and/or a decision module or the like in the proxy cache 201, that the stream content 204’ is likely to be requested. Caching stream content 204’ in the proxy cache 201 allows the ISP 102 to manage the traffic to and from the media server 208 or, for example, mirror sites 209, by allowing content previously requested by a user to be retrieved from the proxy cache 201 for delivery in response to a subsequent request. It will be appreciated that the terminal device for generating the request for content may be a mobile device, such as a cell phone, smart phone, personal digital assistant (PDA) or the like, or a computer, such as desktop computer, laptop computer, or any other device that can be connected to a network by a wired, optical, or wireless connection, or the like.
[0007] In order to illustrate conventional media content delivery and caching, a content transfer related event must occur. For example, as shown in
FIG. 24, a request 203 can be made for a particular stream content file accessed using a first pathname, expressed as a URL 204, for example “http: //vi.media.com/dir/videoA.rm,”. The ISP 102 can first determine whether the requested content is stored, for example, in the proxy cache 201 by comparing the path name of the requested content such as URL 204 with the name associated with content stored in the proxy cache 201, such as the name associated with stream content 204’. In the present example, the requested stream content is found to be available as stream content 204’ in the cache 201 after a successful comparison of, for example, the path name that the stream content 204’ was stored with and the path name associated with the request 203, such as URL 204. The stream content 204’ can then be delivered to user A 202 through ISP 102.
[0008] In another example as shown in FIG. 2B, another request 206 can be made, which is intended to retrieve the same stream content. However it is noted that content associated with the request 206 is accessed using a different pathname, expressed as a URL 207, for example “http://v4.media.com/dir/videoA.rm.” The ISP 102 will search for the stream content in the proxy cache 201 using, for example, a conventional process such as
URL pattern matching. URL pattern matching can include a procedure such as comparing URL 207 against any URLs that are stored in the proxy cache 201. If the URL 207 matches a URL stored in the proxy cache 201, the ISP 102 will retrieve the stream content. However, in the present example, even the slight difference in the URL name, such as “...//v4.medjia...” from URL 207 and “...//vimedia...” from the path name associated with stream content 204’ stored in proxy cache 201, prevents the content from being recognized and retrieved from proxy cache 201 by full path name as is the conventional practice. ISP 102, therefore must retrieve the stream content 207 from the exact site requested in connection with URL 207. The stream content 207 can then be forwarded to the requestor by ISP 102. However, fetching and forwarding content from the original site requires additional access time and other overhead resources that can lead to delay and potentially to increased costs for the ISP. In particular, as new segments of the content are requested from the original site the playback of the content on the user terminal may be disadvantageously interrupted.
[0009] It should be noted that by “forwarded” reference can be made to the act of proceeding to establish streaming transfer to the requestor. Such streaming transfer, as will be appreciated by one of skill in the art, can be accomplished using various different approaches and protocols and can be subject to various constraints associated with the transfer of “real time” information over the network such as bandwidth factors, Quality of Service factors, and the like. It should be understood then in light of the above description, that disadvantages are encountered using conventional approaches for retrieving cached content from the proxy cache based on URL pattern matching leading to interrupted playback, long delays, and the like.
[0010] It should be noted that network clients in countries having high internet bandwidth generally do not face significant problems or delay in content delivery, when caching is conducted in accordance with the above. In particular, if content is required to be obtained from the original server, the delays associated with retrieving such content are minimal, although increased upstream access costs may be involved for high volumes of request as may be associated with, for example, a viral video. However, in countries with low bandwidth or slower links, network clients may experience, for example, high startup latency, start and stop or slow content delivery, and low fidelity in particular stream related content.
[0011] Further, as noted above, conventional caching requires the complete stream content to be delivered to the user before the content can be cached to the proxy cache 201. For example, if the user closes a streaming session before the entire stream contents have completed, the content will not be cached to the proxy cache 201. Accordingly, a need arises for improved caching and retrieval.
SUMMARY
[0012] According to an embodiment, a method can be provided for retrieving a stream object from a proxy device coupled to a network. The stream object is capable of being represented by a file name, and be associated with a plurality of different Uniform Resource Locators (URLs). Each URL can have unique segments that, when combined with the file name for the stream object, forms an identification path for the stream object.
[0013] The method can include retrieving a first fingerprint including at least an initial part of the stream object based on a request for the stream object having a first identification path for the stream object and first URL associated with the first identification path. The first fingerprint can be compared with a second fingerprint associated with the stream object stored using a second identification path in a cache of the proxy device so as to determine if the cached stream object is identical to the requested stream object.
[0014]1t will be appreciated that the unique segments can include a protocol segment, a host segment, a file name segment, or a directory structure for finding the video stream on a server.
[0015]1t will be appreciated that a server can include server software, or hardware configured for serving processes. The server can be in the form of hardware or software. For example, the server may be a web server that is capable of being installed on a device. The device may be a computer or a handheld device connected to the network.
[0016] The stream objects can be stored and retrieved from a plurality of URLs associated with the respective different web servers. Therefore, an advantage of comparing a file name segment is that a stream object having a URL which is similar but not identical to a URL of a stream object stored on a cache of a proxy server can be retrieved from the proxy server. Consequently, the method avoids the repeated transmission of stream objects which are identical in content but having non-identical URLs.
BRIEF DESCRIPTION OF THE DRAWINGS
[0017] In order that embodiments of the invention may be fully and more clearly understood by way of non-limitative examples, the following description is taken in conjunction with the accompanying drawings in which like reference numerals designate similar or corresponding elements, regions and portions, and in which:
[0018] FIG. 11s a block diagram illustrating a prior art system for streaming content over a network; fo019] FIG. 2A is a functional block diagrams illustrating a prior art system including a cache;
[0020] FIG. 2B is a functional block diagram further illustrating a prior art system including a cache;
[0021] FIG. 3A is a functional block diagram illustrating a system for retrieving stream content according to an exemplary embodiment;
[0022] FIG. 3B is a functional block diagram illustrating a system for retrieving and assembling stream content according to an exemplary embodiment;
fo023] FIG. 4A is a diagram illustrating an exemplary representation of components of a URL and of stream content;
[0024] FIG. 4B is a functional block diagram illustrating a system of retrieving stream content according to an exemplary embodiment;
[0025] FIG. 5A is a diagram illustrating an exemplary representation of stream content and metadata;
[0026] FIG. 5B is a diagram illustrating an exemplary representation of the metadata section of stream content;
[0027] FIG. 5C is a functional block diagram illustrating retrieving stream content according to an exemplary embodiment;
[0028] FIG. 6 is a functional block diagram illustrating caching portions of stream content according to an exemplary embodiment; and
[0029] FIG. 7 is a flow chart illustrating an exemplary method for retrieving stream content according to an embodiment.
DETAILED DESCRIPTION
[0030] While various prior art configurations are shown and described in connection with FIG. 1, FIG. 2A and FIG. 2B, various exemplary embodiments associated with addressing the above issues and disadvantages and other issues and disadvantages are presented herein below. It should be noted that as used herein, stream content can refer to a playback stream file, playback stream object, or the like, In other words, stream content can refer to the content of such files, or objects, or can refer generally to the file or object itself.
[0031]In accordance with an embodiment, FIG. 3A shows a system 300 for retrieving stream content when the URL of the stored content does not exactly match the URL of the requested content. In the system 300, a request 302 can be generated and sent to the ISP 304 for a stream object 308, which as noted can refer interchangeably with stream content having an URL 318, http://v2.media.com/videoA.rm. The ISP 304 is connected to an ISP proxy cache 201 which stores content likely to be requested by the users of the ISP 304.
In the ISP proxy cache 201, an object 204’ having an URL 214, http://vi.media.com/videoA.rm has been previously stored, either through a previous request for the content, from a predictive caching operation, or the like as would be appreciated by one of ordinary skill. As the URL 214 of the cached object 204’ is different from the URL 318 of the requested object 308, the ISP proxy cache 201 returns a message 303, indicating, for example, that the content was not found. The ISP 304 can then check with a proxy device 305 for the requested object 308. It should be noted that in accordance with embodiments, the proxy device 305 can be configured to be incorporated into a proxy cache associated with the ISP 304 or can be incorporated into a proxy server external to the ISP 304.
[0032] In order to determine whether the requested object is present in the proxy device 305 after an unsuccessful attempt to locate the object in the proxy cache 201, the request 302 is forwarded to the proxy device 305 where the proxy device 305 checks, in the usual manner, whether the requested object 308 is available in a cache of the proxy device 305. If the object 308 is cached on the proxy device 305, which in the present example it is not, the proxy device 305 can return the content to the requestor. The proxy device 305 can additionally determine the “freshness” of the object 308 in the proxy device 305. For example, a cache setting may be asserted to limit the duration of objects in the cache to assure that the latest version is available. If the object 308 has expired, the proxy device 305 will retrieve the object from the Internet 103.
[0033] With reference to the present example, the requested object 308 is not available in the cache of the proxy device 305 based on the URL 318.
However, a version of the requested object with the same content, such as mirror object 308’ is available with a mirror URL of 318’. In a conventional cache, the content is unrecognizable based on the slight differences in URL 318’ and URL 318. However, in an embodiment, the proxy device 305 can be configured to compare only the file name portion of the URL as will be described in greater detail hereinafter. In such an embodiment, the file name portion of GRL 318’ and URL 318 will match and the mirror object 308’ can be delivered from the cache of proxy device 305 in connection with the request 302 after additional verification of the content.
[0034] In another embodiment, a fingerprint of the mirror object 308’, such as a metadata object, can be established and, in response to request 302, the proxy device 305 can access the content directly from URL 318 through an access to the Internet 103. URL 318 is one of several mirror sites 209 where the identical content can be stored. In such an external access, at least the beginning content can be retrieved and a fingerprint be established, such as a metadata object, for the retrieved content. A comparison can be made whereupon it can be confirmed that object 308’ and object 308 are identical, and the remainder of the content associated with object 308 as retrieved initially from URL 318 can be retrieved instead from the cache of the proxy device 305.
[0035] In connection with an embodiment, a user may request content and may playback only part of the content. For example, the requested content may be a complete stream file or may be a part of a stream file associated with a time position in the playback stream. The content may then be played in its entirety or may be stopped before completion. In a conventional system as previously described, the partially played back content will not be cached. However, in connection with embodiments, even partial content will be cached as described in greater detail herein below.
[0036] Referring to FIG. 3B, a request 302 can be made for object 321 as described hereinabove using URL 322. Since the URL 326 of the object 316 cached in the ISP proxy cache 201 is different from the URL 322 of the requested object 321, a message 303 indicating that the content was not found would be generated. The ISP 304 then forwards the request 302 to the proxy device 305 to determine whether at least a part of the requested object 321 is available in the cache 301 of the proxy device 305. It will be appreciated that in order to communicate with other entities, the proxy device 305 can be configured with a network interface 323, which can be an interface that uses a wired, wireless, or optical connection or the like. The proxy device 305 may be incorporated into other equipment, such as a server or other equipment that may include a network interface, whereupon communications may take place over a bus or internal network connection or the like as would be appreciated by one of ordinary skill.
The proxy device 305 determines that parts of the requested object 321, which, for example, have not expired, are cached on the proxy device 305. For example, the requested object 321 can actually be made up of a plurality of parts, portion, key segments, or the like, such as parts 306, 307, 309, 310, 311, 312 and 313, whereas the proxy device 305 has cached only the parts 307 and 306. As such, the proxy device 305 sends the request 302, which can be modified to request only the parts 309, 310, 311, 312, 313 not in the proxy device 305, to retrieve these parts from the respective mirror sites 209 via the Internet 103. Each of the parts 309, 310, 311, 312, 313 may be retrieved at the same time or different times. For example, the proxy device 305 can retrieve a part 309’ from a mirror site 209 (http://vi.media.com/videostream/videoA.rm?begin=123), and assemble the part 309° with the subsequent part 306’ available in the cache 301 of the proxy device 305 so as to deliver the connected parts 309’ and 306 to the user.
Accordingly, the user is likely to experience a reduction in the start up latency time because of lesser parts required to be retrieved from the mirror sites 209.
Further, requests for individual parts will be less like to be made and thus will be more readily available due to the reduced possibility of, for example, contention.
[0037] Each part 309’, 310’, 311°, 312’ and 313’ is retrieved and cached in the cache 301 of the proxy device 305. The proxy device 305 is configured to assemble the parts 309’, 310°, 311°, 312” and 313’ with the parts 306 and 307 to form a stream object 321° to be delivered in response to the request 302 or a subsequent request. In addition, the cache 301 and proxy device 305 can be configured to cache the individual parts of the stream object, preferably using the naming convention of the original content server, and thus provide independent access to the individual parts, which is not conventionally possible as caching partial content is not practiced as described herein above.
[0038] In accordance with an embodiment, FIG. 4A and FIG. 4B illustrate exemplary representations of components of a URL 400 and a stream object 404 capable of being cached and retrieved. The URL 400 can consist of various path segments such as protocol segment 401, a host or domain name segment 402 and a file name segment 403. The file name segment 403 refers to the file name of the stream object 404. The protocol 401 may be HTTP, FTP, or the like. It should be noted that for various mirror sites having the same content, such as content represented by file name segment 403, the domain name segment 402 may be different and thus would lead a conventional caching scheme to consider the actual content to be different. It can be appreciated that other problems can arise, such as the same content being referred to with different file names.
Further, the URL 400 can have unique segments that, when combined with the file name for the stream object, forms an identification path for the stream object.
Stream object 404 can contain parts such as segments 405-411, which can be, for example, key segments, key frames, or the like, containing the actual data associated with the content. It will be appreciated that, as will be described in greater detail hereinafter, the segments 405-411 can be stored with metadata. foo39] FIG. 4B shows a system 420 where a stream object 404 can be retrieved according to an exemplary embodiment. A request 412 for a stream object 404 having an URL 400, http://v2.media.com/videoB.rm can be generated and sent to an exemplary proxy device in accordance with embodiments. The URL 400 is identified by a protocol segment 401 “http”, a host segment 402 “v2.media.com”, and a file name segment 403 “videoB.rm”.
The request 412 is forwarded to the proxy device 305. In the present example, the requested object 404 is not available in the cache of the proxy device 305 based on the URL 400. However, the cache has a version 413 of the requested object 404 in the proxy device 305. The version 413 corresponds to a stream object 404’ having the same content as the requested object 404, but which is associated with a different URL 414 (http://v4.media.com/videoB.rm). It will be noted that the URL 414 is identified by a protocol segment 416 “http”, a host segment 417 “v4.media.com” and a file name segment 418 “videoB.rm”, which is the same file name as the file name segment 403 of object 404. The proxy device 305 can initially determine whether the cached stream object 404’ has the same content as the requested object 404 by comparing the file name segment 418 with the file name segment 403 associated with the requested URL 400. If the file name segments 418 and 403 are the same, the proxy device 305 can either retrieves the object 404’ from the cache of the proxy device 305 and the ISP streams the object 404’ to the user, or can conduct further verification such as obtain a fingerprint of each object and compare whether the fingerprints match.
In such a context, a fingerprint might be a correlation of the data associated with, for example, the first key frame or the like. It can also be considered that the file name segments 418 and 403 can be “fingerprints”. It will be appreciated that if the file name segments 418 and 403 do not match, corresponding to a “NO” at decision point 413, the proxy device 305 can retrieve the object 404 from the addressee via the Internet at 414. If the file name segments 418 and 403 match, corresponding to a “YES” at decision point 413, the content can be retrieved from cache at 415.
[0040] As noted hereinabove, the key segments can be stored with metadata as illustrated in greater detail in FIG. 5A. A stream object 500 can be provided with a plurality of key segments or key frames 501. Each key frame 501 can have a metadata part 502 and a data part 503. As shown in FIG. 5B, the metadata part 502 can be encoded with information relating to the stream object 500 such as a title 507, a duration 508 of the play back of the stream object 500, a creation date 509, and a copyright information 510. Other information may be encoded into the metadata 502. For example, if the stream object 500 is a video stream object or multimedia stream object, the metadata 502 can include information such as the frame rate at which the video was encoded, a width of the video display, a height of the video display. The title 507 can include a title that associates the particular portion with a time. For example, if each key frame represents 2 seconds of data, the title 507 can include the beginning time of the key frame. It will be appreciated that various arrangements for storing the content can be devised such that the stream object can be accessed at any point in time by making reference to the file name associated with the nearest earlier key frame.
[0041]In accordance with an embodiment, a process 511 is shown in FIG. 5C for retrieving a stream object. A request 512 for a stream object 530 can be forwarded, for example, to the proxy device 305 (not shown). It can be determined whether the stream object 530 associated with request 512 is available as a cached content 530’ of the proxy device 305. As illustrated, it is initially unknown whether cached object 530’ is the same as the requested object 530. As described generally herein above, the requested object 530 can be made up of a plurality of key frames 531, each key frame 531 having a metadata 514 and a data 515. Similarly, the cached stream object 530° has a plurality of key frames 532, each key frame 532 having a metadata 516 and a data 517. The metadata 514 can be encoded to include information relating to the requested stream object 530 such as, for example, a duration 518, a width 519 of the display of the stream object, a resolution 520 and a frame rate 521. The metadata associated with the cached content 513 can correspondingly include a duration 518’, a width 519° of the display of the stream object, a resolution 520° and a frame rate 521’.
[0042] To determine whether the cached stream object 530’ is the same content as the requested stream object 530, the proxy device 305 compares metadata 514 with metadata 516. Specifically, fields 518-521 in the metadata 514 of the requested stream object 530 can be compared with corresponding fields 518’-521°of the metadata 516 of the cached stream object 530°. If the metadata of the cached stream object 530’is the same as or otherwise matches the metadata of the requested stream object 530, corresponding to a YES at the decision point
522, the proxy device 305 can retrieve the stream object 530’ from the proxy cache at 524 and stream the content to the user at 525. However, if the metadata 516 of the cached stream object 513 and metadata 514 of the requested stream object 512 are different or otherwise do not match, the requested stream object 512 can be retrieved from the internet at 523, such as from a website or addressee associated with, for example, the host or domain segment of the URL path.
[0043] It will be appreciated that situations can arise where users only request part of a stream object such as, for example, a video file, by advancing the playback pointer on a media player to a position within the stream away from the beginning. As with previous examples, the stream object 602 can consist of a plurality of key frames 603, 604, 605 as illustrated in FIG. 6. A first request 606 can be generated for a part of the stream object, such as a key frame 603 of a stream object 602 via the ISP 102. The request 606 may be for a part of a stream object, for example, from a play time of 1:30 to a play time 2:00. The requested portion may not necessarily be exactly correlated to a key frame, but nonetheless corresponds to a portion of a video stream file. The nearest identifiable portion of the stream earlier in time can be, for example, key frame 603. The proxy device 305 determines that the stream object 602 or the key frame 603 is available in a cache of the proxy device 305. If the key frame 603 is not in the cache, the proxy device 305 retrieves the key frame 603’ from a website 610 associated with the requested key frame 603’. After retrieving the key frame 603’, the proxy device 305 caches the key frame 603’ in proxy device 305. It will be appreciated that in accordance with embodiments, the cache may reside on or be remotely connected to the proxy device 305. Over the course of time, a further or second request 607 for partial content that can be associated with a second key frame 604 can be made. Similarly, the second key frame 604’ is also retrieved from an addressee website 611 via the Internet 609. Similarly, a third request 608 for a third key frame 605, the third key frame 605’ is retrieved from an addressee website 612.
[0044] Each of the key frames 603’, 604’, 605’ are cached in the cache of the proxy device 305 unlike conventional caching schemes. The key frames 603’, 604’, 605’ may be cached under separate file name segments, but can also be assembled 614 and cached 615 on the proxy device 305 to form a complete stream object 602. It will be appreciated that in an embodiment, the proxy device 305 can be configured to conduct finger printing 613, for example, as described hereinabove, of the key frames of the stream object in the cache to ensure that the content or stream object delivered to the user is identical to the stream object in the cache of the proxy server.
[0045] In accordance with an exemplary method, as illustrated in FIG. 7, and after starting, such as initialization or power up of the proxy device, the ISP or equipment associated therewith such as servers or the like, the proxy server receives a request for a stream object at 701. The stream object may be a playback stream object such as an audio/video file, or a media file. The proxy server determines if the playback stream object or a part of the playback stream object is available on a cache of the proxy server at 702. It will be appreciated that if the entire object is requested by filename, and only a portion of the object is stored, unless the portion corresponds to the beginning key frame for the object, it will be unlikely that the partial content will be retrieved in response to the request. However, if only partial content is requested that corresponds to the cached partial content, it will be possible to retrieve the content from cache. If the playback stream object or a part of the playback stream object associated with the request is not available, corresponding to a NO at 702, or expired, corresponding to a YES at 704, the proxy server retrieves the object from, for example, a website via the Internet at 703. If the part of or the stream object is available on the cache, corresponding to a YES at 702 and has not expired, corresponding to a NO at 704, the proxy server validates the part of the stream object on the cache at 705. The parts not available on the cache can be retrieved from the respective website via the Internet at 706. Once all of the parts are available, they can be assembled to form a whole stream object at 707. It will be appreciated that the parts can be retrieved at one time or can be accumulated over time as different requests for partial content are made. While the process is indicated illustratively at stopping, it will be appreciated that the procedure can continue as long as the proxy device or ISP is in operation.
[0046] By partial caching, or caching parts of a stream object, the effects of slow communication links typically experienced in low-bandwidth networks are therefore reduced for the user during use of streaming applications or content with high request volume. Further, the user experience jitter free streaming and small/short startup latency in receiving the requested stream content.
[0047] The invention can also be extended to peer-to-peer traffic such as torrent traffic to provide an aggressive caching mechanism. Streaming protocols including HTTP, FTP or the like, may be used in the invention. The proxy device 305 can be in the form of hardware or software. For example, the proxy device
305 may be a web server that is capable of being installed on a device. The device may be a computer or a handheld device connected to the network.
[0048] While exemplary embodiments pertaining to the invention have been described and illustrated, it will be understood by those skilled in the technology concerned that many variations or modifications involving particular design, implementation or construction are possible and may be made without deviating from the inventive concepts described herein.

Claims (20)

CLAIMS:
1. A method for retrieving a stream object from a proxy device coupled to a network, the stream object capable of being represented by a file name, the stream object capable of being associated with one of a plurality of different Uniform Resource Locators (URLS), each of the plurality of URLs having unique segments such that when the one of the plurality of different URLs is combined with the file name for the stream object, an identification path for the stream object is formed, the method comprising: retrieving a first fingerprint including at least an initial part of the stream object based on a request for the stream object having a first identification path for the stream object including a first URL associated therewith; and comparing the first fingerprint with a second fingerprint associated with the stream object stored using a second identification path in a cache of the proxy device so as to determine if the cached stream object is identical to the requested stream object.
2. The method according to claim 1, further comprising retrieving the stream object from the proxy device if the cached object is identical to the requested stream object.
3, The method according to claim 1, wherein the first and the second fingerprint include the file name.
4. The method according to claim 1, wherein the first and the second fingerprint include metadata.
5. The method according to claim 4, wherein the metadata includes: a duration of the stream content, a video resolution and a frame rate.
6. The method according to any one of claims 1 to 4, wherein the stream object includes one of: a multimedia stream file; and a part of a multimedia stream file.
7. A method for caching a portion of a stream object in a proxy device coupled to a network, the portion of the stream object capable of being represented by a first file name, the stream object capable of being represented by a second file name, the stream object capable of being associated with one of a plurality of different Uniform Resource Locators (URLs), the method comprising: associating the portion of the stream object with a first fingerprint; and caching the portion of the stream object with the first fingerprint based on a request for one of the entire stream object, and the portion of the stream object, the request having a first identification path for the stream object and a first one of the plurality of URLs associated with the first identification path, wherein the first file name represents a parameter of the portion of the stream object in relation to the stream object.
8. The method according to claim 7, wherein when the request for the one includes the entire stream object, the portion of the stream object is cached using the first file name if a playback operation associated with the entire stream object is not completed.
0. The method according to claim 7, wherein when the request for the one includes the portion of the stream object the portion of the stream object is cached using the first file name.
10. The method according to claim 8 or claim 9, wherein when the request includes the first filename, the method further comprises comparing the first fingerprint with a second fingerprint associated with the stream object stored using a second identification path in a cache of the proxy device so as to determine if the cached stream object is identical to the requested stream object.
11. The method according to claim 7, wherein the parameter of the portion includes a time of the portion within the stream object.
12. The method according to claim 7, wherein the parameter of the portion includes metadata associated with the stream object.
13. A method according to claim 7, further comprising: retrieving the portion of the stream object from a remote server coupled to the network; caching the portion of the stream object in the proxy device; and assembling the retrieved portion with a cached portion of the stream object so as to form an assembled stream object; caching the assembled stream object in the proxy device.
14. The method according to claim 7, further comprising comparing a finger print of the assembled stream object with a finger print of the requested stream object so as to ensure that the assembled stream object is identical to the requested stream object.
15. A proxy device for enabling cache operations associated with a stream object over a network, the stream object capable of being represented by a file name, the stream object capable of being associated with one of a plurality of different Uniform Resource Locators (URLs), each URL having unique segments that, when combined with the file name for the stream object, forms an identification path for the stream object, the proxy device comprising: a network interface for processing communications associated with the stream object; a processor; and a cache in communication with the processor, the cache capable of caching the stream object and retrieving the stream object, the processor configured to: fingerprint at least an initial part of the stream object when the at least initial part of the stream object is stored in the cache based on a first filename of the at least initial part of the stream object, the object stored with a first identification path including a URL associated with the source of the at least initial part of the stream object; fingerprint the at least initial part of the stream object when a request is received for the at least initial part of the stream object having a first identification path for the stream object and first URL associated with the first identification path; and compare the first fingerprint with a second fingerprint associated with the stream object stored using a second identification path in the cache so as to determine if the cached stream object is identical to the requested stream object.
16. The proxy device according to claim 15, wherein the first and the second fingerprint include a file name.
17. The device according to claim 15, wherein the first and the second fingerprint include metadata.
18. The device according to claim 15, wherein the stream object is stored using a second identification path in the cache is one of a portion of the stream object, and a complete stream object.
19. The device according to claim 15, wherein the processor is configured to enable caching of a requested portion of the requested stream object if the requested portion is not in the cache of the proxy device.
20. The device according to claim 19, wherein the processor is configured to assemble the cached requested portion with a portion of the stream object stored in the cache so as to form connected portions of a stream object.
SG2011017548A 2011-03-10 2011-03-10 A method and apparatus for caching and retrieving a stream object SG184587A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
SG2011017548A SG184587A1 (en) 2011-03-10 2011-03-10 A method and apparatus for caching and retrieving a stream object

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
SG2011017548A SG184587A1 (en) 2011-03-10 2011-03-10 A method and apparatus for caching and retrieving a stream object

Publications (1)

Publication Number Publication Date
SG184587A1 true SG184587A1 (en) 2012-10-30

Family

ID=47504396

Family Applications (1)

Application Number Title Priority Date Filing Date
SG2011017548A SG184587A1 (en) 2011-03-10 2011-03-10 A method and apparatus for caching and retrieving a stream object

Country Status (1)

Country Link
SG (1) SG184587A1 (en)

Similar Documents

Publication Publication Date Title
AU2018202004B2 (en) Enhanced streaming media playback
US9628554B2 (en) Dynamic content delivery
US9398064B2 (en) Method of streaming media to heterogeneous client devices
US8429169B2 (en) Systems and methods for video cache indexing
EP2263208B1 (en) Content delivery in a network
KR101330052B1 (en) Method for providing content caching service in adapted content streaming and local caching device thereof
US9509784B2 (en) Manifest chunking in content delivery in a network
US20170149860A1 (en) Partial prefetching of indexed content
US20120297410A1 (en) Streaming With Optional Broadcast Delivery of Data Segments
US20090222515A1 (en) Methods and apparatus for transferring data
US10200490B2 (en) Content-based redirection
US8817983B2 (en) Streaming video to cellular phones
US9386099B2 (en) Local caching device, system and method for providing content caching service
US20150113101A1 (en) Method and apparatus for providing streaming content
WO2016074149A1 (en) Expedited media content delivery
WO2016063161A1 (en) Partial prefetching of indexed content
SG184587A1 (en) A method and apparatus for caching and retrieving a stream object
US20200186878A1 (en) Efficient Prefetching of Common Video Clips
US9288153B2 (en) Processing encoded content
KR20130134911A (en) Method for providing content caching service in adapted streaming service and local caching device thereof