Searching and retrieving key data maintained using a key database

By constructing a digital component deduplication system, which uses a keying database and a logic execution server to identify and remove redundant digital components, the problem of users repeatedly receiving the same content is solved, achieving more efficient resource utilization and improved user experience.

CN114417193BActive Publication Date: 2026-04-07GOOGLE LLC
View PDF 2 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2016-12-29
Publication Date
2026-04-07

AI Technical Summary

Technical Problem

In existing technologies, users may repeatedly receive the same digital content when consuming digital content, leading to increased latency and bandwidth usage. At the same time, the lack of an effective deduplication mechanism affects user experience and resource utilization efficiency.

Method used

By constructing a digital component deduplication system, using a keyed database to store keyed data, and combining a grouped data search engine, a logic execution server, and a security server, redundant digital components are identified and removed, reducing latency and bandwidth usage in the logic execution process, and coordinating multiple logic execution platforms to avoid duplicate provisioning.

Benefits of technology

It reduces latency and bandwidth usage in digital content delivery, improves resource utilization efficiency, ensures user privacy, and enhances the competitiveness and user experience of digital content providers.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114417193B_ABST
    Figure CN114417193B_ABST
Patent Text Reader

Abstract

This invention relates to searching and retrieving keyed data maintained using a keying database. This document describes a system for generating packetized data with encrypted tokens for deduplication of digital components transmitted via one or more packetized networks. A packetized data search determines that the packetized data includes an encrypted token. The encrypted token includes keyed data representing a first digital component. A packetized data search engine searches the keying database to identify content in the keying database that includes one or more entries representing the keyed data of the first digital component. A list of candidate digital components is generated. For a candidate digital component associated with a data interface used to request a qualification value from a second client device associated with the candidate digital component, a security server uses the data interface to generate additional packetized data, which includes i) a request for a qualification value from the second client device, and ii) the encrypted token.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Case Analysis

[0002] This application is a divisional application of Chinese invention patent application 201680031771.4, filed on December 29, 2016. Technical Field

[0003] This article relates to searching and retrieving keyed data maintained using a keyed database. Background Technology

[0004] When a user is consuming digital content, the computer system supplying that digital content may sometimes repeatedly supply the user with the same digital content. Summary of the Invention

[0005] This document describes a digital component deduplication system, comprising: a keying database storing keyed data, wherein each item of the keyed data represents a specific digital component; a grouped data search engine searching grouped data received from a first client device to determine that the grouped data includes an encryption token comprising keyed data representing a first digital component, wherein the grouped data search engine searches the keying database to identify content in the keying database including one or more entries comprising keyed data representing the first digital component; and a logic execution server performing data logic based on the keyed data representing the first digital component. The system comprises: a list of candidate digital components generated from the content of one or more entries of keyed data of the components; a registration interface that determines that the candidate digital components in the list are associated with a data interface for requesting a qualification value from a second client device associated with the candidate digital components; and a security server that uses the data interface to generate additional packetized data, the additional packetized data including i) a request for a qualification value from the second client device, and ii) an encrypted token, wherein the logic execution server, in response to receiving the requested qualification value, assigns a second digital component from the list of candidate digital components to be transmitted to the first client device, and wherein the second digital component is different from the first digital component.

[0006] In some implementations, the system includes a digital component combination server that performs actions including transmitting a second digital component and a second encrypted token associated with the second digital component to a first client device. In some implementations, the packetized data includes first packetized data. In some implementations, a logic execution server generates second packetized data in response to determining that the encrypted token is not included in the first packetized data. The second packetized data includes one or more instructions to i) generate an encrypted token, and ii) transmit the encrypted token and keying data representing the digital component to the first client device via one or more packetized networks. In some implementations, a security server receives an encryption key from a second client device. The security server decrypts the encrypted token in response to determining that the packetized data includes the encrypted token. The logic execution server removes a specific candidate digital component from the candidate digital component list that is associated with a specific identifier of the keying data matching the decrypted encrypted token.

[0007] In some implementations, the encryption key includes a private key of the second client device. In some implementations, in response to a determination that candidate numeric components in the list are not associated with a data interface used to request eligibility values ​​from the second client device, the security server uses the encryption key provided by the second client device to decrypt the encryption token included in the block data. In some implementations, the keying data includes data that uniquely identifies the numeric components, and when the keying data is decrypted, the keying data matches the identifier of the encryption token.

[0008] In some implementations, the digital component deduplication system stores keyed data in a keying database, where each item in the keyed data represents a specific digital component; a block data search engine searches the block data received from a first client device to determine if an encryption token is included along with the block data. In some implementations, the encryption token includes keyed data representing the first digital component, wherein the block data search engine searches the keying database to identify content in the keying database that includes one or more entries representing the keyed data of the first digital component.

[0009] In some implementations, the digital component deduplication system performs data logic via a logic execution server to generate a list of candidate digital components based on content including one or more entries of keyed data representing a first digital component. In some implementations, the digital component deduplication system determines, via a registration interface, that the candidate digital components in the list are associated with a data interface for requesting eligibility values ​​from a second client device associated with the candidate digital components. In some implementations, the digital component deduplication system uses the data interface via a security server to generate additional packetized data, including i) a request for eligibility values ​​from the second client device, and ii) an encrypted token; and in response to receiving the requested eligibility value, assigns a second digital component from the list of candidate digital components via the logic execution server for transmission to the first client device, wherein the second digital component is different from the first digital component.

[0010] In some implementations, the digital component deduplication system transmits a second digital component and a second encryption token associated with the second digital component to a first client device via a digital component combining server. In some implementations, the packetized data includes first packetized data. In some implementations, a logic execution server generates second packetized data in response to determining that the encryption token is not included in the first packetized data. The second packetized data includes one or more instructions to i) generate an encryption token, and ii) transmit the encryption token and keying data representing the digital component to the first client device via one or more packetized networks.

[0011] In some implementations, the digital component deduplication system receives an encryption key from a second client device via a security server; and in response to determining that the block data includes an encryption token, the security server decrypts the encryption token. This action includes removing specific candidate digital components from the list of candidate digital components by a logic execution server that are associated with a specific identifier of keyed data matching the decrypted encryption token. In some implementations, the encryption key includes a private key of the second client device.

[0012] In some implementations, this action includes, in response to a determination that a candidate numeric component in the list is not associated with the data interface used to request eligibility values ​​from a second client device, decrypting the encrypted token included in the block data via a security server using an encryption key provided by the second client device. The keying data includes data that uniquely identifies the numeric component, and when the keying data is decrypted, the keying data matches the identifier of the encrypted token.

[0013] In some embodiments, a non-transitory computer-readable medium communicating with a digital component deduplication system performs an action including storing keyed data through a keying database, wherein each item of the keyed data represents a specific digital component. In some embodiments, this action includes searching block-based data received from a first client device using a block-based data search engine to determine if an encryption token is included along with the block-based data. In some embodiments, the encryption token includes keyed data representing a first digital component. In some embodiments, the block-based data search engine searches the keying database to identify content in the keying database that includes one or more entries representing the keyed data of the first digital component.

