[0001] This application claims the benefit of Provisional Application, U.S. Serial No. 60/253,195, filed on Nov. 27, 2000, entitled “IMAGE FILTER PROXY”, by Kenneth W. Richards and Charles W. Frank.
[0002] The present invention relates to a filter proxy system and method, more particularly, to a filter proxy system for comprehensive content acceleration and automated content formatting and method for re-authoring, re-purposing, and/or compressing content control languages, text, images, and/or other content for delivery and/or interaction with devices of varying, type, capacity, and/or bandwidth availability without operator's intervention, and interaction with other systems having same filter proxy systems for reducing bandwidth utilization between each other and a requesting device, and distributing the re-authoring, re-purposing, and compression processing of the content control language, and/or images, and/or other content for delivery of and/or interaction with devices of varying capacity and/or bandwidth availability without operator's intervention.
[0003] In the recent years, Internet technology has been developed rapidly, particularly in the areas of increasing speed of communication media, reducing bandwidth requirements for content movement, and increasing speed of access to resources on the network. However, there are few technologies focusing on solutions to bandwidth usage and control when transmitting control code, images, and/or text, and other content over local or wide area networks, wired or wireless communications media interacting across networks to coordinate bandwidth management from source to rendering device, content re-purposing for device specific requirements, and the processes involved therein.
[0004] One issue is related to access to the World Wide Web (WWW) or other Internet/Intranet network site by devices of limited capability, different operating systems, limited or constrained bandwidth whether the devices are on a wired or wireless network. Devices vary from having no capability to render images to those having full capability to render color images. Operating systems, applications, and memory restrictions vary from one device to another. These variations further restrict rendering capability, functional capability, and interaction with an original content when served on a WWW site to a device with limited rendering and viewing capabilities. Current methods of overcoming these restrictions are to statically and manually re-author each page and/or re-purpose each image individually for each specific device.
[0005] In other words, when an image/text content on a WWW or other Internet/Intranet network site is requested to be downloaded on a receiving device, the image/text content may have to be changed to meet a receiving device's specifications/requirements. Receiving devices are often of different types with different specifications/requirements. For example, receiving devices may have limited image/text capability, different operating systems, limited or constrained bandwidth, etc. Accordingly, image/text content designers have to review, and often times have to change the image/text content, when the image/text content is sent to a different receiving device. In the existing methods, each page of text content for each specific device is statically and manually re-authored. Further, each image of the WWW page content may need to be individually re-purposed for each specific device to a different file type and saved. Furthermore, when the size of an image/text is too large to fit a receiving device, the image/text must be manually re-sized and saved consuming disk space. Typically, in the existing methods, of re-authoring control language such as HTML, re-purposing of images and the compression process thereof is performed statically and manually for each specific device. As a result, the existing methods are labor intensive and involve a costly manual process in customizing the content for every unique device type and additional disk space, and/or program space, and/or services on the host server.
[0006] In addition, images that are transmitted across a communications medium are of varying types, standard or non-standard, may or may not have text and control information associated with them. The text and control information that move with the image(s) are dependent upon operating environmental factors. Devices and their operating and rendering capacity are also a limiting factor. For example, a Personal Digital Assistance (PDA) with a wireless modem may be limited to rendering 1-bit black and white images having a screen a size no larger than 240×320 pixels. In another example, a laptop may have no image rendering restrictions as long as an image rendering software is compatible with an image type.
[0007]
[0008] Further, in the existing method, different systems on the network work independently without a comprehensive data delivery and processing strategy while maintaining autonomy, not communicating intelligently with each other to distribute the processing of information at the source of the information across a network such as the Internet or an intranet to increase the effective resource pool to service user requests, and comprehensive compression schemes to further reduce bandwidth utilization from end to end.
[0009] It is with respect to these and other considerations that the present invention has been made.
[0010] In accordance with this invention, the above and other problems were solved by providing a filter proxy system comprehensive content acceleration and automated content formatting and method for re-authoring, re-purposing, and/or compressing content control languages and/or images for delivery and/or interaction with devices of varying capacity and/or bandwidth availability without operator's intervention, and interaction with other systems having same filter proxy systems for reducing bandwidth utilization between each other and a requesting device and distributing the re-authoring, re-purposing, and compression processing of the control language, and/or images, and/or other content for delivery of and/or interaction with devices of varying capacity and/or bandwidth availability without operator's intervention.
[0011] The present invention addresses the issues of access to the WWW or other Internet/Intranet network site by devices of limited capability, different operating systems, transport protocols, limited or constrained bandwidth whether the devices or host systems are on a wired or wireless network. The present invention provides a real-time “on-the-fly” filter proxy system that analyzes content control languages, e.g. mark-up languages (ML) such as HTML and WML, and re-authors, re-purposes, and/or compresses the ML, images and other associated content for delivery and interaction with devices of varying capacity and bandwidth availability in a real-time operational environment. Accordingly, the filter proxy system provides real-time intermediary processes without operator's intervention. Furthermore, the present invention addresses the issue of intelligently distributing the re-authoring, re-purposing, and compression processes to comprehensively reduce the bandwidth and effectively utilize processing resources between systems having the filter proxy system.
[0012] One advantage of the present invention is that it is not labor intensive and does not involve a costly manual process in customizing the content requested and downloaded from the WWW or other Internet/Intranet network site for every unique device type. The present invention also reduces bandwidth requirements for content movement by applying multiple compression schemes so as to speed up access to the World Wide Web or other Internet/Intranet network site via communications networks, such as, but not limited to, wireless circuit switched cellular AMPS (Advanced Mobile Phone Service), GSM (Global System for Mobile Communications), and CDPD (Cellular Digital Packet Data).
[0013] In one embodiment of the present invention, a method of providing a plurality of device profiles, a plurality of user profiles, and a plurality of content control language templates that determine and control how an original content control language is processed in “real time”. “Real time” is defined as at the time a request for information is made. Accordingly, the original content control language and its associated digital content are processed to be compatible with a requesting device for rendering and retention of original functionality, whenever possible, at the time the request is made.
[0014] Additionally, the present invention provides a filter proxy system to serve a request to access any given resource on any network site, for example, a WWW page, and download the content of the page to a device of limited capacity in such a manner that the functionality of the page is maintained. The content of the WWW page or generally network content, may include control code (e.g. mark-up language (ML) control code), script code, text, and/or images, and other forms of content.
[0015] In one embodiment of the present invention where a plurality of filter proxy systems exist on a network, each filter proxy system can recognize the other and communicate intelligently to pass the processing parameters as applicable to reduce bandwidth utilization and offload processing overhead. Furthermore, the re-purposing, re-authoring, and/or compression of control language, text and images of WWW pages for a specific device may be distributed to various filter proxy systems running on hosts across the Internet where the WWW page and content may reside or is in closer proximity thereof on behalf of the requesting filter proxy system making the request on behalf of a specific device or in accordance with the user's specifications. This embodiment further incorporates utilization of distributed caching retrieval of data that has already been re-authored, re-purposed, and/or compressed by a content host filter proxy system on behalf of its own user or another filter proxy system to further reduce the resource and bandwidth utilization across a network.
[0016] In one embodiment, the filter proxy system in accordance with the present invention analyzes the content to determine the format and whether a template exists or should be generated for the device. If the template exists for a page format based upon a device profile, a user profile, and a content control language (e.g. ML) template, the page is filtered according to specified rules of the template and then sent to the user requested device or a receiving device. If the ML contains executable VBscript and/or JAVAscript required as interfacing with the content, a text filtered from the ML template, which represents the functionality is mapped to the executable code. The executable code remains resident on the filter proxy system for execution upon response to the text from the user sent to the requested device. The re-authored and filtered WWW page and its content are cached and retained according to caching rules that apply at that time. As an example, a request made by a cellular phone may not have the capacity to execute the Vbscript or JAVAscript to interact or display a specific text data, image type, or perform a specific function. The filter proxy system, within the user's application session, correlates and maps the Vbscript and JAVAscript code with an appropriate user's response to data entry or a hyperlink to a specific text sent to the cellular phone, such as a product description. Upon choosing to purchase a product on the cellular phone by highlighting an appropriate text and pressing an appropriate button, a user's response would be sent to the filter proxy system. The filter proxy system executes the appropriate code on behalf of the cellular user to provide a correct response for the host of a WWW page. This process is transparent to the host of the WWW page as well as the user of the cellular phone.
[0017] The present invention also provides a unique solution to bandwidth usage and control when transmitting ML, text, images, and other content over local and wide area networks, wired, or wireless communications media. In particular, but not restricted to, the wired or wireless Internet communications media benefit from the transmission of smaller compressed image files to a diverse number of devices with different rendering capacity. The smaller the ML, text, images, and other content sizes are, the less bandwidth utilized and made available resulting in less download time. Accordingly, providers of image rich content can disseminate the content to a larger and more diverse customer base. Additionally, the ML and text are compressed to further reduce bandwidth usage and decrease download times. Furthermore, bandwidth savings are accomplished by implementation of custom transport protocols to reduce acknowledgement transmission chatter between the device and server, reduce the number of TCP/IP connections required for the content referenced by the ML when executed on the device as is the case with the HTTP protocol, support a persistent connection, and transmit the data in a data streaming method.
[0018] Furthermore, the present invention provides a method of repurposing, re-authoring, and compressing network content. Re-purposing is generally defined as a process of re-formatting content including, but not limited to, text and images to meet system, device, and user specifications. Re-authoring is generally defined as a process of editing a control language, such as a mark-up language, for the effects in the control language after the re-formatting/re-purposing of the network content. Compressing is generally defined as a processing of reducing a file size based on a file type and format.
[0019] The present invention can re-purpose an image, i.e. change the image to meet the system, device, and user specifications “on the fly”, i.e. at the time the image is requested. Accordingly, the present invention overcomes the problems caused by the existing systems wherein image re-purposing is static and must be done for each device independently as well as each time the hosted image changes. Additionally, the present invention provides a faster download time for a user/requestor of content having images therein. Wireless infrastructure using the present invention can support a larger numbers of users that have the capacity to download images. This is particularly useful in wireless communications because of the limited number of frequencies with limited bandwidth available to serve a large and growing user base.
[0020] The present invention further provides a method of processing images “on-the-fly” such that an original digital image of any type, requested to be sent to a receiving device, is converted to a device independent bitmap (DIB), enhanced, pre-compression enhanced, compressed, or further compressed to reduce its file size and output the required file type and format. The original digital image may be re-sized and/or further altered to meet the specific physical requirements of a rendering device, the requirements of a requestor for the image whenever applicable, and the requirements of a network system so as to reduce bandwidth usage on a network.
[0021] Additionally, the present invention provides a filter proxy method capable of processing both static images and digital video, whether it is a streaming or static video content. For example, the filter proxy method further compresses a 24-bit RGB JPEG image requested for transmission to a laptop having a wireless modem and a full color display, a robust operating system, and an Internet browser so as to reduce the download time over a wireless communications medium. The method includes converting the same original JPEG image to an 8-bit color or gray scale JPEG image, and reducing the pixel size of the image to a size adapted for a particular Personal Digital Assistant (PDA) or to a 1-bit black and white image for a particular cellular phone at the time of the request “on the fly” before transmitting the image to a rendering device. The same process is applicable to converting and compressing frames of MPEG video for a player (rendering software) on a specific device.
[0022] In one embodiment, the method includes access to and use of the device specifications as required to process the ML and its content to include image, text, and other content for any particular device defined in a database. Such pertinent device information is termed as a device profile.
[0023] Further in one embodiment, the method includes access to and use of user definable filter processing parameters. In particular, the image and text processing specifications can determine how the method processes the image and text according to the requestor's specifications, limited to the rendering device of the requestor being capable of accommodating such specifications. Such pertinent user information is termed as a user profile.
[0024] Still in one embodiment, the method includes managing a user profile to restrict how the mark-up language, text, and images are to be re-authored and re-purposed by the filter proxy system to control bandwidth use by enforcing specific parameters in the user profile. Any such parameters referenced in the user profile that are in conflict with a devices capacity are superceded by the device profile parameters that define the limitations for a specific device. A user/requestor has permission to specify user profile parameters in a filter proxy system via a user interface to access the user profile. The user/requestor may change their user profile at any time “on-the-fly” via a control interface provided the user of which but not limited to, the preferred embodiment being the authoring of control language embedded in every requested web page that provides such a user control interface. This embodiment of user interface for real-time control of user preferences may also provide access to their e-mail and other services as are appropriate without having to log-on to another service or hosting site. The last or previous user profile updated by the user may be set as a default, which is referenced and loaded for parameters at the time of login.
[0025] Still in one embodiment, a user profile, which contains user preferences of how image content is to be delivered, as well as a required graphical user and programmatic interface to enable the user to update these preferences at any time, is provided on a requesting device or alternatively through another connected device. A user/requestor surfing on the WWW may merely look for text information and not care about image information. The user profile would then indicate image striping, which removes all images and image reference in the mark-up language before any content is downloaded to a user's device. This would drastically reduce download time, which may be the intent of the user making the request. Further control through the interface may allow the user to set image quality and compression ratios, size, and type. Accordingly, the user profile provides control information associated with images. A user is able to control the preference in rendering the requested information. Thus, devices and their operating and rendering capacity are not a limiting factor anymore to access to WWW information.
[0026] The present invention further provides a method of processing requests by a user on a digitally wired or wireless communications medium whether it is over the public/private Internet or a private local network, for content that contains images by way of a filter proxy. In one embodiment, the filter proxy system retrieves content on behalf of the requester, re-purposes image content and its control code per rendering device and/or requestor specifications, and then provides the requested content to the user. Each request for URI content is initiated and downloaded by and to the filter proxy system on behalf of the requester. The content is analyzed for image files that are re-purposed according to the device and/or user profile. The filter proxy system fetches the device and/or user profiles from a database that controls the processing of any images according to the most recent user profile but not violating the device profile constraints.
[0027] The present invention further provides a method of processing requests by a user on a digitally wired or wireless communications medium, whether it is over the public/private Internet or a private local network, for URI content by way of a filter proxy intelligently communicating with another filter proxy having same capacity and managing the performing of the processing on behalf of the requesting filter proxy making such a request on behalf of a user so as to reduce bandwidth utilization between the two filter proxy systems. In one embodiment, the filter proxy system intelligently communicates with another filter proxy system on a network to which the processing parameters for the particular request are passed to and where the re-purposing, re-authoring, and compression of control code, text, and image content as per the rendering device and/or requestor specifications will be performed on behalf of the requesting filter proxy system to reduce the bandwidth utilization between them and offload the required processing for making the content device compatible. Distribution of the processing between the two communicating filter proxy systems is managed in such manner as to maintain quality of service (QoS) on both filter proxy systems, which includes balancing the processing, reducing bandwidth utilization, meeting the device and user content requirements, and download times.
[0028] Further in one embodiment, the filter proxy system operates in such a manner as to handle many such requests from same and/or different types of rendering devices simultaneously so as to reduce the bandwidth required to send the image content over the wired or wireless communications medium and reduce the download time to the requesters. In one embodiment, the filter proxy system is integrated into a network according to its required operating environment, service level, and type of network, etc. In another embodiment, the filter proxy system may exist on a client/gateway with several separate components. In one embodiment, the components include a client proxy resident on a user's device, a communication/gateway server, a filter proxy having a master browser and filter proxy server array, an image and ML caching server farm, and a caching retrieval server. A server may be a software component resident with other server software components on a single physical server or individual physical servers. Accordingly, a user no longer connects directly to the requested URI host. Instead, a connection is made between a user and the filter proxy via a communications/gateway server where a session is established and a desired URI and all referenced URI contained therein are downloaded on behalf of the user so as to be able to re-purpose, re-author, and compress the ML, text, images and other content for the specific device and user. The filter proxy can further determine if another implementation of the filter proxy system resides on the requested URI host or network and pass the processing parameters to it where re-purposing, re-authoring, and compressing the URI content, such as ML, text, images and other content for the specific device and user, can be performed on its behalf. The filter proxy uses a proxy cache in its back end operations for a URI's original content and a changed/filtered content (versioning) to include the image and mark-up language, ML templates, and suspended user sessions as required by the operational environment. Accordingly, no changes are required on a WWW server that hosts the requested original URI content, although it may have the same filter proxy system operating wherein further bandwidth savings can be accomplished and efficient distribution of processing of the required compression, re-purposing, and re-authoring may be accomplished on behalf of the requesting filter proxy system. Support components may include databases for the device and user profiles, ML templates, accounting, logging, etc. The support components may also include operations for memory caching of URI and its original and changed content having a high request count. These caching support components reduce the overhead of re-authoring and re-purposing the same ML and images. The filter proxy system further includes the functional components, which re-purposes text and image content, re-authors a mark-up language as required for a specific device, and compresses the mark-up language, text, images, and other content.
[0029] Further in one embodiment, the filter proxy resides in a server environment. The filter proxy may also process in a multiple processor server environment using shared memory or an inter-process communications protocol. Accordingly, requested content does not have to be stored on a permanent storage medium before being processed, such as a hard disk, thus increasing throughput and number of simultaneous requests processed.
[0030] Additionally in one embodiment, the filter proxy includes image-processing and compression filters, ML re-authoring and editing filters, ML and text compression filters, and as appropriate a custom transport protocol component. These filters and components are componentized so as to enable and facilitate resource utilization, load balancing, and bandwidth throttling when many simultaneous requests are made that use both processing services as well as the available bandwidth. For example, bandwidth throttling may be accomplished by measuring the resources available versus the requests pending and may force the specific re-purposing and levels of compression of images without enhancement of the images to make more processing resources available. Additionally, the amount of compression applied on an image may be increased during a high use period, thereby reducing the bandwidth required for image content to be downloaded. Statistics of logging of resource usage can be used to provide information for growth of the system if desired.
[0031] For a better understanding of the invention, reference should be made to the drawings, which form a further part hereof, and to accompanying descriptive matter in which there are illustrated and described specific examples in accordance with the invention.
[0032] Referring now to the drawings in which like reference numbers represent corresponding parts throughout:
[0033]
[0034]
[0035]
[0036]
[0037]
[0038]
[0039]
[0040]
[0041]
[0042]
[0043]
[0044]
[0045]
[0046]
[0047] The present invention relates to a filter proxy system for comprehensive content acceleration and automated content formatting and method for re-authoring, re-purposing, and/or compressing content control languages and/or images for delivery and/or interaction with devices of varying capacity and/or bandwidth availability without operator's intervention, and interaction with other systems having same filter proxy systems for reducing bandwidth utilization between each other and distributing the re-authoring, re-purposing, and compression processing of the content control language and/or images for content for delivery of and/or interaction with devices of varying capacity and/or bandwidth availability without operator's intervention.
[0048] A generalized and exemplary list of components, functions, and filters that are incorporated into one embodiment of a filter proxy system for handling requests, re-purposing of images, compression, and/or re-authoring the content and mark-up language, are as follows:
[0049] Client Components and Proxy
[0050] A user proxy module operable on a requesting device, or equivalent means to redirect URI requested to the filter proxy system.
[0051] A client proxy module that provides custom transport protocol capability having the ability to accept data streamed from the filter proxy system, support a continuous connection with the filter proxy system, and reduction of the number of TCP/IP connections made for referenced content in the ML, reduce the number of acknowledgements for received packets, and custom packet sizes.
[0052] A user proxy module operable on the requesting device, when applicable, which provides secure communications and content control.
[0053] A browser and image-rendering module.
[0054] ML, text, and script compression and decompression module.
[0055] Custom rendering applications that can maintain secure control of the content to the user.
[0056] User Profile Application Support (as Applicable)
[0057] User defined configurations and interface thereto.
[0058] User control interface to set user preferences for content re-purposing and compression.
[0059] A “speedometer” visualizing the apparent download speed.
[0060] A transparent user setting (raw or un-enhanced access to the Internet).
[0061] Support for other proxies on client or no proxy setting.
[0062] URL access limitations as set by user or corporations.
[0063] User authentication and data encryption.
[0064] Communications/Gateway
[0065] Establishing a connection via a communications/gateway server upon a user request.
[0066] User interface for user profile update.
[0067] Caching a transport protocol, such as HTTP.
[0068] User authentication, e.g. two (2) factor authentication.
[0069] Logging and alarm functions.
[0070] Byte usage and other accounting features.
[0071] Compliant with standard transport protocols, such as HTTP 1.0 and HTTP 1.1 as well as allowing for custom protocols.
[0072] Online Help as necessary.
[0073] Master Browser and Filter Proxy
[0074] Access to device and user profiles and ML template databases as well as logic to process and filter according to profile specifications.
[0075] Access and logic to search and retrieve a target URI from a cache and a host system over a network, process according to the device and user profiles, and analyze, coordinate, prioritize, and task filter functions for one or multiple simultaneous URI requests.
[0076] Logic to download all URI mark-up language and content, such as images on behalf of the client proxy, process them concurrently, and send them to the requesting via the client proxy on the requesting device as a single data stream to reduce the number of TCP/IP connections made by the device for every content referenced in the ML, bandwidth utilization, and filter proxy resources.
[0077] Logic to recognize, communicate, pass processing parameters, and manage with another same filter proxy system the processing resource distribution, process balancing over a network, compression of the processed data to reduce bandwidth utilization between the two servers, and a data streaming protocol.
[0078] Load balancing data and processes across multiple servers of the filter proxy.
[0079] Distributed Internet/intranet caching and retrieval logic between a requesting server having a filter proxy system and a content & ML host having the filter proxy system to reduce the process overhead of ML and content previously re-authored, re-purposed, and/or compressed.
[0080] ML page analysis and profiling based upon device and user profiles for determination and/or generation of best-fit ML template for ML page.
[0081] Re-authoring ML as required based upon profiles and template parameters.
[0082] Image filters for re-purposing and compression logic and operations for:
[0083] an image enhancement and/or compression process.
[0084] 24-bit RGB color to 16- and 8-bit color conversion and compression.
[0085] 24- and 8-bit color to gray scale both 8- and 1-bit black and white conversion and compression. Format conversion from BMP, TIF, PNG, and GIF to
[0086] JPG, TIF, PNG or other format.
[0087] Conversion of animated GIF to static GIF, PNG, or JPEG formats.
[0088] Video image streaming format conversion and compression.
[0089] Removal of all images or selective removal of images, e.g. removal of GIF.
[0090] Automatic resizing of images based upon the device and user profiles.
[0091] Converting to special image formats.
[0092] ML re-authoring and editing filters and logic as required by profiles and template parameters:
[0093] White space elimination.
[0094] Header conversion or elimination.
[0095] Background images elimination.
[0096] Comments elimination.
[0097] Meta tags stripping.
[0098] Tables re-authoring and presentation.
[0099] Frames re-authoring and representation.
[0100] Text re-formatting.
[0101] Font conversion.
[0102] Dynamic page presentation.
[0103] Java Applets execution or elimination.
[0104] JavaScript and VBScript proxy execution or elimination.
[0105] Plug-ins such as audio and video files elimination.
[0106] ML referenced document conversion. (Such as PDF file converted to HTML Text).
[0107] Re-authoring ML as a result of image re-purposing
[0108] Removal from original ML any code fixing the size of images
[0109] Error trapping and recovery logic to handle conditions not addressed in the re-authoring and re-purposing logic.
[0110] Authoring each page of ML by adding control language that provides a real-time user control interface on each Web page for user preferences of content re-purposing and compression parameters, such as image size and compression ratios.
[0111] ML, text, and script compression and decompression filters and operations.
[0112] Logic to execute client side script so as to be able to accelerate content delivery.
[0113] Logic to map and execute control code and script on behalf of the user and device on the filter proxy system when the device has limited capability.
[0114] Databases
[0115] Protocol (HTTP 1.0/1.1) database accessed by the communications/gateway server.
[0116] Device and user profiles database and error logging.
[0117] Mark-up language (ML) template database.
[0118] Security database.
[0119] User account database.
[0120] Statistical
[0121] In the following description of the preferred embodiments, reference is made to the accompanying drawings, which form a part hereof, and in which is shown by way of illustration several embodiments in which the invention may be practiced. It is to be understood that other embodiments may be utilized as structural changes and may be made without departing from the spirit and scope of the present invention.
[0122] One embodiment of the present invention includes: 1) URI directing module and custom transport protocol that reduces the number of connections made to retrieve the URI mark-up language and it referenced content, supports a continuous connection, and accepts data streamed from the filter proxy system on a requesting device (Client Proxy); 2) a communication/gateway server that establishes a session with a remote device and creates a communication path with the filter proxy; 3) a set of content filters (Filter Proxy) that: (a) intelligently accepts redirected requests, retrieves and caches the requests on behalf of the requesting device; (b) includes a URI and ML content analysis component; (c) has a set of callable filters or a library of filters that perform the filtering and processing of the text, images, embedded script code, links, functional mapping, compression, and ML re-authoring and editing and conversion as a result of the analysis of the original mark-up language, its content, device and user profiles, and ML template; (d) has a software component that establishes whether the URI is in cache, up-to-date, and/or already pre-processed for a given device; 4) a Web page/URI caching server farm; 5) primary databases composed of the device and user profiles, error logging and statistical information, and secondarily those for security and user accounts; and 6) a Web page/URI caching retrieval server that: (a) communicates with host where requested URI resides; (b) communicates with another implementation of the filter proxy system present at the requested URI host; (c) passes the parameters for re-purposing and re-authoring the ML, text, images, and/or other content to the URI host filter proxy system to distribute the processing, reduce the resource utilization on requesting filter proxy system, and reduce the bandwidth utilization between the two filter proxy systems; (d) request of URI may be serviced from cache of the host filter proxy system if URI has previously been filtered by the hosting filter proxy system. These components may reside on a single physical server having a single or multiple processors or on multiple physical servers having one or more physical processors each and may be distributed across a network or networks. All processes work in a real-time environment to process the content “on-the-fly” at the time a request is made for final delivery to a requester.
[0123] In one embodiment, the method is further defined by the filter proxy system having the means and mechanisms for: 1) establishing, entering, updating, and retrieving device and user profiles specification and templates in the respective databases; 2) analyzing the ML while applying the specifications of the device and user profiles to determine what data formatting filters, e.g. re-purposing, re-authoring, and/or compression filters are required; 3) analyzing of the ML while applying the specifications of the device and user profiles to define an ML template or establish the best fit of an existing ML template to further refine the process of re-purposing, re-authoring, and formatting the ML and its content for a specific device and user; 4) calling and executing the proper filters that perform the filtering and processing of the ML and its content; 5) prioritizing and tasking the filtering and processing to different servers of the filter proxy server array for purposes of improving through-put and load balancing; 6) bandwidth-throttling by controlling how much ML re-authoring and/or when image enhancement and/or image pre-compression filtering are performed prior to compression; 7) may eliminate all duplicate references to a hyperlink/URI by text and/or graphics and utilizing control information from (1), (2), (3), and (4) above; 8) mapping to the filter proxy server memory relationships between hyperlinks and script to text and hot buttons sent to the user based upon the device capacity defined in the device profile; 9) executing on behalf of the device the hyperlinks and script code mapped on the server of the filter proxy upon a response of the user when necessary; 10) converting the executable ML to the proper language as defined by the device profile; 11) allowing the user to change their preferences and/or user profile at any time to define how the filter proxy re-purposes and compresses image content and text to be downloaded to the user so long as it conforms with the capacity of the device as defined in the device profile; 12) enhancing, converting, and/or compressing images to fit the device and user specifications and decrease the bandwidth requirements and download time; 13) converting various document forms to the device ML such as HTML; 14) compressing the text, ML, and script to decrease the bandwidth requirements and download time; and 15) providing a transport protocol that may be a standard, such as HTTP or a custom protocol that supports a continuous connection, reduces the TCP/IP connections required for the ML and its referenced content, improves the ratio of packet to response retaining data integrity and recovery, and supports data streaming between the server and the requesting devices having the appropriate client proxy.
[0124] It will be appreciated by those skilled in the art that the process and methods described herein may operate on the Internet, Intranet, or a local network over a wired or wireless connection.
[0125]
[0126] The filter proxy system
[0127] In
[0128] Furthermore in
[0129] The changing/re-authoring of the ML or control language by the filter proxy
[0130]
[0131] In operation, a user, via a client proxy on a device or some other means, directs a client browser to the communications/gateway server
[0132] If the URI is not in cache
[0133] If the requested URI content is cached and it is determined that the content has been changed since last cached, the caching retrieval server
[0134] URI in cache is determined by comparison of the cached version with that being downloaded, initially a header and metadata, and finally the content such as ML, text, and image tags, etc. Additionally, cache is checked for a current device version of the URI content as a result of a previous request. One of the purposes of identifying a content type of a URI within a ML template is to reduce the overhead for determining the immediate need for content update.
[0135] As shown in
[0136] In
[0137] Furthermore, the master browser
[0138] Table 1 below lists exemplary filters having functional operations performed by the filter proxy
TABLE 1 1 Text & Hyperlink mapping 2 Text duplicates deletion 3 Text to hyperlink duplicate deletion 4 ML code white space elimination 5 Headers and Banners elimination text reference and hyperlink mapping 6 ML comment elimination 7 VB & JAVA script mapping for execution on behalf of the device and re-authoring of ML or elimination 8 JAVA applets reference removal or mapping for execution on behalf the device 9 Plug-in reference elimination or translation of content to a device compatible plug-in format and re-author 10 ML authoring for device dependency specifications 11 ML re-authoring to user specifications 12 ML re-authoring to ML Template 13 Convert Tables to Text and map functionality and hyperlinks 14 Convert Frames to text and map functionality 15 Convert original ML to device dependent ML or control Language 16 Compress ML and script language to device dependent specifications 17 Compress text 18 Image striping and deletion 19 Image reference ML re-authoring 20 Image conversion to device dependent format 21 Image re-sizing to device dependencies 22 Image re-sizing to user specifications 23 Image compression to device, user, and default specifications 24 Conversion of ML and content to a single image instead of executable ML and independent content pieces 25 Header and Banner elimination 26 Authoring user control into ML page for image purposing and Compression. 27 Meta Tag elimination
[0139] It is appreciated that other functional operations can be performed within the scope of the present invention. It is also appreciated that the implementation of these functional operations is generally known in the art and not the focus of the present invention.
[0140] If the URI content is present in cache and is already formatted as per the device and user specifications, the filter proxy
[0141] The following are the detailed descriptions of different modules of one embodiment of the filter proxy system
[0142] A. Client Services by Client Proxy Configuration
[0143]
[0144] In
[0145] In a preferred embodiment, a user is required to interact with the filter proxy
[0146] B. Communications/Gateway Server
[0147] The communications/gateway server
[0148] C. Profile Databases
[0149] The profile databases
[0150]
[0151] In general, a device profile defines to the filter proxy
[0152] ML templates are device type dependent and original ML format dependent. ML templates provide formatting specifications optimized for a URI based upon its analysis by the filter proxy
[0153] In general, a user profile provides the user via a user interface additional control over content downloaded. The user profile may include: 1) elimination of image content or an image compression ratio applied, re-sizing parameter, and image format to be downloaded, 2) a list of URL's to which the a user wishes to restrict access, 3) password administration, and 4) user account information. Interfaces are provided to allow new device registration, administration, changing of passwords, access to accounting information, and “on-the-fly” access to elements that impact downloading of content. The last or previous user profile updated by the user may be set as a default, which is referenced and loaded for parameters at the time of login.
[0154] D. Caching Services
[0155] In one embodiment, caching is an integral component of the filter proxy process. The caching services provide high speed and immediate data availability to the various components of the filter proxy system
[0156] Three exemplary types of caching services are shown in
[0157] Exemplary statistics that impact how the URI is downloaded to the requesting filter proxy
[0158] The third type of caching is a transport protocol cache
[0159] E. The Filter Proxy Process Steps and Functional Relations
[0160] The filter proxy
[0161] Referring back to
[0162] Referring now to
[0163] As shown in
[0164] The filter proxy re-authors, re-purposes, and/or compresses the URI Web page based on ML templates and the user and device profiles in an operation
[0165] Finally, the processed ML and content are transmitted to the user in an operation
[0166] F. Filter Proxy Content Processing
[0167] Referring now to
[0168] In
[0169] The ML filter process
[0170] The image filter operation
[0171] If re-purposing of images is required in an operation