`Akamai Techs. v. Equil IP Holdings
`IPR2023-00332
`
`
`
`Zimbabwe
`
`Albania
`Armenia
`Austria
`Australia
`Azerbaijan
`Bosnia and Herzegovina
`Barbados
`Belgium
`Burkina Faso
`Bulgaria
`Benin
`Brazil
`Belarus
`Canada
`Central African Republic
`Congo
`Switzerland
`Céte d’Ivoire
`Cameroon
`China
`Cuba
`Czech Republic
`Germany
`Denmark
`Estonia
`
`SI
`SK
`SN
`SZ
`TD
`TG
`TJ
`
`Slovenia
`Slovakia
`Senegal
`Swaziland
`Chad
`Togo
`Tajikistan
`Turkmenistan
`Turkey
`Trinidad and Tobago
`Ukraine
`Uganda
`United States of America
`Uzbekistan
`Viet Nam
`Yugoslavia
`
`FOR THE PURPOSES OF INFORMATION ONLY
`
`Codes used to identify States party to the PCT on the front pages of pamphlets publishing international applications under the PCT.
`
`™T
`
`R
`TT
`UA
`UG
`US
`UZ
`VN
`YU
`ZW
`
`ES
`FI
`FR
`GA
`GB
`GE
`GH
`GN
`GR
`HU
`IE
`IL
`IS
`IT
`JP
`KE
`KG
`KP
`
`KR
`KZ
`LC
`LI
`LK
`LR
`
`Spain
`Finland
`France
`Gabon
`United Kingdom
`Georgia
`Ghana
`Guinea
`Greece
`Hungary
`Treland
`Tsrael
`Iceland
`Ttaly
`Japan
`Kenya
`Kyrgyzstan
`Democratic People’s
`Republic of Korea
`Republic of Korea
`Kazakstan
`Saint Lucia
`Liechtenstein
`Sri Lanka
`Liberia
`
`LS
`LT
`LU
`LV
`MC
`MD
`MG
`MK
`
`ML
`MN
`MR
`MW
`MX
`NE
`NL
`NO
`NZ
`PL
`PT
`RO
`RU
`SD
`SE
`SG
`
`Lesotho
`Lithuania
`Luxembourg
`Latvia
`Monaco
`Republic of Moldova
`Madagascar
`The former Yugoslav
`Republic of Macedonia
`Mali
`Mongolia
`Mauritania
`Malawi
`Mexico
`Niger
`Netherlands
`Norway
`New Zealand
`Poland
`Portugal
`Romania
`Russian Federation
`Sudan
`Sweden
`Singapore
`
`
`
`WO 98/43177
`
`PCT/US98/05304
`
`SYSTEM FOR DYNAMICALLY TRANSCODING DATA
`TRANSMITTED BETWEEN COMPUTERS
`
`Background of the Invention
`
`This application claimsthe benefit of U.S. Provisional Application
`No. 60/041,366, filed March 25, 1997.
`
`Field of the Invention
`
`The presentinvention relates generally to the field of data
`communicationsfor personal computers (PCs), andin particular to a system for
`dynamically transcoding data transmitted between two computers over a
`communicationslink.
`
`Related Art
`
`The Internet is quickly becoming the preferred data communications
`medium for a broad class of computerusers ranging from private individuals to large
`multi-national corporations. Such users nowroutinely employ the Internet to access
`information,distribute information, correspond electronically, and even conduct
`personal conferencing. An ever-growing numberofindividuals, organizations and
`businesses have established a presence onthe Internet through “web pages” on the
`World-Wide Web (WWW).
`
`For a widevariety of reasons, it may be desirable to manipulate data
`transmitted betweena local client computer and a network server computer. For
`
`-l-
`
`10
`
`15
`
`20
`
`
`
`WO 98/43177
`
`PCT/US98/05304
`
`example, in certain instances it may be advantageous to dynamically add, modify or
`
`delete content retrieved from an Internet server computer before that contentis
`
`provided to a client computer. Conversely, it may be advantageous to modify a
`
`content request from a client computerprior to transmitting the request to an Internet
`
`server computer. While such dynamic manipulation of requests and responsesis
`
`desirable, it is impractical to expect the expansive Internet infrastructure to quickly
`
`change to accommodate such a new capability. For this reason,it is desirable to
`
`implement such new capabilities in a way that does not require changesto either
`
`existing client computers or Internet server computers.
`
`10
`
`It is knownto deploy a proxy server, or network proxy, as an
`
`intermediary between one or moreclient computers and an external network such as
`
`the Internet. Network proxies are described generally in Ian S. Graham,HTML
`
`Source Book: A Complete Guide to HTML 3.0 403 (2d ed. 1996). One common
`
`15
`
`application for a proxy serveris as a so-called “firewall,” wherein the proxy serveris
`
`responsible for all communications with the outside world. In other words, local
`
`devices are not permitted to communicate directly with external network computers,
`
`suchas Internet servers. Instead, each local device directs requests for network-
`
`resident data to the proxy server. When the proxy server receives such a request,it
`
`20
`
`forwards the request to the appropriate external computer, receives the response
`
`from the external computer, and then forwards the responseto the local device. The
`
`external computer thus has no knowledgeofthe local devices.
`
`In this way, the local
`
`devices are protected from potential dangers such as unauthorized access.
`
`25
`
`Existing proxy servers do not manipulate the data passing through
`
`them. In essence, proxy servers are merely blind conduits for requests and responses.
`
`This limitation of existing proxy servers restricts these devices from being usedto full
`
`advantage whenfacilitating communications betweenlocal devices and network
`
`devices. There is therefore a need for a so-called “smart” proxy capable of examining
`
`30
`
`the data passing through it, whetherit be a request intended for an external network
`
`device or network content being returned to a local device, and dynamically acting
`
`-2-
`
`
`
`WO 98/43177
`
`PCT/US98/05304
`
`upon that data. Such a device can be used to transparently provide a wide range of
`
`services that were heretofore impossible without modifying existing Internet
`
`infrastructure.
`
`Summary of the Invention
`
`Embodimentsofthe present inventionrelate to devices, systems and
`
`methodsfor transcoding information transmitted between computers, such as a
`
`network server computer and a networkclient computer.
`
`According to one embodiment, an apparatus for use in transmitting
`data between a network server and a networkclient over a communicationslink
`includes a parser coupled to a transcodeservice provider. Theparser is configured
`to selectively invoke the transcode service provider in response to a predetermined
`
`selection criterion.
`
`10
`
`15
`
`Brief Description of the Drawings
`
`Fig. 1 is a schematic diagram illustrating an environment in which
`
`embodiments of the present invention may beapplied.
`
`Fig. 2 is a schematic diagramillustrating a transcoder module
`according to an embodimentofthe present invention.
`
`20
`
`Fig. 3 is a schematic diagram illustrating an embodimentof the
`
`present invention for a non-enabled networkclient.
`
`Fig. 4 is a schematic diagram illustrating an example of a user
`
`interface for providing a non-enabled networkclient with control over transcoding
`
`25
`
`functionality.
`
`Fig. 5 is a schematic diagram illustrating an embodiment of the
`
`present invention for an enabled networkclient.
`
`Fig. 6 is a schematic diagram illustrating a networkclient with
`
`transcoding functionality integrated in a browser according to an embodimentof the
`
`30
`
`present invention.
`
`
`
`WO 98/43177
`
`PCT/US98/05304
`
`Figs. 7-9 are flow chartsillustrating logic for presenting a requested
`
`URL object to a network client according to an embodimentof the present invention.
`
`Detailed Description
`
`Embodiments of the present invention providetheability to
`
`dynamically transcode information transmitted between, for example, a network
`
`server computer and a networkclient computer. As used herein, the term
`
`“transcode”applies to virtually any manipulation of data including, but not limited to,
`
`adding, modifying or deleting data.
`
`10
`
`Referring now to Fig. 1, which illustrates an environment in which
`
`embodiments of the present invention may be advantageously applied, a network
`
`server 10 managesthe transfer of data from the Internet 18 to a networkclient 12.
`
`Network client 12 may be any computer having suitable data communications
`
`15
`
`capability.
`
`Network client 12 communicates requests for information to, and
`
`receives information from, network server 10 over a client/server communications
`
`link 14. Client/server communicationslink 14 may comprise, for example, a so-called
`
`20
`
`“slow network”using, for example, POTS (Plain Old Telephone System) dial-up
`
`technology or wireless connections. Alternatively, client/server communicationslink
`
`14 may comprise a so-called “fast network,” such as a LAN or WAN (Wide Area
`
`Network), whichis capable of operating at much higher speeds than are possible with
`
`slow networks. Combinations of these access methodsare also possible. For
`
`25
`
`example, network client 12 may use a POTSorwireless dial-up connection to a
`
`modem bank maintained by an ISP (Internet Service Provider), whichis in turn
`
`connected to network server 10 over a LAN. Network server 10 communicates with
`
`computers resident on Internet 18 through server/network communicationslink 16,
`
`which may comprise any suitable communications medium knownin theart.
`
`30
`
`
`
`WO 98/43177
`
`PCT/US98/05304
`
`Accordingtoa first general embodiment of the present invention,
`illustrated schematically in Fig. 2, a transcoder 20 includes a parser 22 and a plurality
`of transcode service providers 24. Parser 22 is configured to act upon data received
`
`by transcoder 20, such as a request for a network object generated by a client device
`or a reply to such a request provided by a content server device.
`In this particular
`embodiment, parser 22 is responsible for selectively invoking one or more of
`
`transcode service providers 24 based upon a predeterminedselection criterion.
`
`Transcoder 20 may be implemented, for example, as a software
`module installed in a network proxy, in a client device, in a network server device, or
`in a content server device. In one particular implementation,illustrated in Fig. 3,
`
`transcoder20is installed in a remote transcoding server 34 arranged between
`
`networkclient 12 and Internet 18. Transcoding server 34 may comprise, or be a part
`of, a network server, a stand-alone computer in communication with a network
`server, or a distributed system of computers. Remote transcoding server 34 may be
`coupled, for example, to an ISP’s network, a corporate network, or anywhere on
`
`Internet 18, and may provide multiple users(i.e., clients) with a means to obtain
`
`content on Internet 18.
`
`In the particular embodimentillustrated in Fig. 3, transcoding server
`
`34 includes an HTTP (HyperText Transfer Protocol) remote proxy 36, capable of
`
`accessing Internet 18 over server/network communicationslink 16. HTTP remote
`
`proxy 36 differs from known network proxies, which generally are little more than a
`
`conduit for requests to, and replies from, external Internet resources, in thatit is
`
`10
`
`15
`
`20
`
`25
`
`capable not only of examining such requests andreplies, but also of acting upon
`
`commandsin the requests by, for example, determining whether or not to transcode
`
`content. Moreover, using transcoder 20, HTTP remote proxy 36 is capable of
`
`changing contentreceived from Internet 18 prior to returningit to a requesting
`
`networkclient 12, as is explained further below.
`
`30
`
`
`
`WO 98/43177
`
`PCT/US98/05304
`
`Looking moreclosely at the embodimentin Fig. 3, transcoder 20 is
`
`coupled to HTTP remote proxy 36. Parser 22 managesthe transcoding of data to be
`
`transmitted from transcoding server 34 to network client 12. To this end, parser 22
`
`controls transcode service providers 24 to selectively transcode content based on a
`
`predeterminedselection criterion. For example, one or more transcode service
`
`providers 24 may provide the capability to compress and/orscale different types of
`
`data content, such as image, video, or HTML (HyperText Markup Language). Such
`
`uses are described further in co-pending U.S. patent applications Serial No.
`
`08/772, 164 entitled “System for Enhancing Data Access Over a Communications
`
`10
`
`Link,”filed on December 20, 1996, and Serial No. 08/799,654 entitled “Method and
`
`Apparatus for Scaling Image Data,”filed on February 11, 1997, both of which are
`
`assigned to Intel Corporation. For purposesofillustrating certain features of the
`
`present invention, a number of embodiments are described below in terms of content
`
`scaling/compression; however,as is explained, transcode service providers 24 may
`
`15
`
`provide a wide variety of transcoding functions.
`
`As shownin Fig. 3, transcoding server 34 mayalso includea server-
`
`side cache memory 30 managedby a server-side cacheinterface 28. Server-side
`
`cache memory 30 maybeusedto store both original and transcoded versions of
`
`20
`
`content for later transmission to networkclient 12 without the need to re-retrieve the
`
`content from Internet 18 or to re-transcode the content.
`
`Transcoding server 34 is coupled to networkclient 12 by client/server
`
`communicationslink 14. Network client 12 includes a browser 32, such as the
`
`25
`
`Netscape Navigator v.3.0 browser (although the inventionis not limited in this
`
`respect), which managesthe presentation of data to a user. In this embodiment,
`
`networkclient 12 is “non-enabled,” meaning no specialized transcoding softwareis
`
`preloaded on networkclient 12.
`
`30
`
`Parser 22 may comprisea relatively simple, uniform interface to
`
`-6-
`
`
`
`WO 98/43177
`
`PCT/US98/05304
`
`HTTP remote proxy 36, and may provide an API (Application Programming
`
`Interface) for transcoding data received by HTTP remote proxy 36. Parser 22
`
`manages one or moretranscodeservice providers 24 that are accessed through a
`
`common SPI (Service Provider Interface). In this particular embodiment, parser 22
`
`is designed in compliance with the Windows Open Systems Architecture (WOSA),
`
`and may be implemented as a Win32 DLL (Dynamic Link Library). The WOSA
`
`architecture, described in Readings on Microsoft Windows and WOSA(Microsoft
`
`Corp. 1995), enables additional transcode service providers 24 to be dynamically
`
`added to the system to provide new features and/or better transcoding algorithms,
`
`10
`
`while at the same time not requiring changing or retesting other software components
`
`in the system. This feature is especially beneficial where transcoding server 34 also
`
`interacts with “enabled” network clients equipped with specialized transcoding
`
`software. It should be noted that someofthe features of parser 22 described below
`
`15
`
`maybe inapplicable to the non-enabled client embodiment of Fig. 3; however,
`transcoding server 34 may advantageously be configured flexibly enough to process
`requests from both non-enabled and enabled networkclients.
`
`Like parser 22, server-side cache interface 28 may be modeledafter a
`
`standard Get/Set interface. Server-side cache memory 30essentially “owns”all
`
`20
`
`cached objects, in that it manages the properties and storage of the objects and may
`
`invalidate any non-locked object at any time; however, the actual format of any given
`
`cached object is known only by parser 22 and its associated transcode service
`
`providers 24. Thus, for data integrity and transcoding efficiency purposes,all access
`
`to server-side cache memory 30 in this embodimentis through parser 22.
`
`Server-side cache interface 28 may include the followingcalls:
`
`CreateEntry(URL, &Entry,...);
`GetEntry(URL, &Entry);
`CreateStream(Entry, &StreamEntry,...);
`GetStream(Entry, &StreamEntry,...);
`CloseEntry(Entry);
`CloseStreamEntry(StreamEntry);
`
`25
`
`30
`
`
`
`WO 98/43177
`
`PCT/US98/05304
`
`GetProperties(Entry, &Properties,...);
`SetProperties(Entry, &Properties, ...);
`Read(StreamEntry, &OutStream,...);
`Write(StreamEntry, &InStream,...).
`
`Unlike most cache memories, server-side cache interface 28 and server-side cache
`
`memory 30 enable maintenance of multiple representations of a given cached object,
`
`with descriptive information about each representation included in server-side cache
`
`memory 30. In addition, server-side cache interface 28 and server-side cache
`
`10
`
`memory 30 serve as a synchronization point for multi-threaded accesses to cached
`
`objects. It should be noted thattheillustrated embodiment doesnot require any
`
`particular configuration for server-side cache interface 28 and/or server-side cache
`
`memory 30. Indeed, functionality attributed to these componentsin the various
`
`embodiments described herein maybe readily implemented in other system
`
`15
`
`components.
`
`The CreateEntry() call creates and returns a cache entry for a specified
`
`hypertext object. This call also creates an entry stream for an original version of the
`hypertext object. Similarly, the GetEntry() call obtains a cache entry for a hypertext
`object already existing in cache memory 30. Both the CreateEntry() and GetEntry()
`
`calls set locks on associated cached objects until a CloseEntry() call is invoked. Once
`
`a lock is set, the cached object will not be replaced or invalidated by cacheinterface
`
`28, permitting one or more transcodeservice providers 24 to safely perform any
`
`required cache operations, such as objectretrieval and/or storage.
`
`20
`
`25
`
`After a cache entry is created or opened by a CreateEntry() or
`
`GetEntry()call, the CreateStream() or GetStream() calls may respectively create or
`
`open an extra stream entry for the cached object. Each extra stream entry is
`
`associated with a different transcoded version ofthe hypertext object, which may be
`
`30
`
`retrieved or appended to by one oftranscodeservice providers 24. Stream-based
`
`processing of cached objects makesit possible for transcoding server 34 to begin
`
`transmitting a transcoded versionof a hypertext object to a requesting networkclient
`
`-8-
`
`
`
`WO 98/43177
`
`PCT/US98/05304
`
`12 even while transcode service provider 24 is appending additional transcoded
`content to that same version. Advantagesofthis stream-based processing include
`reducinguser latency through incrementalpainting of objects and avoiding
`unnecessary idle time onclient/server communicationslink 14, thereby providing
`users with a more responsive “feel.”
`
`The GetProperties() and SetProperties() calls retrieve and store
`information about cachedobjects, including information maintained by transcode
`service provider 24 used to determine transcoding properties and transcodingstatus
`of a cached object. Transcodeservice provider 24 may use such information, for
`example, to determine current compression progress for scaled data access and
`
`staged refinements.
`
`The Read() call reads data from a specified cached object data stream.
`For example, transcode service provider 24 may invokethis call and tunnel stream
`data through HTTP remote proxy 36 directly to network client 12. The Write() call
`cachesdata from a new HTTPdata stream. Thiscall will append an incoming data
`stream received from, for example, a Webserver ortranscodeservice provider 24, to
`an opened cache stream which maybe concurrently read using the Read() call.
`In the present embodiment, parser 22 includes the following calls:
`
`GetObject(URL, InParams, &OutParams, &OutStream,...);
`GetScaledObject(URL,InParams, &OutParams, &OutStream,Stage,
`
`3 P
`
`utObject(URL,InParamStruct, &InStream, &OutParams,
`&OutStream,...).
`
`Asdetailed below, parser 22 uses these calls to manage the provision of requested
`content to network client 12.
`
`The GetObject() call is used to service non-enabledclient requests,
`and returns a non-transcoded(i.e., original) version ofa specified hypertext object.
`In this embodiment, transcoding server 34 assumes that each HTTP request has a
`uniquethread that may be blocked until the requestis satisfied. Accordingly, the
`
`-9.
`
`10
`
`15
`
`20
`
`25
`
`30
`
`
`
`WO 98/43177
`
`PCT/US98/05304
`
`GetObject() call will block until it either returns the requested data stream or
`indicatesfailure with a cause (e.g., object does not exist). This ability to return a so-
`called standard hypertext object is advantageous for compatibility reasons, enabling
`embodimentsof the present invention to be used with existing browsers that do not
`include support for certain transcoding functionality (e.g., advanced data
`
`compression), and enabling users to selectively retrieve non-transcodedversions.
`
`The GetScaledObject() call is similar to GetObject(), and is also used
`
`to request an object from server-side cache memory 30; however, it adds support for
`requesting a particular version of that object, such as a high-quality rendition. Unlike
`
`10
`
`15
`
`20
`
`traditional caching proxies, transcode service providers 24 can use server-side cache
`
`memory 30 to store several different versions of an object to support clients with
`different communications and/or presentation capabilities. Thus, an additional
`“Stage” parameter may be usedto indicate which version ofthe cached objectis to
`be returned to network client 12. Where transcodeservice provider 24 is configured
`to scale network content, it may use this parameter to request a version of a cached
`object having, for example, a default scaled quality, a refinementto a better-quality
`version, or the original non-scaled version.
`
`In this embodiment, when networkclient 12 requests a hypertext
`
`object, HTTP remote proxy 36uses either the GetObject() or GetScaledObject() call
`
`(depending on if networkclient 12 is capable of receiving scaled/transcoded
`
`datatypes) to retrieve the hypertext object from parser 22. If the hypertext objectis
`
`not found, parser 22 uses the CreateEntry() call to create an entry (in effect, a
`
`25
`
`placeholder) in server-side cache memory 30 for the new object. The new entry is
`
`returned to HTTP remote proxy 36, which requests the hypertext object from
`
`Internet 18. As a data stream for the hypertext object is returned, HTTP remote
`
`proxy 36 calls parser 22 using the PutObject() call, passing into this call the new
`
`entry and the handleto the data stream to be placedinto the entry. Parser 22 selects
`
`30
`
`an appropriate transcodeservice provider 24 based, for example, on the content type
`
`-10-
`
`
`
`WO 98/43177
`
`PCT/US98/05304
`
`of the data stream. In this context, the term content type encompassesa datatype, an
`HTTP MIME (Multipurpose Internet Mail Extensions) type, a content format, and so
`on. The selected transcode service provider 24 usesa separate thread to read the
`
`incoming data stream, transcodeit, and placeit within the entry of server-side cache
`
`memory 30. The current thread immediately returns to HTTP remote proxy 36,
`which once again calls GetScaledObject() (or GetObject()). This case will always
`result in a cache hit. This thread then works simultaneously with the separate thread
`in the PutObject() to tunneldata (either original or transcoded) from transcoding
`
`server 34 to networkclient 12.
`
`10
`
`15
`
`Multiple-thread processing improvesthe efficiency of the present
`embodimentby not waiting for a hypertext object to be received in its entirety by
`HTTP remote proxy 36, or addedin its entirety to server-side cache memory 30,
`before beginning to send the object to network client 12. Another benefit of
`
`multiple-thread processingis that parser 22 may efficiently process requests for the
`same hypertext object from multiple network clients 12. The hypertext object need
`only beretrieved from Internet 18 once, and appropriate versions may be transmitted
`
`to such multiple network clients 12 concurrently. It should be noted, however, that
`
`embodiments ofthe present invention may be implemented without multiple-thread
`processing.
`
`20
`
`As noted above, parser 22 mayselectively invoke one of transcode
`
`service providers 24 based uponsatisfaction of a predetermined selection criterion.
`
`Suchselection criterion may comprise, for example, information contained in a
`headerportion of a data packet received by transcoding server 34, such as a MIME
`
`25
`
`type, a URL (Uniform Resource Locator), a last modified time indicator and so on.
`
`Alternatively, the predetermined selection criterion may comprise information
`contained in a data portion of such a data packet, suchasparticular content, key
`words, structures (for example, heading levels), and so on. Still further, the
`
`30
`
`predetermined selection criterion may comprise a condition of the device on which
`
`-ll-
`
`
`
`WO 98/43177
`
`PCT/US98/05304
`
`transcoding server 34is installed (for example, a current processing load), a
`
`condition of a device to which transcoding server 34 is coupled, or a condition of a
`
`communicationslink. Transcoding server 34 may provide the ability to dynamically
`update such predeterminedselectioncriteria.
`
`10
`
`15
`
`20
`
`25
`
`Thefollowing discussion providesstill more examples of the types of
`
`information which maybeusedto dictate which of transcodeservice providers 24 are
`invoked. It should be noted, however, that these examples are provided by way of
`illustration only, and are not intended to limit in any way the scope of the invention
`
`claimed herein. The predetermined selection criterion may comprise: (1) network
`client 12, such as a display dimension, resolution, numberofcolors, processortype,
`memory/disk configuration, modem or networkinterface type, installed add-in boards
`
`(for example, hardware compression/decompression), software configuration (for
`example, availability of pre-installed software decompression modules), physical
`location/proximity (for example, as determined by a telephone area code), and user
`identity; (2) characteristics of transcoding server 34 or some other network server,
`
`including system load andidentification information (for example, the owner ofthe
`
`server); (3) content characteristics, such as its data type, type of
`
`encoding/compression,size, and dimension; (4) network characteristics, including
`best-case, worst-case and average latency, bandwidth and/orerrorrates (for example,
`for wireless communications) between network client 12 and a proxy, and/or between:
`
`a proxy and a server (this may be predetermined for guaranteed bandwidthlinkslike
`
`ATM(Asynchronous Transfer Mode), or dynamically measured/predicted for so-
`
`called “best effort” links like many IP (Internet Protocol) links); (5) proxy
`characteristics, including system load,available storage, physical location/proximity,
`and identity (owner); (6) user preferences, including preferred content quality/speed
`tradeoff, language, content rating, exclusionlist, inclusion list, data type-specific
`preferences (for example, “never download” images), include/exclude advertising,
`amountof advertising desired, offensive language removal, whetherthe user’s
`
`30
`
`defined or learned preferences may be disclosed (and to whom), custom rulesor
`
`-12-
`
`
`
`WO 98/43177
`
`PCT/US98/05304
`
`programsforfiltering/transcoding/processing data, and shared preferences with either
`another user or a groupof users(any ofthe foregoing user preferences may be
`explicitly defined or system predicated, such as based on usagestatistics compiled
`overtime); (7) group preferences, including results from collaborative rating systems,
`whether manual (for example, a prior user manually assigned a rating to a Web page
`after viewingit) or automatic (for example, given a large number of users who
`accessed a link on a given page, the probability of any given user subsequently
`following thatlink); (8) content provider preferences, including the degree of
`alteration desired for its content, the prioritization for download and display of
`different content types, cacherestriction or prioritization parameters such as update
`frequency or replacementpreferences, the types of users to target, rules or programs
`to run for customizing content (for example, newsor advertising, custom language
`translation software) basedonuserorclient characteristics, desire for receiving
`certain types of user or group data collected (for example, demographicsor access
`patterns), and type of payment/reward offered in exchange for such information; and
`(9) other preferences, including software vendorrules or programs for dynamically
`checking content created ordistributed using unauthorized software and companies’
`desire to enforce correct usageof certain types of content (for example, trademarks
`and logos).
`
`Applying the above-listed selection criteria, or combinationsthereof,
`
`embodimentsofthe present invention maybe used to providea virtually limitless
`range of dynamic transcoding services. For example, client and/or proxy physical
`
`proximity, in combination with demographic data, may be used for extremely
`targeted advertising. Such advertising may be addedto any content passing through
`a proxy, for example, or some other mechanism. This canin turn be tailored even
`
`further based upontheuser’s willingness to tolerate advertising or share demographic
`information, as well as the advertiser’s ability/willingness to subsidize or otherwise
`
`reward the user for participation.
`
`10
`
`15
`
`20
`
`25
`
`30
`
`-13-
`
`
`
`WO 98/43177
`
`PCT/US98/05304
`
`Embodimentsofthe present invention may be advantageously used to
`reduce the amountofdata that is transmitted to network client 12, thereby promoting
`faster downloading and rendering of content. Suitable transcoding techniquesinclude
`lossy compression andtranscoding to a more efficient (and perhaps not widely
`supported) formatspecifically for the transmission. Similarly, HTTP remote proxy
`36 may be configuredto “predigest” Websites or groupsofsites to produce
`extremely condensed overviewsoflarge amounts of content (for example, a tree
`structure, pages with onlyfirst-level or first- and second-level headings, thumbnails
`of pages, oronly parts of a pageorsite that have changedsincethe user’s lastvisit).
`Such applications may be especially advantageous for poorly-connected or
`computationally limited devices such as PDAs(PersonalDigital Assistant), since this
`predigestion can be performed ona well-connected proxy server with an abundance
`of computational power, and the concise result can be easily downloaded and
`
`rendered on the morelimited device.
`
`Embodimentsof the present invention may alternatively be used for
`dynamic translation of data, such as Web pages,to a user’s native language
`(determinedby user preference or automatically by the physical location of network
`
`10
`
`15
`
`client 12 or transcoding server 34). Suchacapability greatly simplifies the task of
`making contenttruly global, as well as reduces storage and maintenance requiredat
`the content provider (that is, only one copy ofthe content need be maintained,rather
`than different copies for each ofa plurality of different languages).
`
`20
`
`25
`
`Embodimentsof the present invention may be used to block certain
`types of content or to automatically censor offensive language(similar to a “beep”
`usedfor television broadcasts). Only the particular offensive parts of the content (for
`example, obscene words) may be removed, or entire Web sites may be blocked.
`Similarly, transcoding server 34 may be configured to scan content for certain words
`
`or phrases to ensure that trademarksor logos are used correctly (for example, as a
`source identifier rather than a generic product designation). This feature may be
`offered as a service to companies or organizations, who would supplyalist of words
`
`30
`
`-14-
`
`
`
`WO 98/43177
`
`PCT/US98/05304
`
`or phrases to flag. A similar capability could be used to automatically insert links into
`the content upon detection of certain words or phrases. For example, Intel
`
`Corporation might want to automatically add a link to its corporate Website
`
`wheneverthe name“Intel” is used in a Web page. Using an embodimentof the
`
`presentinvention, suchlinks can be dynamically added to the content beforeit is
`
`displayed to a user. In a similar vein, an embodimentofthe present invention may be
`used to scan for content that wascreated or distributed using unlicensed software.
`
`This feature may be implemented using special keys (binary bit patterns) embeddedin
`the content or headersputin by the content creation or distribution software. The
`
`10
`
`scanninglogic andlogic for taking a predetermined responsive action, such as
`
`denying service or posting a warning, may optionally be supplied by the vendorofthe
`
`software in question or configured into transcoding server 34.
`
`Embodimentsof the present invention may also be used to scan
`
`15
`
`content for computervirusesprior to sending such content to networkclient 12. For
`
`example, an existing virus scanning routine maybe installed on transcoding server 34,
`possibly as a plug-in module. Transcoding server 34 may then be configured to
`invoke the virus scanning routine to ensure any content transmitted to network client
`
`12 is free of viruses. A significant advantage provided by such an embodimentis that
`
`20
`
`virus scanning software need only be maintained on transcoding server 34, rather
`
`than onaplurality of network clients 12. In this way, the benefit of upgradesto the
`
`virus checking software may beefficiently and timely provided to large numbers of
`
`users, thus avoiding the problem of any particular user relying on outdated virus
`
`scanning software.
`
`25
`
`Embodiments of the present invention may also be used to produce
`
`custom content on demandin accordance with user-specific preferences and/or
`
`associations with collaborative rating systems. In a variation on such an embodiment,
`
`transcoding server 34 can collect preferences and append them aspart ofa client
`
`30
`
`request transmitted to a content provider so that the dynamic content generation can
`
`-15-
`
`
`
`WO 98/43177
`
`PCT/US98/05304
`
`be doneat the content server. Likewise, a proxy provider (for example, an Internet
`Service Provider (ISP)), can collect and make