[0014] In some implementations, the action includes performing data logic via a logic execution server to generate a list of candidate digital components based on content including one or more entries representing keyed data of a first digital component. In some implementations, the action includes determining, via a registration interface, that the candidate digital components in the list are associated with a data interface for requesting a qualification value from a second client device associated with the candidate digital components. In some implementations, the action includes generating additional packetized data via a security server using the data interface, the additional packetized data including i) a request for a qualification value from the second client device, and ii) an encrypted token. In some implementations, the action includes, in response to receiving a requested qualification value, assigning a second digital component from the list of candidate digital components to the first client device via the logic execution server, wherein the second digital component is different from the first digital component.

[0015] In some implementations, the action further includes transmitting a second digital component and a second encryption token associated with the second digital component to a first client device via a digital component combining server. In some implementations, the packetized data includes first packetized data. In some implementations, a logic execution server generates second packetized data in response to determining that the encryption token is not included in the first packetized data. The second packetized data includes one or more instructions to i) generate an encryption token, and ii) transmit the encryption token and keying data representing the digital component to the first client device via one or more packetized networks.

[0016] In some implementations, this action includes receiving an encryption key from a second client device via a security server; and decrypting the encryption token via the security server in response to determining that the block data includes an encryption token. In some implementations, this action includes removing a specific candidate digital component from a list of candidate digital components that is associated with a specific identifier of keyed data matching the decrypted encryption token via a logic execution server. In some implementations, the encryption key includes a private key of the second client device.

[0017] In some implementations, this action includes, in response to a determination that a candidate numeric component in the list is not associated with a data interface used to request eligibility values ​​from a second client device, decrypting the encrypted token included in the block data via a security server using an encryption key provided by the second client device. In some implementations, the keying data includes data that uniquely identifies the numeric component, and when the keying data is decrypted, the keying data matches the identifier of the encrypted token.

[0018] The described system provides one or more benefits, such as reducing latency in supplying digital content and retrieving digital components (e.g., advertisements, videos, text, audio, etc.) caused by logical execution processes (e.g., evaluation, auction, etc.). The logical execution server evaluates digital components that have not yet been supplied to a terminal device (e.g., during a defined session for supplying digital components) and ignores digital components that have already been identified as having been supplied to the terminal device during said session (e.g., a browsing session). Because fewer candidate digital components are considered during the logical execution process, the digital component deduplication system reduces latency in supplying digital components caused by the logical execution process.

[0019] A digital component deduplication system reduces bandwidth usage for supplying digital components by identifying redundant digital components before logic execution. This system sends fewer packetization requests via the network of the networked system compared to a system that does not identify redundant digital components before logic execution, thus reducing bandwidth usage. The list of candidate digital components under consideration to be sent to the terminal device is thus reduced to those that have not yet been supplied to the terminal device during the session (e.g., a browsing session). For example, the system avoids sending requests for eligibility values ​​(e.g., bid data) to digital component providers associated with ignored candidate digital components, thereby reducing bandwidth usage.

[0020] Digital components that have not yet been supplied to the terminal device during the session may be more relevant or interesting to the user of the terminal device, and may therefore provide more value to the digital component provider (e.g., advertiser).

[0021] Digital component deduplication systems enable coordination between multiple logical execution platforms. A digital component provider can use several logical execution platforms that coordinate to avoid each platform supplying the same copy of the digital component to the user's terminal device after performing the logical execution process for the user. This allows digital content providers to select one or more logical execution platforms that are most competitive for their needs. Digital component providers avoid situations where each logical execution platform supplies the same digital component to the terminal device, leading to repeated viewing by the user during a session, which provides reduced value to the provider and frustrating the user. Furthermore, digital component deduplication systems use encryption to ensure user privacy and digital component identity are not compromised during the coordination of logical execution platforms.

[0022] Digital components can be stored in the system's memory or on the system's disk. Storing digital components in memory reduces latency for real-time response to requests for digital components because the system supplies digital components without performing data queries and retrievals from the database. The described system supplies digital components that are more relevant to the user. The described system uses keyed data indexes to increase retrieval speed relative to cached data and non-indexed keyed data, and associates cached data with digital components without requiring identification of the digital components by the logic execution server.

[0023] Details of one or more embodiments are set forth in the accompanying drawings and the following description. Other features, objects, and advantages of the technology described herein will be apparent from the description and drawings, as well as from the claims. Attached Figure Description

[0024] Figure 1 This is a diagram of a network environment used for deduplication of digital component services.

[0025] Figure 2A This shows the keyed index database.

[0026] Figure 2B The graphical user interface is shown.

[0027] Figures 3 to 5 This is a diagram illustrating the actions taken for deduplication of digital component services.

[0028] Figure 6 This is a flowchart illustrating the actions taken for deduplication of digital component services.

[0029] Figure 7 This is a block diagram of the components of a system used for deduplication of digital component services.

[0030] The same reference symbol indicates the same element in various diagrams. Detailed Implementation

[0031] This document describes systems for deduplicating (e.g., eliminating or reducing redundancy) digital components sent to client devices (e.g., terminal devices or publisher systems) when a terminal device is browsing the Internet. As used throughout this document, the phrase "digital component" refers to a unit of discrete digital content or digital information (e.g., a video clip, audio clip, multimedia clip, image, text, or another type of content unit). Digital components may be stored electronically in a physical storage device as a single file or as a collection of files, and may take the form of video files, audio files, multimedia files, image files, or text files and include advertising information, making advertising a type of digital component. Typically, digital components are defined (or provided) by a single provider or source (e.g., an advertiser, publisher, or other content provider). As discussed in more detail below, digital components from multiple different sources may be combined into a single electronic document (e.g., a collection of various different digital components), and portions of various digital components from different sources may be combined with information (or other content portions) extracted from search results into a single digital component.

[0032] The system deduplicates digital component services by analyzing keying data maintained by a keying database that represents a list of digital components that have been sent to client devices. Typically, keying data includes data associated with keywords (e.g., unique identifiers) (e.g., stored with keywords, transmitted with keywords, pointing to keywords, etc.) and / or the keywords themselves, as described in further detail below. Typically, the keying database includes a database in which data entries or records are associated with keywords or indexed using keywords (e.g., for subsequent retrieval). Based on the processing and analysis of keying data, the system does not consider the transmission of digital components already sent to client devices. Typically, the deduplication discussed herein results in a reduction in bandwidth usage for digital component transmission, for example, relative to the bandwidth usage incurred in digital component transmission without relying on deduplication. By analyzing keying data before executing one or more logical execution processes, fewer data requests and subsequent responses are sent across the network, thereby reducing bandwidth usage.

[0033] When a terminal device requests digital components from a system such as a publisher's system, several processes are initiated in response to the request. These processes, used to combine and serve web pages or application interfaces to the terminal device, include one or more requests to various systems connected via the Internet, as well as calculations by these systems, and take time. Compared to the latency of combining and serving web pages to the terminal device without relying on a digital component deduplication system, the digital component deduplication system described below reduces the latency between the terminal device's request for digital components and the combination and serving of digital components to the terminal device. The digital component deduplication system reduces latency by reducing the number of digital components considered during the logic execution process to less than the entire set of candidate digital components. Because fewer digital components are considered and fewer instructions and responses are sent and received, the digital component deduplication system processes less data than during a typical logic execution process, thereby increasing processing speed and reducing the latency used to execute the logic execution process and serve digital components.

[0034] For example, a digital component deduplication system calculates the results of logical execution (e.g., auction results, rating results, or the result of another logical execution process). For each digital component being evaluated, a qualification value (e.g., bid) is requested from the digital component provider (e.g., a third-party content provider) for the candidate digital component. However, qualification values ​​are only requested for digital components that have not been supplied during the session, such as a specified or dynamically defined duration (e.g., a browsing session, a scheduled time period, etc.). The logical execution server assigns digital components from the candidate digital component set during the logical execution process using the received qualification values. The digital component deduplication system retrieves the assigned digital components (e.g., video clips, audio clips, images, text, or combinations thereof) from the digital content provider or from the keyed digital component cache. Digital components that have not yet been supplied to the client device during the session are then supplied to the client device.

[0035] See Figure 1 The networked environment 100 includes a digital component deduplication system 102 configured to communicate with a publisher system 104, a terminal device 106, and a digital component provider 108 (e.g., via network 110). The digital component deduplication system 102 includes a computing system (e.g., a server system). The functions performed by these various devices can be implemented in a single hardware device or a group of hardware devices, or as a separate hardware device. For example, the digital component deduplication system 102 can be implemented as a single server or many networked servers.

[0036] The digital component deduplication system 102 includes an interface 144, a logic execution server 130, a security server 130, a packetized data search engine 128, an encryption key cache 134, a search history cache 136, a registration API endpoint cache 138, an encryption token cache 140, a keyed digital content cache 142 (e.g., a keyed database), a packetized data parser 152, and a registration interface 154. For example, one or more of the caches described above may be a keyed database, such that each data record is associated with a keyword (e.g., a user identifier or other unique identifier). The keyed database is configured to store keyed data 120 received from the terminal device 106. The server includes one or more of a computer processor, a logic engine, a server system, a software module, or any combination thereof.

[0037] Publisher system 104 includes a computing system (e.g., a server system) configured to receive requests to deliver digital content (e.g., webpage data 112) to other systems such as terminal device 106. Publisher system 104 requests 116b of digital component data from digital component deduplication system 102 to populate digital content slots on various webpages of the publisher before supplying webpage data 114 to terminal device 106. Digital content slots include positions within a webpage assigned by content tags (e.g., digital content tags). Page composition operations populate content slots with digital component data based on digital content tags associated with them (e.g., referencing digital content slots, pointing to digital content slots, selecting digital content slots, etc.).

[0038] Terminal device 106 includes a computing device, such as a laptop computer, tablet computer, mobile phone, or other computing device. Terminal device 106 sends (e.g., transmits) requests for digital components (e.g., web page request 114, digital component request 116b) to publisher system 104, digital component deduplication system 102, or both. Terminal device 106 sends keying data to digital component deduplication system 102. The keying data includes encrypted token data 120a, which is described in more detail below. For example, the keying data differs from the device identifier of terminal device 106. For example, the keying data includes a user identifier indicating a user profile for an application installed on or otherwise running on terminal device 106 or for a program associated with digital component deduplication system 102 (e.g., configured to interact with digital component deduplication system 102, etc.). For example, a user identifier is associated with terminal device 106 (e.g., grouped with terminal device 106, pointing to terminal device 106, etc.) because terminal device 106 is sending keying data 120 indicating the user identifier. For example, the user identifier indicates user demographics. The keying data is received by digital component deduplication system 102 and stored in one or more of search history cache 136 and encryption token cache 140.

[0039] The keying data of the terminal device includes the contents of the encryption token cache 156 of the terminal device 106, which is transmitted as encryption token data 120a. The encryption token cache 156 stores encryption tokens (e.g., encryption identifier-identifier pairs) for each digital component received by the terminal device 106 via network 110 for a session. Along with digital component requests 116a to 116b, the encryption tokens stored in the encryption token cache are sent as encryption token data 120a to the digital component deduplication system 102. The digital component deduplication system uses encryption token data 120a and 120b to determine whether a digital component has already been supplied to the terminal device during the session, as described below. Encryption token data 120a indicates one or more digital components that have already been supplied to the terminal device 106 during the current session. Encryption token data 120b indicates the next assigned digital component to be supplied to the terminal device 106. The encryption token cache 156 receives and stores the encryption tokens of encryption token data 120b, which become part of the next transmission of encryption data 120a from the terminal device 106. Clear the encryption token cache at the end of the session 156. The session may end when the user closes an application on the terminal device (e.g., a browser), after a predetermined time period, when a new network domain is requested, or when the number of items in the cache reaches a predetermined number, etc.

[0040] The encryption token received by terminal device 106 in encrypted data 120b is stored in encryption token cache 156. The encryption token represents a digital component received from digital component deduplication system 102 when the system supplies the first instance of a digital component (such as digital component data 118b). Encryption token data 120b, representing digital components 118a to 118g, is cached by the terminal device in encryption token cache 156. When terminal device 102 transmits digital component request 116a, the encryption token (and any other encryption tokens received by the terminal device) is transmitted to digital component deduplication system 102 as encryption token data 102a.

[0041] Digital component provider 108 is configured to receive requests 148 for digital component data or qualification values ​​and to provide digital component data or qualification value data 150. Digital component provider 108 may be an advertiser. For example, digital component provider 108 includes a server that sends digital content data 150 that is indicated by content tagging associated with a webpage or selected by logic execution server 130 for rendering in a webpage.

[0042] Digital component provider 108 includes an encryption token cache 158. The encryption token cache 158 stores encryption tokens. Digital component provider 108 may generate (e.g., encrypt) encryption tokens for provisioning in response to a qualification value request 148 sent by digital component deduplication system 102. Upon receiving qualification value request 148 from digital component deduplication system 102, digital component provider 108 encrypts and sends encryption token data 120a without any encrypted data 102a, meaning that no digital component has previously been provisioned to the terminal device during the current session (and any digital component is eligible to be provisioned by digital component provider 108 using the regular generation of qualification values).

[0043] In some implementations, along with qualification request 148, digital component provider 108 receives encrypted token data 102a from digital component deduplication system 102. Digital component provider 108 can decrypt encrypted token data 102a using its public or private key. When digital component deduplication system 102 sends qualification request 148, digital component provider decrypts encrypted token data 120a received from digital component deduplication system 102. Digital component provider 108 parses the request for encrypted token data 120a and stores the data 120a in encrypted token cache 158. When digital component provider 108 receives subsequent encrypted token data 120a in subsequent qualification requests 148, digital component provider 108 checks the encrypted token of encrypted token data 120a in encrypted token cache 158.

[0044] Digital component provider 108 uses encrypted token data 120a to identify whether the digital component for which the digital component deduplication system 102 requests a qualification value has already been supplied to terminal device 106 during the current session. Digital component provider 108 may decrypt the encrypted token data 120a to have a digital component identifier (e.g., an identifier that uniquely identifies the digital component) and a decrypted digital component identifier. Digital component provider 108 uses decryption and verification logic engine 160 to perform a verification comparison of the decrypted identifier, comparing the decrypted identifier with the digital component identifier included in the encrypted token data 120a. If digital component provider 108 finds a match, digital component provider 108 returns a low qualification value for the digital component, causing digital component deduplication system 102 to not select the digital component for transmission to terminal device 106 during subsequent logic execution. The low qualification value reflects to digital component provider 108 a reduced value for supplying the digital component to terminal device 106 for the current session.

[0045] The digital component deduplication system 102 uses several modules and subsystems to receive and respond to requests for one or more of search results, digital component requests 116a to 116b, digital component data 118a to 118g, and other data via network 110 (e.g., the Internet). The digital component deduplication system 102 includes a communication interface 144 configured to communicate via network 110 with one or more of a publisher system 104, a terminal device 106, or a digital component provider 108. The communication interface 144 transmits data from received requests from network 110 to one or more subsystems or modules of the digital component deduplication system 102, such as a logic execution server 130, a security server 130, or a packetized data search engine 128.

[0046] Logic execution server 130 receives eligibility value data 150 from digital component provider 108 and runs a logic execution process (e.g., auction, scoring process, or another logic execution technique) for the digital component represented by the eligibility value 150. For example, logic execution server 130 may include a third-party logic execution server. Logic execution server 130 runs a logic execution process for each candidate digital component, as described in further detail below.

[0047] The grouped data search engine 128 includes one or more computing devices (e.g., servers) configured to receive search queries 158 and return search results from the Internet. Search results include a mix of web pages, images, and other types of files. The grouped data search engine 128 also mines data available in databases or open directories. The grouped data search engine 128 maintains real-time information by running algorithms on web crawlers. For example, the search engine 128 may include third-party search engines.

[0048] The packet data parser 152 receives digital component requests 116a to 116b and parses requests for encryption token data 120a. Encryption token data 120a includes an encryption token provided from terminal device 106, indicating which digital components have been supplied to the terminal device during the current session. The packet data parser 152 determines whether an encryption token exists in the digital component requests 116a to 116b. If an encryption token exists, the packet data parser 152 sends the encryption token data 120a to security server 126 for decryption (if applicable) or forwards the encryption data 120a to digital component provider 108 for decryption along with an eligibility request 148 sent by logic execution server 130.

[0049] Security server 126 receives encrypted token data 120a from packetized data parser 152. In some embodiments, security server 126 has already received encryption keys 158 from one or more digital component providers (e.g., digital component provider 108). Encryption key 158 is used to decrypt the encrypted token received in encrypted data 120a. In some embodiments, encryption key 158 is the private key of digital component provider 108. In some embodiments, encryption key 158 is the public key of digital component provider 108. The public key can be used by the security server to encrypt the encrypted token for transmission to a client (such as terminal device 106) or issuer system 104 as encrypted token data 120b. In some embodiments, if digital component deduplication system 102 does not have the encryption key of digital component provider 108, encrypted token data 120a is forwarded to digital component provider 108 for decryption as described above. During the logic execution process of logic execution server 130, encrypted token data 120a is forwarded along with qualification value request 148.

[0050] In some implementations, security server 126 does not decrypt the encrypted token data 120a, even if the digital component deduplication system 102 has received the encryption key from digital component provider 108. Instead, security server 126 waits for registration interface 154 to determine that candidate digital components for the logic execution process are not associated with the eligibility value application programming interface (API) endpoint (which excludes requests to digital component provider 108 to decrypt encrypted data 120a). In this case, security server 126 decrypts encrypted data 120a, allowing duplicate digital components to be removed from the logic execution process of logic execution server 130.

[0051] Registration interface 154 registers one or more digital component providers with digital component deduplication system 102. Registration interface 154 uses a qualification value request API to register digital component providers with digital component deduplication system 102. The registration interface can be checked to determine if a digital component issuer is participating in the deduplication process. If the digital component is participating, encrypted token data 120a can be sent to the digital component provider during the logic execution process of logic execution server 130. Registration interface 154 can store a list of registered digital component providers in registration API endpoint cache 138.

[0052] The logic execution server 130 receives the encryption token from the encryption data 120a and executes one or more logic execution procedures to assign digital components to be supplied to the client device in response to a request for digital components. The logic execution server 130 generates a list of candidate digital components. If the packetized data parser does not find the encryption token, the logic execution server 130 proceeds to request a qualification value 148 from one or more digital component providers. In this case, the request does not include the encryption token data 120a because the data set is either empty or has not yet been received from the terminal device 106, indicating that the current session is new and no digital components have been supplied to the terminal device during the current session.

[0053] The digital component provider returns qualification value data 150 and associated encryption token data 120b indicating the digital component to be supplied (if the digital component is assigned for supply by the logic execution server 130). The logic execution server 130 performs a logic execution process and assigns the digital component to be supplied after receiving all requested qualification values ​​from the digital component provider 108. The assigned digital component and associated encryption token are then sent to the client device.

[0054] In some implementations, the logic execution server 130 receives data indicating an encrypted token received from the terminal device 106. If the security server has already decrypted the encrypted token from the encrypted token data 120a, the logic execution server 130 verifies the decrypted identifier by comparing the decrypted identifier with the unencrypted identifier of the encrypted token. If a match is found, the digital component is disqualified from the logic execution process and removed from the list of candidate digital components. No request is sent to the digital component provider 108, thereby reducing the additional bandwidth usage required for sending and receiving qualification values ​​from the digital component provider 108. Furthermore, since fewer digital components are evaluated during the logic execution process, processing time is reduced compared to the process of evaluating all candidate digital components for the supply evaluation platform, and latency caused by the logic execution process is reduced.

[0055] In some implementations, the logic execution server receives data indicating that the security server 126 has not yet decrypted the encrypted token received from the terminal device 106. The logic execution server 130 forwards the encrypted token data 120a to the digital component provider 108 for decryption, as described above. The digital component provider returns qualification value data 150 based on the verification process of the digital component provider 108's decryption and verification logic 160, which includes a qualification value reflecting whether a digital component has been presented. The qualification value data 150 thus automatically interprets the value of the digital component to the digital component provider, and the logic execution server uses the qualification value data 150 to perform the logic execution process. Each of the described logic execution processes ensures that duplicate digital components are not sent to the terminal device during a single session.

[0056] The buffer of the digital component deduplication system 102 is used to store data. The buffer of the digital component deduplication system 102 can be combined into a single location or be a discrete buffer.

[0057] Search history cache 136 includes a data storage area in memory or on disk, such as a database (e.g., a distributed database). Search history cache 136 includes data representing search queries sent by terminal device 106. Digital component deduplication system 102 caches search queries because the search queries provide terminal device 106 with a robust data set for performing logical execution processes.

[0058] The encryption token cache 140 stores the encryption tokens received by the digital component deduplication system 102 in the encryption token data 120a. The encryption tokens are associated with the terminal device 106 and used during logical execution. The encryption token cache 140 includes a data storage area in memory or on disk, such as a database (e.g., a distributed database).

[0059] Keyed digital component cache 142 stores digital components, such as candidate digital components, that have been retrieved for a logical execution process. Keyed digital component cache 142 includes a data storage area in memory or on disk, for example, a database (such as a distributed database). Digital components include one or more of text, images, videos, application files, audio, etc. As described above, keyed digital component cache 142 includes the system's memory. Storing digital components in memory reduces the latency for supplying digital components (such as by publisher system 104 or terminal device 106) in response to requests for digital components. The latency for supplying digital components is real-time because the system supplies digital components without performing data queries and retrievals from the database. Relative to... Figure 2A A more detailed description of keyed numeric component buffer 142.

[0060] Encryption key cache 134 stores encryption keys (both public and private) received from the digital component provider. Encryption key cache 134 may be combined with or include encryption token cache 140 or any other cache.

[0061] Publisher system 104 includes servers or a network of servers that host web page content. Publisher system 104 may include commercial hosting services or standalone servers. Publisher system 104 supplies web page data 112 to terminal device 106 in response to a request for web page data 112 from a URL hosted by publisher system 104.

[0062] When terminal device 106 requests webpage data 112, publisher system 104 sends a request 116b for digital component data from digital component deduplication system 102 to fill any digital component slots of the requested webpage. If publisher system 104 receives encryption token data 120a from terminal device 106, publisher system 104 forwards encryption token data 120a to digital component deduplication system 102. Digital component deduplication system 102 receives encryption token data 120a and the request for digital component data 116a. Digital component deduplication system 102 performs the logic execution as described above and returns digital component data 118a to 118g and encryption token data 120b to publisher system 104, the encryption token data 120b including an encryption token different from the encryption token data 120a. Encryption token data 120b represents digital component data that has not yet been supplied to terminal device 106, while encryption data 120a includes an encryption token for digital components that have already been supplied to the terminal device during the current session.

[0063] The digital component data 118a and the encrypted data 120b are sent to the issuer system 104, which then supplies the encrypted token data 120b and the requested webpage along with the digital component assigned by the logic execution server 130 to the terminal device 106.

[0064] See Figure 2AThe diagram illustrates a keyed component cache environment 200. The keyed component cache 142 indexes data used in the logical execution process of the component deduplication system 102. References 212 to components are stored in the keyed component cache 142, or the components themselves are stored 214. The keyed component cache 142 includes a component keying index 210 that associates component references with (if applicable) associated component data, and indicators indicating other data associated with the component (e.g., candidate components). For example, the component keying index 210 may include an indicator 216 pointing to a component provider's registration with the eligibility API. The component keying index 210 may include an indicator 218 indicating whether the component deduplication system 102 has received an encryption key for the component provider associated with the component, and the type of the received key. The logical execution server 130 uses this data to determine which processes are triggered during logical execution. The digital component keying index 210 includes a list of device identifiers 220 that associate the encrypted token data 120a with the device that sent the data.

[0065] In some implementations, the grouped data search engine includes encryption token logic 228 for determining whether an encryption key exists in the received digital component requests 116a to 116b. The encryption token logic uses parser logic 230 to ignore digital component request data. The encryption token logic can detect specific headers, appended data, etc., used in the encryption scheme to determine the presence of an encryption token. The encryption token logic 228 can then pass the obtained indication to the digital component keying index 210 of the keyed digital component cache 142.

[0066] In some implementations, the logic execution server 130 includes a candidate numeric component keying cache 241. The candidate numeric component keying cache 241 can be used to store a list of candidate numeric components during the logic execution process. The candidate numeric component keying cache 241 can be combined with a keyed numeric component cache 142.

[0067] The qualification value logic 242 of the logic execution server 130 is used to determine the assigned digital components during the logic execution process. For example, the highest qualification value can be used to assign a digital component for transmission to the client. In some implementations, the qualification value logic 242 identifies a specific qualification value sent by the digital component provider 108 to determine which candidate digital components should be de-considered during the logic execution process. For example, the qualification value can be zero, a negative number, etc. The qualification value logic 242 therefore discards digital components that have already been shown (e.g., repeated) or otherwise not intended to be transmitted during the current session.

[0068] During the logic execution process, directional logic 244 is used to weight the eligibility values ​​received from the digital component provider. This weighting is largely based on digital components that are particularly relevant to the user of the terminal device. Because directional logic 244 can always highly weight specific candidate digital components for a particular user, the logic execution engine can disqualify digital components that have been identified by the logic execution process as described above.

[0069] The registration interface 154 can invoke the registration API endpoint 138 associated with the digital component issuer linked to the candidate digital component. If the digital component issuer is already registered, the API endpoint is invoked, and an eligibility value request 148 is sent along with cryptographic token data 120a.

[0070] Security server 126 may include encryption key cache 134, verification logic 234, and encryption logic 236. Verification logic 234 compares a decrypted encryption token with an identifier associated with a digital component to determine if the digital component has been presented during the current session. This verification may be a comparator operation, an equivalence operation, or other operation comparing the decrypted token with the identifier of the digital component. Encryption logic 236 performs encryption and decryption functions for digital component deduplication system 102. For example, the encryption logic may use a public key received from digital component provider 108 to encrypt the encryption token, or use a public or private key from digital component provider 108 to decrypt the encryption token of encryption token data 120a.

[0071] Figure 2B Shown on client devices (e.g., Figure 1 A comparison 250 of two graphical user interfaces 252 and 262 displayed on the terminal device 106. Graphical user interface 252 includes a search query 254 from the user. Search query 254 is used to generate requests 116a to 116b for digital component data. A logical execution process directs a specific digital component 258 and search result 256 based on the query and other keying data associated with the terminal device. For interface 252, deduplication is not used, and the same digital component 258 is presented whenever the user enters the same query.

[0072] Interface 262 displays the subsequent webpage accessed by the user of terminal device 106. Webpage data 266 is displayed. However, instead of displaying the same numerical component 258 that the user just saw in interface 252, a new numerical component 268 is assigned to appear on the page.

[0073] Figure 3This diagram illustrates the actions 300 taken for deduplication of a digital component provider. The client device sends (302) a request for a digital component. The digital component deduplication system 102 receives (304) the request for the digital component. The digital component deduplication system 102 checks (306) the encryption token. If no token is found, the digital component deduplication system 102 generates (308) a list of candidate digital components. The digital component deduplication system 102 sends (308) a request for eligibility values ​​to the digital component provider 108.

[0074] Digital component provider 108 receives (312) a qualification value request and generates (314) a qualification value and an encryption token in response to the request. Digital component provider 108 sends (316) the qualification value and encryption token to digital component deduplication system 102.

[0075] The digital component deduplication system 102 receives (318) eligibility values ​​and encryption tokens for candidate digital components. The digital component deduplication system 102 assigns (320) digital components from a list based on a logical execution process. The digital component deduplication system 102 transmits (322) the digital components and associated encryption tokens to the client device 105 (e.g., Figure 1 The client device 105 receives (324) the digital component and the associated token and caches (326) the encrypted token for subsequent requests for the digital component. The client device 105 displays (328) the digital component. If another request is being sent (330), the client device 105 proceeds to step (406) as follows. Figure 4 As shown. If the current session is ending, the client device 105 clears the cache of the encryption token data (332).

[0076] Figure 4 Action 400 is shown for deduplication of digital component services. In some implementations, the digital component provider sends (402) an encryption key to the digital component deduplication system 102. The digital component deduplication system 102 stores (404) the encryption key in a keying database.

[0077] Client device 105 (e.g., Figure 1The terminal device 106 sends (406) a request for a digital component to the digital component deduplication system 102, and the request includes encrypted token data already cached by the client device. The digital component deduplication system 102 receives (408) the request for the digital component and examines (410) the encrypted token. Since the request includes the encrypted token, the token is found. The digital component deduplication system 102 generates (412) a list of candidate digital components. The digital component deduplication system 102 examines (414) the request interface associated with the digital component. If not found, the digital component deduplication system 102 decrypts the encrypted token using the stored encryption key (406). The digital component deduplication system 102 verifies (418) the decrypted token and removes (420) the digital component from the list of candidate digital components based on the result of the verification (e.g., if a match is found, it indicates the previous service of the digital component). The process then proceeds as follows Figure 3 Continue as shown in step 310.

[0078] Figure 5 This illustrates action 500 taken for deduplication in a digital component service. Client device 105 (e.g., Figure 1 The terminal device 106 sends (502) a request for a digital component to the digital component deduplication system 102. The request includes encrypted token data. The digital component receives (504) the request and the encrypted token data. The digital component deduplication system 102 examines (506) the token in the request and finds the token. The digital component deduplication system 102 generates (508) a list of candidate digital components for the logic execution process. The digital component deduplication system 102 examines (510) the request interface associated with the digital component and finds one. The digital component deduplication system 102 sends (512) a request for a qualification value to the digital component provider 108 by invoking the registration endpoint of the digital component provider 108.

[0079] The digital component provider receives a 514 request and an encryption token. The digital component provider 108 decrypts and verifies the encryption token, as shown in the reference. Figure 1 As described. The digital component provider can determine whether the digital component to which the requested eligibility value is sought has already been shown to the client device 105. The digital component provider corrects (520) the eligibility value based on this verification.

[0080] The digital component provider sends (522) an eligibility value to the digital component deduplication system 102. The digital component deduplication system 102 receives (524) the value and assigns (528) a digital component from the list for transmission to the client device 105. The digital component deduplication system 102 transmits (530) the assigned digital component and associated encryption token to the client device 105.

[0081] Client device 105 receives (532) a digital component and an associated encryption token. The client device caches (534) the token to be sent with subsequent requests for the digital component during the current session. Client device 105 displays (536) the digital component. If the current session is ending, client device 105 clears (538) the cache.

[0082] Figure 6 A flowchart illustrating a process 600 for digital component deduplication is shown. Digital component deduplication system (e.g., Figure 1 The digital component deduplication system 102 receives (602) packetized data from the client device. The digital component deduplication system 102 searches the packetized data to determine the presence of an encryption token associated with a first digital component transmitted in response to a previous request for digital component data. A candidate digital component list is generated (606). This digital component list is then used to determine (608) whether the candidate digital components are associated with (e.g., registering with an API) a data interface used to request a qualification value. The digital component deduplication system 102 generates (610) packetized data including the encryption token and the request for the qualification value. The digital component deduplication system 102 assigns (612) a second digital component from the list of candidate digital components for transmission to the terminal device.

[0083] Figure 7 Exemplary computing devices 700 and 750 are shown that can be used as clients or as servers or multiple servers to implement the systems and methods described herein. Computing device 700 is contemplated to represent various forms of digital computers, such as laptop computers, desktop computers, workstations, personal digital assistants, servers, blade servers, mainframes, and other suitable computers. Computing device 750 is contemplated to represent various forms of mobile devices, such as personal digital assistants, cellular phones, smartphones, and other similar computing devices. Additionally, computing devices 700 or 750 may include a Universal Serial Bus (USB) flash drive. The USB flash drive may store an operating system and other applications. The USB flash drive may include input / output components, such as a wireless transmitter or a USB connector that can be plugged into a USB port of another computing device. The components shown herein, their connections and relationships, and their functions are intended to be exemplary only and are not intended to limit specific implementations of the invention described and / or claimed herein.

[0084] Computing device 700 includes a processor 702, a memory 704, a storage device 706, a high-speed interface 708 connected to the memory 704 and a high-speed expansion port 710, and a low-speed interface 712 connected to a low-speed bus 714 and the storage device 706. Each of components 702, 704, 706, 708, 710, and 712 is interconnected using various buses and may be mounted on a common motherboard or otherwise. Processor 702 can process instructions for execution within computing device 700, including instructions stored in memory 704 or on storage device 706, to display graphical information for a GUI on an external input / output device, such as a display 716 coupled to high-speed interface 708. In other embodiments, multiple processors and / or multiple buses may be used in conjunction with multiple memories and memory types, depending on the circumstances. Additionally, multiple computing devices 700 may be connected, each providing several parts of the necessary operation (e.g., as a server group, a set of blade servers, or a multiprocessor system).

[0085] Memory 704 stores information within computing device 700. In one embodiment, memory 704 is one or more volatile memory cells. In another embodiment, memory 704 is one or more non-volatile memory cells. Memory 704 may also be another form of computer-readable medium, such as a magnetic disk or optical disk.

[0086] Storage device 706 provides large-capacity storage for computing device 700. In one embodiment, storage device 706 may be or contain computer-readable media, such as floppy disk devices, hard disk devices, optical disk devices, magnetic tape devices, flash memory or other similar solid-state storage devices, or device arrays, including those in a storage area network or other configuration. The computer program product may be tangibly embodied in an information carrier. The computer program product may also contain instructions that, when executed, perform one or more methods (such as those described above). The information carrier is a computer or machine-readable medium, such as memory 704, storage device 706, or memory on processor 702.

[0087] High-speed controller 708 manages bandwidth-intensive operations for computing device 700, while low-speed controller 712 manages lower bandwidth-intensive operations. This functional allocation is merely exemplary. In one embodiment, high-speed controller 708 is coupled to memory 704, display 716 (e.g., via a graphics processor or accelerator), and high-speed expansion port 710, which accepts various expansion cards (not shown). In another embodiment, low-speed controller 712 is coupled to storage device 706 and low-speed expansion port 714. The low-speed expansion port (which may include various communication ports (e.g., USB, Bluetooth, Ethernet, Wireless Ethernet)) may be coupled to one or more input / output devices, such as keyboards, pointing devices, scanners, or networking devices (such as switches or routers), for example, via a network adapter.

[0088] The computing device 700 can be implemented in many different forms, as shown in the figure. For example, it can be implemented as a standard server 720, or multiple times as a group of such servers. It can also be implemented as part of a rack server system 724. Alternatively, it can be implemented in a personal computer (such as a laptop computer 722). Alternatively, components from the computing device 700 can be combined with other components in a mobile device (not shown) (such as device 750). Each of such devices may contain one or more of the computing devices 700, 750, and the entire system may consist of multiple computing devices 700, 750 communicating with each other.

[0089] The computing device 750 includes a processor 752, a memory 764, input / output devices (such as a display 754), a communication interface 766, a transceiver 768, and other components. The device 750 may also be provided with storage devices (such as microdrives or other devices) to provide additional storage. Each of the components 750, 752, 764, 754, 766, and 768 is interconnected using various buses, and several of these components may be mounted on a common motherboard or otherwise.

[0090] Processor 752 executes instructions within computing device 750, including instructions stored in memory 764. The processor can be implemented as a chipset comprising individual and multiple analog and digital processors. Alternatively, the processor can be implemented using any of many architectures. For example, processor 410 can be a CISC (Complex Instruction Set Computer) processor, a RISC (Reduced Instruction Set Computer) processor, or a MISC (Minimum Instruction Set Computer) processor. For example, the processor can provide coordination for other components of device 750, such as control of the user interface, applications running on device 750, and wireless communications of device 750.

[0091] Processor 752 can communicate with the user via control interface 758 and display interface 756 coupled to display 754. For example, display 754 can be a TFT (Thin Film Transistor Liquid Crystal Display) or OLED (Organic Light Emitting Diode) display, or other suitable display technology. Display interface 756 may include suitable circuitry for driving display 754 to present graphics and other information to the user. Control interface 758 can receive commands from the user and translate them for submission to processor 752. Additionally, external interface 762 can communicate with processor 752 to enable near-field communication between device 750 and other devices. For example, external interface 762 can provide wired communication or, in other implementations, wireless communication, and multiple interfaces may be used.

[0092] Memory 764 stores information within computing device 750. Memory 764 may be implemented as one or more computer-readable media, one or more volatile memory cells, or one or more non-volatile memory cells. Extended memory 774 may also be provided and connected to device 750 via an extended interface 772, which may include, for example, a SIMM (Single In-Circuit Memory Module) card interface. Such extended memory 774 may provide additional storage space for device 750, or may also store applications or other information for device 750. Specifically, extended memory 774 may include instructions for implementing or supplementing the processes described above, and may also include security information. Thus, for example, extended memory 774 may be a security module for device 750 and may be programmable with instructions authorizing secure use of device 750. Additionally, security applications may be provided via a SIMM card, such as placing identification information on the SIMM card in a manner difficult to crack.

[0093] For example, the memory may include flash memory and / or NVRAM memory, as discussed below. In one embodiment, the computer program product is tangibly embodied in an information carrier. The computer program product contains instructions that, when executed, perform one or more methods (such as those described above). The information carrier is a computer or machine-readable medium, such as memory 764, extended memory 774, or memory on processor 752, which may be received, for example, via transceiver 768 or external interface 762.

[0094] Device 750 can communicate wirelessly via communication interface 766, which may include digital signal processing circuitry if necessary. Communication interface 766 can provide communication under various modes or protocols, such as GSM voice calls, SMS, EMS or MMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, and others. For example, such communication can occur via radio frequency transceiver 768. Additionally, short-range communication can occur using transceivers such as Bluetooth, WiFi, or others (not shown). Furthermore, GPS (Global Positioning System) receiver module 770 can provide additional navigation and location-related wireless data to device 750, which may be used by applications running on device 750, as appropriate.

[0095] Device 750 can also communicate audibly using audio codec 760, which can receive spoken information from a user and convert it into usable digital information. Audio codec 760 can also generate audible sounds for the user, such as through a speaker, for example, in the handheld device of device 750. Such sounds may include sounds from voice telephone calls, recorded sounds (e.g., voice messages, music files, etc.), and may also include sounds generated by applications operating on device 750.

[0096] The computing device 750 can be implemented in many different forms, as shown in the figure. For example, it can be implemented as a cellular phone 780. It can also be implemented as part of a smartphone 782, a personal digital assistant, or other similar mobile device.

[0097] Various specific implementations of the systems and techniques described herein may be implemented in digital electronic circuits, integrated circuits, specially designed ASICs (Application-Specific Integrated Circuits), computer hardware, firmware, software, and / or combinations thereof. These various implementations may include implementations of one or more computer programs that are executable and / or translatable on a programmable system, the programmable system comprising: at least one programmable processor (which may be dedicated or general-purpose) coupled to receive data and instructions from and transfer data and instructions to a storage system; at least one input device; and at least one output device.

[0098] These computer programs (also referred to as programs, software, software applications, or code) include machine instructions for a programmable processor and may be implemented in high-level programming and / or object-oriented programming languages ​​and / or in assembly / machine language. As used herein, the terms "machine-readable medium" and "computer-readable medium" mean any computer program product, device, and / or apparatus (e.g., disk, optical disk, memory, programmable logic device (PLD)) used to provide machine instructions and / or data to a programmable processor, including machine-readable media that receive machine instructions as machine-readable signals. The term "machine-readable signal" means any signal used to provide machine instructions and / or data to a programmable processor.

[0099] To provide interaction with the user, the systems and techniques described herein can be implemented on a computer having a display device for displaying information to the user (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) and a keyboard and pointing device (e.g., a mouse or trackball) that the user can use to provide input to the computer. Other types of devices can also be used to provide interaction with the user; for example, feedback provided to the user can be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback); and input from the user can be received in any form, including acoustic, speech, or tactile input.

[0100] The systems and technologies described herein can be implemented in computing systems that include back-end components (e.g., as data servers), middleware components (e.g., application servers), or front-end components (e.g., client computers having a graphical user interface or web browser available for users to interact with specific implementations of the systems and technologies described herein), or any combination of such back-end, middleware, or front-end components. Components of the system can be interconnected via digital data communication (e.g., communication networks) of any form or medium. Examples of communication networks include local area networks (“LANs”), wide area networks (“WANs”), peer-to-peer networks (with ad-hoc or static members), grid computing infrastructure, and the Internet.

[0101] A computing system may include clients and servers. Clients and servers are typically geographically separated and usually interact through a communication network. The client-server relationship is established by means of computer programs running on the respective computers and having a client-server relationship with each other.

[0102] While some specific embodiments have been described in detail above, other modifications are possible. Furthermore, other digital component passing deduplication mechanisms may be used. Additionally, the logical flow depicted in the figures does not require the specific order or sequence shown to achieve the desired result. Other steps may be provided, or several steps may be eliminated from the described flow, and other components may be added to or removed from the described system. Therefore, other embodiments fall within the scope of the appended claims.

Claims

1. A method for deduplicating digital components, the method comprising: Receive a request for a digital component from a first client device, the request including data indicating that a first digital component has been transmitted to the first client device; Based on the data representing the first digital component and in response to the request, a list of candidate digital components is generated, excluding the first digital component that has already been transmitted to the first client device, including: The data representing the first digital component is used to filter the digital components that match the first digital component from the list of candidate digital components; and Selecting a second digital component from the list of candidate digital components that exclude the first digital component that has already been transmitted to the first client device for transmission to the first client device includes: A specific candidate numeric component in the list is associated with an interface for requesting a qualification value of the specific candidate numeric component from a second client device associated with the specific candidate numeric component; Generate a request for the qualification value, including data representing the first digital component that has been transmitted to the first client device; The interface is used to transmit the request for the qualification value to the second client device; Receive the qualification value from the second client device; and The second digital component is selected from the list of candidate digital components based at least in part on the eligibility value for transmission to the first client device, wherein the second digital component is different from the first digital component; The second digital component is transmitted to the first client device in response to being selected for transmission to the first client device.

2. The method according to claim 1, wherein, The data indicating that the first digital component has been transmitted to the first client device includes an encrypted token indicating that the first digital component has been transmitted to the first client device.

3. The method according to claim 2, further comprising: Receive the encryption key from the second client device; as well as The encryption key is used to decrypt the encrypted token representing the first digital component that has been transmitted to the first client device.

4. The method according to claim 3, wherein, The encryption key includes the private key of the second client device.

5. The method according to claim 2, wherein, The encryption token includes keyed data representing the first digital component that has been transmitted to the first client device, wherein generating a list of candidate digital components excluding the first digital component that has been transmitted to the first client device includes: Search a keying database that stores keying data to identify the contents of one or more entries in the keying database that include keying data representing the first digital component, wherein each item of the keying data represents a specific digital component.

6. The method according to claim 5, wherein, The keying data of the encryption token uniquely identifies the first digital component that has been transmitted to the first client device, and when the keying data is decrypted, the keying data matches the identifier of the first digital component that has been transmitted to the first client device.

7. The method of claim 2, further comprising transmitting the second digital component and an encrypted token representing the second digital component to the first client device.

8. A system for deduplication of digital components, the system comprising: One or more computers; as well as One or more storage devices communicatively coupled to the one or more computers, wherein the one or more storage devices store instructions that, when executed by the one or more computers, cause the one or more computers to perform an operation for deduplication of digital components, the operation including: Receive a request for a digital component from a first client device, the request including data indicating that a first digital component has been transmitted to the first client device; Based on the data representing the first digital component and in response to the request, a list of candidate digital components is generated, excluding the first digital component that has already been transmitted to the first client device, including: The data representing the first digital component is used to filter the digital components that match the first digital component from the list of candidate digital components; and Selecting a second digital component from the list of candidate digital components that exclude the first digital component that has already been transmitted to the first client device for transmission to the first client device includes: A specific candidate numeric component in the list is associated with an interface for requesting a qualification value of the specific candidate numeric component from a second client device associated with the specific candidate numeric component; Generate a request for the qualification value, including data representing the first digital component that has been transmitted to the first client device; The interface is used to transmit the request for the qualification value to the second client device; Receive the qualification value from the second client device; and The second digital component is selected from the list of candidate digital components based at least in part on the eligibility value for transmission to the first client device, wherein the second digital component is different from the first digital component; The second digital component is transmitted to the first client device in response to being selected for transmission to the first client device.

9. The system according to claim 8, wherein, The data indicating that the first digital component has been transmitted to the first client device includes an encrypted token indicating that the first digital component has been transmitted to the first client device.

10. The system according to claim 9, wherein, The operation further includes: Receive the encryption key from the second client device; and The encryption key is used to decrypt the encrypted token representing the first digital component that has been transmitted to the first client device.

11. The system according to claim 10, wherein, The encryption key includes the private key of the second client device.

12. The system according to claim 9, wherein, The encryption token includes keyed data representing the first digital component that has been transmitted to the first client device, wherein generating a list of candidate digital components excluding the first digital component that has been transmitted to the first client device includes: Search a keying database that stores keying data to identify the contents of one or more entries in the keying database that include keying data representing the first digital component, wherein each item of the keying data represents a specific digital component.

13. The system according to claim 12, wherein, The keying data of the encryption token uniquely identifies the first digital component that has been transmitted to the first client device, and when the keying data is decrypted, the keying data matches the identifier of the first digital component that has been transmitted to the first client device.

14. The system according to claim 9, wherein, The operation further includes transmitting the second digital component and an encrypted token representing the second digital component to the first client device.

15. One or more non-transitory computer storage media storing instructions, said instructions, when executed by one or more computers, causing said one or more computers to perform an operation for deduplication of digital components, said operation comprising: Receive a request for a digital component from a first client device, the request including data indicating that a first digital component has been transmitted to the first client device; Based on the data representing the first digital component and in response to the request, a list of candidate digital components is generated, excluding the first digital component that has already been transmitted to the first client device, including: The data representing the first digital component is used to filter the digital components that match the first digital component from the list of candidate digital components; and Selecting a second digital component from the list of candidate digital components that exclude the first digital component that has already been transmitted to the first client device for transmission to the first client device includes: A specific candidate numeric component in the list is associated with an interface for requesting a qualification value of the specific candidate numeric component from a second client device associated with the specific candidate numeric component; Generate a request for the qualification value, including data representing the first digital component that has been transmitted to the first client device; The interface is used to transmit the request for the qualification value to the second client device; Receive the qualification value from the second client device; and The second digital component is selected from the list of candidate digital components based at least in part on the eligibility value for transmission to the first client device, wherein the second digital component is different from the first digital component; The second digital component is transmitted to the first client device in response to being selected for transmission to the first client device.

16. The non-transitory computer storage medium according to claim 15, wherein, The data indicating that the first digital component has been transmitted to the first client device includes an encrypted token indicating that the first digital component has been transmitted to the first client device.

17. The non-transitory computer storage medium according to claim 16, further comprising: Receive the encryption key from the second client device; as well as The encryption key is used to decrypt the encrypted token representing the first digital component that has been transmitted to the first client device.

18. The non-transitory computer storage medium according to claim 17, wherein, The encryption key includes the private key of the second client device.

19. The non-transitory computer storage medium according to claim 16, wherein, The encryption token includes keyed data representing the first digital component that has been transmitted to the first client device, wherein generating a list of candidate digital components excluding the first digital component that has been transmitted to the first client device includes: Search a keying database that stores keying data to identify the contents of one or more entries in the keying database that include keying data representing the first digital component, wherein each item of the keying data represents a specific digital component.

20. The non-transitory computer storage medium according to claim 19, wherein, The keying data of the encryption token uniquely identifies the first digital component that has been transmitted to the first client device, and when the keying data is decrypted, the keying data matches the identifier of the first digital component that has been transmitted to the first client device.

Citation Information

Patent Citations

  • Encryption-based data access management

    CN104885093A

  • Information updating method and apparatus based on social network platform

    CN105608627A