Synchronization control of folders in a computer system

By prioritizing email folder synchronization in real time through a priority sorting controller, the problem of email synchronization delay was solved, improving the user experience and saving resources.

CN116648896BActive Publication Date: 2025-11-07MICROSOFT TECHNOLOGY LICENSING LLC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202180088376.0
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2020-12-29
Filing Date
2021-12-08
Publication Date
2025-11-07
Estimated Expiration
2041-12-08

AI Technical Summary

Technical Problem

During email synchronization, due to synchronization issues between the first and second email providers, the mobile application may be unable to update new messages in the mirrored email inbox in a timely manner, resulting in a degraded user experience and wasted resources.

Method used

The priority sorting controller prioritizes the synchronization of email folders in real time based on user interaction signals and server synchronization conditions. It adjusts the synchronization rules and frequency according to the interaction score to prioritize folders that users use frequently.

Benefits of technology

It improved the responsiveness of mobile applications, reduced synchronization latency, saved email server resources, and enhanced the user experience.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN116648896B_ABST
    Figure CN116648896B_ABST
Patent Text Reader

Abstract

Disclosed herein are techniques for synchronization control of folders in a computing system. In one example, a method includes receiving data representing a signal that indicates a user has interacted with a file in a first folder or has directly interacted with the first folder and a failure to perform a synchronization operation between the first folder at a first server and a corresponding folder at a second server. The method can then include increasing a synchronization priority of the first folder relative to the second folder in accordance with the received signal and synchronizing the first folder at the first server with another corresponding folder at the second server and synchronizing a second folder at the first server with the corresponding folder at the second server in accordance with the increased relative synchronization priority of the first folder relative to the second folder.
Need to check novelty before this filing date? Find Prior Art

Description

BACKGROUND

[0001] Email, or electronic mail, is a technology for exchanging messages between users using computers, tablets, smartphones, or other suitable types of electronic devices. Email exchanges operate across computer networks such as the Internet or an intranet. Today’s email systems are typically based on a store-and-forward model that utilizes an email server to accept, forward, transmit, and store email messages. Users can connect to the email server using a computer or mobile device to access email information in an email mailbox via a computer network. SUMMARY

[0002] This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the. This Summary is not intended to identify key or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.

[0003] Users sometimes access an email mailbox using a third-party application. For example, a user can use a mobile application on a smartphone to access a user mailbox that is hosted and managed by a first email provider. However, the mobile application can be provided by a second email provider that does not have direct control over the user’s email mailbox at the first email provider. Instead of directly accessing the email server of the first email provider, the mobile application can access a “mirror” email mailbox at the second email provider that is replicated from a source email mailbox at the first email provider. Optionally, the second email provider can also add control data or metadata to the replicated email messages to provide additional functionality that is suitable for the mobile application. The mobile application can then access the mirror email mailbox at the second email provider to retrieve, present, and / or provide user access to the email messages.

[0004] However, the above mailbox replication techniques can cause certain problems when indirectly accessing a user’s email messages via a mirror email mailbox at a first email provider. Typically, an email mailbox is organized into a plurality of email folders, such as “inbox,” “sent,” “outbox,” “junk,” and “deleted items.” A user can also create custom email folders, such as for different types, categories, subjects, groups, projects, departments, etc. As a result, a source email mailbox can sometimes include hundreds or even thousands of email folders. During operation, a second email provider synchronizes various email folders at the source email mailbox and a mirror email mailbox by sending synchronization requests to the first email provider and using responses received from the first email provider to update the corresponding email folders.

[0005] However, at times, the mobile application can appear to fail to receive / send email messages due to synchronization issues between the first and second email providers. For example, when a user attempts to access new messages in the second email folder, the second email provider can "stall" while synchronizing email messages in the first email folder. The first email folder can contain many email messages and / or email messages with large size attachments (e.g., video files). As a result, synchronization of the second email folder can be delayed because it takes a long time to synchronize the first email folder. Thus, while the second email folder at the source email mailbox can contain new messages, the user will not be able to access such new messages in the mirrored email mailbox due to the synchronization delay between the first email provider and the second email provider. As a result, the mobile application can appear to fail to update email messages in the second email folder.

[0006] In another example, synchronization of the source email mailbox and the mirrored email mailbox at the first email provider and the second email provider, respectively, can also fail for various reasons. For example, the first email provider can allow hosting of files of certain types, sizes, file names, and / or other attributes that are not allowed by the second email provider. As a result, synchronization of the first email folder with email messages having such attributes will fail. In response, the second email provider can attempt to resynchronize the first email folder by submitting repeated synchronization requests. However, a throttling rule implemented at the first email provider can limit the frequency at which the second email provider (or other email providers) can submit such synchronization requests. As a result, the repeated synchronization requests by the second email provider can cause the first email provider to suspend synchronization of the first email folder by, for example, setting a retry delay. As a result, the second email folder with new messages can not be synchronized in a timely manner between the source email mailbox and the mirrored email mailbox. Thus, the mobile application can also appear to fail to update the new messages. As a result, the above-described synchronization issues can negatively impact the user experience of the mobile application and cause resource consumption (e.g., storage, network bandwidth, and / or processor usage) on the respective email servers at both the first email provider and the second email provider.

[0007] Several embodiments of the disclosed technology can implement real-time prioritization of email folders in an email mailbox by basing the prioritization on user interaction signals, server synchronization conditions, backend processing conditions at the second email provider, and / or other suitable operational states of the email mailbox, thereby addressing certain aspects of the aforementioned deficiencies. In certain implementations, a prioritization controller can be configured to track various client-side signals indicative of user interaction with certain email folders in a mirrored email mailbox. Example client-side interactions can include:

[0008] • a user selecting (e.g., tapping on) an email folder in a mobile application;

[0009] • a user performing an operation on an email in the email folder (e.g., marking the email as “read”); or

[0010] • the mobile application issuing a signal to explicitly synchronize the email folder (e.g., when the user adds the email folder to a “Favorites” list).

[0011] The prioritization controller can also be configured to track server-side interaction signals indicative of synchronization and / or processing conditions / statuses of the email folders. Example server-side interaction signals can include:

[0012] • transient / permanent failures that occur when performing operations on an email folder or email messages contained therein (e.g., constant failures to directly synchronize due to a failing source email message or replay synchronization);

[0013] • receiving a throttling response when performing operations on an email folder (e.g., when attempting to synchronize an email folder results in a “try again later” response);

[0014] • synchronization of an email folder that results in too many items or replay actions (e.g., synchronizing a spam folder with many items from different sources); or

[0015] • backend processing workloads on various email folders (e.g., spam filters, priority inbox view separation, data parsing assistance).

[0016] In any of the preceding embodiments, the prioritization controller can be further configured to track "inactivity" of a lack of interaction or certain interactions or conditions. For example, the prioritization controller can be configured to track that a user has not selected an email folder or has not interacted with an email message in an email folder for a threshold amount of time. In another example, the prioritization controller can be further configured to track that no transient / permanent faults have been detected for a threshold amount of time when performing operations on the email folder. Based on such tracked inactivity, the prioritization controller can be configured to derive or assign an interaction score to the detected interaction and / or inactivity, whether positive or negative, as described in more detail below.

[0017] Using the tracked interaction signals or inactivity, the prioritization controller can be configured to derive a priority score for each email folder in the mirrored email mailbox. In certain embodiments, individual tracked interaction signals can be assigned an interaction score based on certain criteria. For example, when a user selects an email folder, the prioritization controller can assign the tracked interaction a numerical score (e.g., five) that indicates a positive interaction. In another example, when a user performs an action on an email message, the prioritization controller can assign another numerical score (e.g., ten) to the email folder that holds that email message. On the other hand, when a user has not selected an email folder or has not interacted with an email message in an email folder, the prioritization controller can assign another numerical score (e.g., negative two) to the email folder for inactivity to indicate a negative interaction.

[0018] In further examples, when the mobile application signals to add an email folder to a "favorites" list, the prioritization controller can assign yet another numerical value corresponding to the email folder based on tracked interactions. In still further examples, when any of the following are detected when performing operations on an email folder, the prioritization controller can assign a numerical value (e.g., negative ten) to the email folder to indicate that the operation was difficult:

[0019] • a transient / permanent fault is detected;

[0020] • a throttle response is received;

[0021] • a number of items exceeds a threshold; or

[0022] • a backend processing workload exceeds a threshold.

[0023] On the other hand, when one or more of the foregoing interactions have not been detected within a threshold amount of time, the prioritization can assign another value (e.g., positive five) indicating no operational difficulty. In at least some of the foregoing examples, the prioritization controller can be configured to adjust the assigned interaction score according to time, frequency, recency, or other suitable criteria. Thus, in some cases, the interaction score assigned to a tracked interaction (e.g., user selecting the email folder) can continue to decrease over time until reaching a floor value (e.g., zero) or continue to be negative without being limited by the floor value.

[0024] With the interaction scores, the prioritization controller can be configured to derive a priority score. In some embodiments, the prioritization controller can sum all of the assigned interaction scores to arrive at an overall priority score. In other embodiments, at least some of the assigned interaction scores can have corresponding weights for the overall priority score. Thus, an administrator or other suitable entity can adjust the weights to emphasize the importance of certain interaction signals. For example, the administrator can set a higher weight for server-side interaction signals compared to client-side interaction signals, or vice versa. In some implementations, the prioritization controller can be configured to adjust the priority score in real-time. As such, when an interaction signal is received, the prioritization controller can be configured to recalculate the priority score in response to receiving the interaction signal. In other implementations, the prioritization controller can be configured to also periodically or in other suitable manners adjust previously calculated priority scores. For example, as time elapses, the prioritization controller can periodically decrease certain interaction scores for previously detected interactions such that the overall priority score decreases. The decreased priority score can result in a new and / or different synchronization profile for the email folder corresponding to the decreased priority score, as described in more detail below.

[0025] The priority ranking controller can also be configured to implement different synchronization rules and adjust the implemented synchronization rules for individual email folders based on their respective priority scores. For example, the priority ranking controller can be configured to determine whether the priority score of an email folder exceeds a threshold. In response to determining that the priority score exceeds the threshold, the priority ranking controller can flag the email folder as synchronized. Otherwise, the priority ranking controller can flag the email folder as unsynchronized. In another example, in response to determining that the priority score exceeds the threshold, the priority ranking controller can flag the email folder for synchronization at a higher frequency (e.g., every hour) than other email folders whose priority scores are below the threshold (e.g., once a day). In a further example, the priority ranking controller can also be configured to rank the email folders in a priority order according to the priority scores and instruct the email server to synchronize the email folders in the mirror email mailbox using the priority order. In yet other examples, the priority ranking controller can be configured to exclude or delay synchronization of email folders that are continuing to experience faults or other operational difficulties (e.g., synchronization failures, high processing workloads, etc.).

[0026] Several embodiments of the disclosed technology can improve the user experience when using the mobile application. By prioritizing the synchronization of email folders using the client-side interaction signals, the email folders that are most frequently used by the user can be synchronized more frequently or more quickly than other email folders. As a result, the most frequently used email folders can remain up-to-date with little or no synchronization delay. Furthermore, by not synchronizing email folders that the user does not frequently use for long periods of time, the first and second email providers can conserve storage, computing, network, or other suitable types of resources on the respective email servers. Moreover, by synchronizing a reduced number of email folders, the synchronization latency for the email folders can also be reduced. As a result, the mobile application can respond more quickly compared to if all of the email folders were synchronized. BRIEF DESCRIPTION OF DRAWINGS

[0027] Figures 1A-1C FIG. 1 is a schematic diagram illustrating a computing system implementing synchronization control of folders in accordance with embodiments of the disclosed technology.

[0028] Figure 2 FIG. 2 is a schematic diagram illustrating certain hardware / software components of the computing system of FIG. 1 in accordance with embodiments of the disclosed technology.

[0029] Figures 3A-3C FIG. 3 is a schematic diagram illustrating example synchronization control of folders in accordance with embodiments of the disclosed technology.

[0030] Figures 4A-4C is a flowchart illustrating an example process for synchronization control of folders according to embodiments of the disclosed technology.

[0031] Figure 5 is a computing device suitable for use with certain components of the computing system in FIG. 1. DETAILED DESCRIPTION

[0032] Certain embodiments of systems, devices, components, modules, routines, data structures, and processes for synchronization control of folders in a computing system are described below. In the description below, specific details are included to provide a thorough understanding of certain embodiments of the disclosed technology. Those skilled in the relevant art will understand, however, that the technology can be practiced without some of the details included below. Figures 1A-5 The technology can be implemented with additional embodiments in ways not specifically described in the description below.

[0033] In the description below, an email server can include a computer dedicated to running applications configured to receive incoming emails from senders and forward outgoing emails to recipients via a computer network such as the Internet. Examples of such applications include Microsoft Exchange®, qmail, Exim, and sendmail. An email server can maintain and / or access one or more electronic mailboxes for respective users. An electronic mailbox can include a logical computer file structure in which a user’s emails are collected. An electronic mailbox can also include subordinate file structures, such as folders or email folders that separately include subsets of a user’s emails.

[0034] When a user accesses emails hosted by a first email provider using a third-party application, a second email provider of the application can create a mirror mailbox that is a replication of the mailbox at the first email provider. However, mailbox replication techniques can create certain operational issues due to synchronization between the original mailbox and the mirror mailbox. For example, the second email provider can be synchronizing a first folder when the user attempts to access a second folder. In another scenario, synchronization of the first folder can fail, causing the synchronization process to pause or terminate. Such operational issues can render the application unresponsive and negatively impact the user experience. Operational issues can also incur significant storage, computing, network, or other types of resources at both the first email provider and the second email provider.

[0035] ​Several embodiments of the disclosed technology can address certain aspects of the foregoing deficiencies by implementing real-time prioritization of email folders in an email mailbox based on user interaction, server synchronization conditions, and backend processing conditions at a second email provider. In example implementations, signals of user interaction with an email or email folder can be tracked, as well as synchronization status or conditions between a first and second email provider. The tracked signals can be converted to numerical values, with or without incorporation of weights, to form a total priority score for each email folder. Appropriate synchronization rules and / or order can then be applied to the email folders based on the priority scores. Thus, email folders that are more frequently interacted with by a user can be synchronized at a higher frequency than other folders. Email folders that continue to have synchronization issues can be deprioritized so that other email folders can be synchronized first and / or at a higher frequency. Thus, email services via a mobile application can respond more quickly than randomly synchronizing email folders, while reducing computing resources at the first and second email providers, as described below with reference to Figures 1A-5 are described in greater detail.

[0036] While various aspects of the disclosed technology are described below in the context of email folder synchronization control, in other implementations at least certain aspects of the disclosed technology can also be applied to synchronization of other types of folders. For example, a user can store a large amount of data representing documents or other types of files in a number of folders on a file management system (FMS). The FMS can be configured to track user interaction with the stored files or folders and backend processing load of the files or folders to determine a priority of duplicate copies of the files and / or folders. In other examples, aspects of the disclosed technology can also be applied in the context of synchronization control of text messages, online chats, or other suitable environments.

[0037] Figure 1A is a schematic diagram illustrating a computing system 100 implementing synchronization control of folders in accordance with embodiments of the disclosed technology. As Figure 1A shown, the computing system 100 can include a computer network 104 interconnecting a client device 102, a host email server 106a, and a proxy email server 106b. The host and proxy email servers 106a and 106b are also interconnected with network storage 112a and 112b, respectively, containing one or more folders 116a and 116b in a source email mailbox 113a and a mirror email mailbox 113b that is a duplicate of the source email mailbox 113a. Each folder 116a and 116b can include a collection of emails 114. The proxy email server 106b is also operably connected to a data store 108 containing a priority record 110.

[0038] Computer network 104 may include intranet, wide area network, Internet, or other suitable types of network. Although Figure 1A The diagram illustrates specific components of the computing system 100, but in other embodiments, the computing system 100 may also include additional and / or different components or arrangements. For example, the computing system 100 may also include additional network storage devices, additional hosts, and / or other suitable components (not shown). In other embodiments, network storage 112a and 112b and / or data repository 108 may be integrated into corresponding host or proxy email servers 106a and 106b.

[0039] Client device 102 may include a computing device configured to facilitate user 101's access via computer network 104 to computing services provided by host and proxy email servers 106a and 106b. For example, in the illustrated embodiment, client device 102 includes a smartphone with a mobile application 107 configured to execute appropriate instructions to provide user 101 with the ability to view, reply to, send, or perform other actions on email 114. In the illustrated example, email 114 is in inbox folder 116. In other examples, email 114 may be in other suitable folders, and mobile application 107 provides user 101 with the ability to switch between folders to view the corresponding email 114. In other embodiments, client device 102 may also include a laptop computer, tablet computer, game console, or other suitable computing device. Although for illustrative purposes... Figure 1A The illustration shows a single user 101, but in other embodiments, the computing system 100 can facilitate access to suitable types of computing services provided by host and / or proxy email servers 106a and 106b for any suitable number of users 101.

[0040] Host and proxy email servers 106a and 106b can be configured to facilitate email receiving, storage, forwarding, and other related functions. For example, Figure 1A As shown, a sender (not shown) can generate email 114 directly or via another intermediate email server (not shown) and transmit it to the host email server 106a. Email 114 is destined for user 101 and may include an email header, email body, and one or more optional attachments (not shown). After receiving email 114 from the sender, the host email server 106a can store a copy of email 114 in the email mailbox 113a corresponding to user 101 on network storage 112a. Figure 1AAs shown, the electronic mailbox 113a of the user 101 can include a plurality of folders 116a. Upon receiving the electronic mail 114, the host electronic mail server 106a can be configured to store the electronic mail 114 in one of the plurality of folders 116a according to certain setting rules. For example, the electronic mail 114 can be placed in the "Inbox" folder 116a of the electronic mailbox 113a. Alternatively, the electronic mail 114 can be placed in another folder 116a designated for storing electronic mails 114 from the sender.

[0041] In the illustrated scenario, the mobile application 107 can be provided by an electronic mail service provider (not shown) corresponding to the proxy electronic mail server 106b. To thereby allow the user 101 to access the electronic mails 114 in the host electronic mail server 106a, the proxy electronic mail server 106b can replicate the source electronic mailbox 113a at the network storage 112a into the network storage 112b. The network storage 112b can thereby include a mirror electronic mailbox 113b, which is a copy of the source electronic mailbox 113a with the same or similar folder structure. In operation, the proxy electronic mail server 106b can continuously, periodically, or on other suitable basis, synchronize various folders 116b in the mirror electronic mailbox 113b with the various folders 116b in the source electronic mailbox 113a. For example, the proxy electronic mail server 106b can periodically send a synchronization request (not shown) to the host electronic mail server 106a for any changes in the folders 116a at the source electronic mailbox 113a. In response, the host electronic mail server 106a can provide the proxy electronic mail server 106b with newly received electronic mails 114 from the sender. In turn, the proxy electronic mail server 106b can store a copy of the electronic mails 114 in the corresponding folders 116b and provide another copy of the electronic mails 114 to the mobile application 107 for presentation to the user 101.

[0042] However, the above mailbox replication technique can cause certain problems when accessing the user's electronic mails 114 at the host electronic mail server 106a indirectly via the proxy electronic mail server 106b. As Figure 1A As shown, the source electronic mailbox 113a and the mirror electronic mailbox 113b can be organized into a plurality of folders 116a and 116b, such as "Inbox," "Sent," "Outbox," "Junk," and "Deleted Items." The user 101 can also create custom folders 116a and 116b, such as for different types, categories, subjects, groups, projects, departments, etc. The source electronic mailbox 113a and the mirror electronic mailbox 113b can thus sometimes include hundreds or even thousands of folders 116a and 116b, respectively.

[0043] Due to synchronization issues between the host email server 106a and the proxy email server 106b, a large number of folders 116a and 116b can sometimes cause the mobile application 107 to appear to fail to receive / send emails 114. For example, when the user 101 attempts to access a new message from a sender in the second folder 116b', the proxy email server 106b can appear to "stall" while synchronizing emails 114 in the first folder 116b. The first folder 116b can contain many emails 114 and / or emails 114 with large size attachments such as video files. As a result, the synchronization of the second folder 116b' can be delayed because it takes a long time to complete the synchronization of the first folder 116a. Thus, while the second email folder 116b' at the source email box 113a can contain new messages, the user 101 will not be able to access such new messages in the mirrored email box 113b due to the synchronization delay. As a result, the mobile application 107 can appear to fail to update emails 114 in the second email folder 116b'.

[0044] In another example, the synchronization of the source email box 113a and the mirrored email box 113b at the first email server 106a and the proxy email server 106b, respectively, can also fail for various reasons. For example, the host email server 106a can allow certain types, sizes, and / or other attributes of files that the hosting proxy email server 106b does not allow. As a result, the synchronization of the first folder 116b with emails 114 having such attributes will fail. In response, the proxy email server 106b can attempt to resynchronize the first folder 116b by submitting duplicate synchronization requests. However, a throttling rule implemented at the host email server 106a can limit the frequency at which such synchronization requests can be submitted by the proxy email server 106b (or other email providers). As a result, the repeated synchronization requests by the proxy email server 106b can cause the host email server 106a to suspend the synchronization process by, for example, setting a retry delay. As a result, the second email folder 116b' with new messages can fail to synchronize in a timely manner between the source email box 113a and the mirrored email box 113b. Thus, the mobile application 107 can also appear to fail to update. The above synchronization issues can thus negatively impact the user experience of the mobile application 107 and incur a large amount of resource consumption (e.g., storage, network bandwidth, and / or processor usage) at the host email server 106a and the proxy email server 106b.

[0045] Several embodiments of the disclosed technology can enable real-time prioritization of folders 116b at network storage 112b based on user interactions, server synchronization conditions, and backend processing conditions at the proxy email server 106b to address certain aspects of the aforementioned deficiencies. As Figure 1A shown, the computing system 100 can include a prioritization controller 120 configured to perform synchronization control of the folders 116b in the mirrored email mailbox 113b with the folders 116a in the source email mailbox 113a. In one example, the prioritization controller 120 can be a component of the proxy email server 106b. In other examples, the prioritization controller 120 can be a component that is hosted on one or more additional servers (not shown) separate from the proxy email server 106b, while still having access to the priority records 110 in the data store 108.

[0046] According to embodiments of the disclosed technology, the prioritization controller 120 can be configured to control synchronization of the folders 116b with the mirrored email mailbox 113b by tracking various signals indicative of user interactions, server synchronization conditions, and background processing conditions at the proxy email server 106b. For example, as Figure 1B shown, the prioritization controller 120 can be configured to receive client-side interaction signals 118a. In certain embodiments, the client-side interaction signals 118a can be generated by an interaction agent (not shown) that is a component of the mobile application 107. Upon detecting user interaction with the email 114 and / or folders 116b, the interaction agent can be configured to generate, store, and transmit data indicative of the detected interaction to the prioritization controller 120. Example client-side interactions can include:

[0047] • a user selecting (e.g., tapping on) an email folder in the mobile application;

[0048] • a user performing an action on an email message in the email folder (e.g., marking the email as “read”); or

[0049] • the mobile application signaling to explicitly synchronize the email folder (e.g., when the user adds the email folder to a “Favorites” list).

[0050] In other embodiments, the client-side interaction signals 118a can be generated by the client device 102 in other suitable ways.

[0051] The prioritization controller 120 can also be configured to track server-side interaction signals 118b indicative of synchronization and / or processing conditions for the folders 116b. Example server-side interaction signals 118b can include:

[0052] • Transient / permanent failures that occur while performing operations on folder 116b or electronic mail 114 contained therein (e.g., direct sync failures due to faulty source electronic mail or replay synchronization);

[0053] • Throttling responses received from host electronic mail server 106b while performing operations on folder 116b (e.g., when attempting to synchronize folder 116b results in a "try again later" response);

[0054] • Synchronization of too many electronic mail 114 or replay operations of folder 116b (e.g., synchronizing a junk mail folder with many items from different sources); or

[0055] • Backend processing workloads on various folders 116b (e.g., junk mail filters, priority inbox view separation, data parsing assistance).

[0056] In any of the foregoing embodiments, priority ordering controller 120 can also be configured to track lack of interaction or "inactivity" of certain interactions. For example, priority ordering controller 120 can be configured to track that user 101 has not selected electronic mail folder 116b for a threshold amount of time. In another example, priority ordering controller 120 can also be configured to track that no transient / permanent failures have been detected while performing operations on electronic mail folder 116b for another threshold amount of time. Based on such tracked inactivity, priority ordering controller 120 can be configured to derive or assign interaction scores, whether positive or negative, for detected interactions and / or inactivity, as described in more detail below.

[0057] Using the tracked client-side and server-side interaction signals 118a and 118b, the prioritization controller 120 can be configured to derive a priority score for each of the folders 116b in the mirrored email mailbox 113b. In certain embodiments, individual tracked client-side and server-side interaction signals 118a and 118b can be assigned an interaction score based on certain criteria. For example, when the user 101 selects a folder 116b, the prioritization controller 120 can assign a numerical score (e.g., five) to the tracked interaction. In another example, when the user 101 performs an action on an email 114, the prioritization controller 120 can assign another numerical score (e.g., ten) to the folder 116b that holds the email 114. On the other hand, when the user 101 has not selected an email folder 116b or interacted with an email 114 in the email folder, the prioritization controller 120 can assign another numerical score (e.g., negative two) to the email folder 116b for inactivity. In another example, when the mobile application 107 can signal that a folder 116b was added to a "favorites" list, the prioritization controller 120 can assign yet another numerical value to the folder 116b. In yet other examples, the prioritization controller 120 can assign a numerical value (e.g., negative ten) to a folder 116b when any of the following are detected while performing an operation on the folder 116b:

[0058] • a temporary / permanent failure is detected;

[0059] • a throttle response is received;

[0060] • a number of items exceeds a threshold; or

[0061] • a backend processing workload exceeds a threshold.

[0062] In at least some of the foregoing examples, the prioritization controller 120 can be configured to adjust the assigned interaction score according to time, frequency, recency, or other suitable criteria. Thus, in certain cases, the interaction score assigned to a tracked interaction (e.g., user selection of a folder) can continue to decrease over time until it reaches a floor value (e.g., zero), or continue to be negative without being limited by a floor value.

[0063] Using interaction scores, the priority ranking controller 120 can be configured to derive a priority score for each folder 116b in the mirrored mailbox 113b. In some embodiments, the priority ranking controller 120 can sum all assigned interaction scores to derive an overall priority score. In other embodiments, at least some assigned interaction scores can have corresponding weights (e.g., from zero to one) relative to the overall priority score. Therefore, an administrator (not shown) or other suitable entity can adjust the weights to emphasize the importance of certain interaction signals. For example, an administrator can assign a higher weight to a server-side interaction signal 118b compared to a client-side interaction signal 118a, and vice versa. In some embodiments, the priority ranking controller 120 can be configured to adjust the priority scores in real time. Thus, when a client-side or server-side interaction signal 118a or 118b is received, the priority ranking controller 120 can be configured to recalculate the priority score in response to receiving the client-side or server-side interaction signal 118a or 118b. In other embodiments, the priority ranking controller 120 can be configured to adjust the priority scores periodically or in other suitable ways. For example, over time, the priority ranking controller 120 may periodically reduce certain interaction scores of previously detected client-side or server-side interaction signals 118a and 118b, resulting in a decrease in the overall priority score. The reduced priority score may lead to new and / or different synchronization profiles in the email folder 116 corresponding to the reduced priority score.

[0064] like Figure 1C As shown, the priority ranking controller 120 can also be configured to implement different synchronization rules for each folder 116b in the mirrored mailbox 113b and adjust the implemented synchronization rules based on the corresponding priority scores of these folders 116b. For example, the priority ranking controller 120 can be configured to determine whether the priority score of folder 116b exceeds a threshold. In response to determining that the priority score exceeds the threshold, the priority ranking controller 120 can mark folder 116b as synchronized. Otherwise, the priority ranking controller 120 can mark folder 116b as unsynchronized (for illustrative purposes only). Figure 1CIn another example, in response to determining that the priority score exceeds the threshold, the prioritization controller 120 can flag the folder 116b for synchronization at a higher frequency (e.g., every hour) than the frequency (e.g., once per day) of other folders 116b for which the priority score is below the threshold. In a further example, the prioritization controller 120 can also be configured to order the folders 116b into a priority sequence according to the priority scores and instruct the email server to synchronize the folders 116b in the mirror email mailbox using the priority sequence. In still other examples, the prioritization controller 120 can be configured to exclude or delay synchronization of folders 116b that are experiencing failures or other operational difficulties (e.g., synchronization failures, high processing workloads, etc.).

[0065] Several embodiments of the disclosed technology can improve the user's experience when using the mobile application 107. By prioritizing synchronization of the folders 116b using the client-side and / or server-side interaction signals 118a and 118b, the folders 116b that the user 101 most frequently uses can be synchronized more frequently or more quickly than other folders 116b. As a result, the most frequently used folders 116b can remain up-to-date with little or no synchronization delay. Moreover, by not synchronizing certain folders 116b that the user 101 does not frequently use for long periods of time, the host email server 106a and the proxy email server 106b can conserve storage, computing, network, or other suitable types of resources at the corresponding email servers 106a and 106b. Also, by synchronizing a reduced number of folders 116a and 116b, the synchronization latency for the folders 116b can also be reduced. As a result, the mobile application 107 can appear more responsive than if all of the folders 116b were synchronized. The following describes in more detail how the prioritization controller 120 prioritizes synchronization of the folders 116b. Figure 2 The example components of the prioritization controller 120 are described in more detail below with reference to Figures 3A-3C Adjustment of the synchronization priority is described in more detail below.

[0066] Figure 2 is a schematic diagram illustrating certain hardware / software components of the prioritization controller 120 according to embodiments of the disclosed technology. In Figure 2 In the following description of the example components of the prioritization controller 120, reference is made to the example computing system 100 of FIG. 1. However, the prioritization controller 120 can be implemented in any suitable computing system. Figure 2As in other figures herein, individual software components, objects, classes, modules and routines can be written as source code in C, C++, C#, Java and / or other suitable programming languages (e.g., scripts) for implementation as computer programs, processes or procedures. Components can include, but are not limited to, one or more modules, objects, classes, routines, properties, processes, threads, executables, libraries or other components. Components can be in source code or binary form. Components can include pre-compiled aspects of source code (e.g., classes, properties, processes, routines), compiled binary units (e.g., libraries, executables) or artifacts instantiated and used at runtime (e.g., objects, processes, threads).

[0067] Components within a system can take different forms within the system. As one example, a system including a first component, a second component and a third component can include, but is not limited to, a system having the first component as a property in source code, the second component as a binary compiled library and the third component as a thread created at runtime. Computer programs, processes or procedures can be compiled into objects, intermediaries or machine code and presented for execution by one or more processors of a personal computer, a network server, a laptop computer, a smart phone and / or other suitable computing device.

[0068] Likewise, components can include hardware circuitry. Those of ordinary skill in the art will recognize that hardware can be considered fossilized software, and software can be considered liquefied hardware. As one example only, software instructions in a component can be burned into a programmable logic array circuit, or can be designed into a hardware circuit with appropriate integrated circuits. Likewise, hardware can be emulated by software. Various implementations of source code, intermediate code and / or object code and related data can be stored in computer memory including read-only memory, random access memory, magnetic disk storage media, optical storage media, flash memory devices and / or other suitable computer readable storage media, excluding propagating signals.

[0069] As shown in FIG. 1, the priority ordering controller 120 can include a signal tracker 122, an interaction scorer 124, a priority scorer 126 and a synchronization controller 128 operably coupled to one another. Although specific components of the priority ordering controller 120 are shown in FIG. 1, in other embodiments, additional or alternative components can be included in the priority ordering controller 120. Figure 2 Figure 2 As shown in FIG. 1, the priority ordering controller 120 can include a signal tracker 122, an interaction scorer 124, a priority scorer 126 and a synchronization controller 128 operably coupled to one another. Although specific components of the priority ordering controller 120 are shown in FIG. 1, in other embodiments, additional or alternative components can be included in the priority ordering controller 120. Figure 2 ​The components shown, including the priority ranking controller 120, may further include a network, database, input / output, or other suitable types of components. In a further embodiment, some components of the priority ranking controller 120 may be combined into a single logical entity. For example, the interactive scorer 124 and the priority scorer 126 may be combined into a signaling logical entity. In another example, the interactive scorer 124, the priority scorer 126, and the synchronization controller 128 may be combined into another single logical entity.

[0070] Signal tracker 122 can be configured to track client-side and server-side interaction signals 118a and 118b. Figure 1B In some embodiments, the signal tracker 122 may be configured to periodically poll the mobile application 107. Figure 1B ) and proxy email server 106b to detect the above reference Figures 1A-1C Any example interactions discussed. In other embodiments, signal tracker 122 may be configured to receive client-side and server-side interaction signals 118a and 118b, for example, sent by an interaction agent on mobile application 107 and / or proxy email server 108b. Upon receiving client-side or server-side interaction signals 118a and 118b, signal tracker 122 may optionally store a copy of the received signal in, for example, data storage 108 and provide an indication to interaction scorer 124 for further processing.

[0071] Interaction scorer 124 can be configured to assign interaction scores to interactions indicated in received client-side and server-side interaction signals 118a and 118b. In one embodiment, an administrator (not shown) can provide user input 119 defining the values ​​of the assigned interaction scores. In other embodiments, interaction scorer 124 can be configured to assign interaction scores based on historical values, frequency of interaction types, or other suitable criteria. In at least some examples, interaction scorer 124 can be configured to adjust any previously assigned interaction scores based on time, frequency, relevance, or other suitable criteria. Thus, in some cases, the interaction score assigned to a tracked interaction (e.g., a user selecting an email folder) can continuously decrease over time until it reaches a floor value (e.g., zero), or remain negative without being limited by a floor value. After assigning interaction scores, interaction scorer 124 can forward the assigned interaction scores to priority scorer 126 for further processing.

[0072] The priority scorer 126 can be configured to derive an overall priority score based on the assigned interaction scores. In certain embodiments, at least some of the assigned interaction scores can have respective weights for the overall priority score. Thus, an administrator or other suitable entity can adjust the weights, e.g., as user input 119, to emphasize the importance of certain interaction signals. For example, the administrator can set a higher weight for server-side interaction signals than for client-side interaction signals 118a and 118b, or vice versa. In certain implementations, the priority scorer 126 can be configured to adjust the priority score in real time. In this way, the priority scorer 126 can be configured to recalculate the priority score in response to receiving an interaction signal when the interaction signal is received. In other implementations, the priority scorer 126 can be configured to adjust the priority score periodically or in other suitable manners. After obtaining the priority score, the priority scorer 126 can generate or update a priority record 110 corresponding to the folder 116b in the data store 108.

[0073] The synchronization controller 128 can be configured to perform synchronization control on the folders 116b in the mirrored email box 113b. In certain embodiments, the synchronization controller 128 can be configured to implement different synchronization rules for the folders 116b based on their corresponding priority scores. For example, the synchronization controller 128 can be configured to determine whether the priority score of a folder 116b exceeds a threshold. In response to determining that the priority score exceeds the threshold, the synchronization controller 128 can mark the folder 116b as synchronized. Otherwise, the synchronization controller 128 can mark the folder 116b as unsynchronized. In another example, in response to determining that the priority score exceeds the threshold, the synchronization controller 128 can mark the folder 116b for synchronization at a higher frequency (e.g., every hour) than other folders 116b whose priority scores are below the threshold (e.g., once a day). In a further example, the synchronization controller 128 can also be configured to order the folders 116b into a priority sequence according to the priority scores and instruct the email server to synchronize the folders 116b in the mirrored email box 113b using the priority sequence. In yet another example, the synchronization controller 128 can be configured to exclude or delay synchronization of folders 116b that are experiencing operational difficulties (e.g., synchronization failures, high processing workloads, etc.).

[0074] Figures 3A-3C is a schematic diagram illustrating synchronization control of folders according to embodiments of the disclosed technology. As Figure 3AAs shown, the first folder 116b and the second folder 116b' can have respective priority scores that are greater than a threshold, while the third folder 116b" has a priority score that is lower than the threshold. Thus, in certain implementations, the first folder 116b and the second folder 116b' can be marked as synchronized, while the third folder 116b" is marked as not synchronized. In other implementations, the first folder 116b and the second folder 116b' can be synchronized at a first frequency that is higher than a second frequency at which the third folder 116b' is synchronized. In further implementations, the first folder 116b and the second folder 116b' can be ordered according to respective priority scores to generate a synchronization sequence according to which the first folder 116b and the second folder 116b' can be synchronized.

[0075] As shown, in further implementations, the priority scores of the first folder 116b and the second folder 116b' are higher than a first threshold, while the priority score of the third folder 116b" is lower than the first threshold. As such, the first folder 116b and the second folder 116b' can be marked as synchronized or synchronized at a first frequency, while the third folder 116b" is marked as not synchronized or synchronized at a second frequency that is lower than the first frequency. Figure 3B As shown, in further implementations, the priority scores of the first folder 116b and the second folder 116b' are higher than a first threshold, while the priority score of the third folder 116b" is lower than the first threshold. As such, the first folder 116b and the second folder 116b' can be marked as synchronized or synchronized at a first frequency, while the third folder 116b" is marked as not synchronized or synchronized at a second frequency that is lower than the first frequency. Figure 3B As shown, upon determining that the first folder 116b has a priority score that is higher than a second threshold, the priority ordering controller 120( Figure 1A ) can mark the first folder 116b as synchronized at a higher frequency than the frequency of the second folder 116b'.

[0076] As shown, upon receiving another client-side or server-side interaction signal 118a or 118b( Figure 3C ) corresponding to the third folder 116b", the priority ordering controller 120 can recalculate the priority score of the third folder 116b". Upon determining that the new priority score is higher than a threshold, the priority ordering controller 120 can mark the third folder 116b" as synchronized, synchronized at a first frequency, or order the folders 116b, 116b', and 116b" to place synchronization of the third folder 116b" before the second folder 116b'. Figure 1B

[0077] Figures 4A-4C is a flow diagram illustrating an example process for synchronization control of folders according to an embodiment of the disclosed technology. Although aspects of the process are described below in the context of the computing system 100 in Figures 1A-1C , in other embodiments, the process can be implemented in other computing systems having additional and / or different components.

[0078] As shown, in further implementations, the priority scores of the first folder 116b and the second folder 116b' are higher than a first threshold, while the priority score of the third folder 116b" is lower than the first threshold. As such, the first folder 116b and the second folder 116b' can be marked as synchronized or synchronized at a first frequency, while the third folder 116b" is marked as not synchronized or synchronized at a second frequency that is lower than the first frequency. Figure 4A ​As shown, process 200 may include receiving interaction signals in stage 202. In some embodiments, the interaction signals may include client-side interaction signals and / or server-side interaction signals, such as those referenced above. Figures 1A-1C Those described above. In other embodiments, the interaction signals may also include other suitable types of signals. Then, process 200 may include updating the priority score of the folder corresponding to the received interaction signal in stage 204. See below for reference. Figure 4B A more detailed example of updating priority scores is provided. Then, process 200 may include adjusting the synchronization of folders in the email account in stage 206. See below for reference. Figure 4B A more detailed example of adjusting folder synchronization is provided.

[0079] like Figure 4B As shown, the operation of updating the priority score may include, in stage 210, assigning an interaction score to the folder based on the interaction indicated in the received interaction signal. Then, the operation may include, in stage 212, calculating or recalculating the priority score based on the assigned interaction score. (See above reference...) Figures 1A-1C Various examples of assigning interaction scores and calculating priority scores are described.

[0080] like Figure 4C As shown, an example operation for adjusting folder synchronization may include a determination phase 214 to determine whether the calculated priority score exceeds a threshold. In response to determining that the calculated priority score exceeds the threshold, the operation may proceed to phase 216 to increase the synchronization priority. Otherwise, the operation may proceed to phase 216 to decrease the synchronization priority. (See above for reference.) Figures 1A-1C An example technique for increasing / decreasing synchronization priority based on priority scores is described.

[0081] Figure 5 This refers to a computing device 300 that is applicable to certain components of the computing system 100 in Figure 1. For example, the computing device 300 may be applicable to a host email server 106a or a proxy email server 106b or... Figure 1A The client device 102. In a very basic configuration 302, the computing device 300 may include one or more processors 304 and system memory 306. A memory bus 308 may be used for communication between the processors 304 and the system memory 306.

[0082] The processor 304 can be of any type including but not limited to a microprocessor (μP), a microcontroller (μC), a digital signal processor (DSP), or any combination thereof. The processor 304 can include multiple levels of cache, such as a level one cache 310 and a level two cache 312, a processor core 314, and registers 316. The example processor core 314 can include an arithmetic logic unit (ALU), a floating point unit (FPU), a digital signal processing core (DSP Core), or any combination thereof. An example memory controller 318 can also be used with the processor 304, or in some implementations, the memory controller 318 can be an internal part of the processor 304.

[0083] The system memory 306 can be of any type, including but not limited to volatile memory (such as RAM), non-volatile memory (such as ROM, flash memory, etc.), or any combination thereof. The system memory 306 can include an operating system 320, one or more applications 322, and program data 324. The basic configuration 302 is illustrated by those components within the internal dashed line.

[0084] The computing device 300 can have additional features or functionality, and additional interfaces to facilitate communications between the basic configuration 302 and any other devices and interfaces. For example, a bus / interface controller 330 can be used to facilitate communications between the basic configuration 302 and one or more data storage devices 332 via a storage interface bus 334. The data storage devices 332 can be removable storage devices 336, non-removable storage devices 338, or a combination thereof. Examples of removable storage and non-removable storage devices include magnetic disks, optical disks such as compact disks (CDs) or digital versatile disks (DVDs), solid state drives (SSDs), and tape drives, to name a few. Example computer storage media can include volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, program modules, or other data. The term computer readable storage media or computer readable storage device does not include propagating signals and communication media.

[0085] System memory 306, removable storage devices 336 and non-removable storage devices 338 are examples of computer readable storage media. Computer readable storage media include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by computing device 300. Any such computer readable storage media can be a part of computing device 300. The term computer readable storage medium does not include propagated signals and communication media.

[0086] Computing device 300 can also include interface bus 340 for facilitating communication from various interface devices (e.g., output devices 342, peripheral interfaces 344, and communication devices 346) to basic configuration 302 via bus / interface controller 330. Example output devices 342 include graphic processing unit 348 and audio processing unit 350, which can be configured to communicate via one or more A / V ports 352 to various external devices such as a display or speakers. Example peripheral interfaces 344 include a serial interface controller 354 or a parallel interface controller 356, which can be configured to communicate with external devices such as input devices (e.g., keyboard, mouse, pen, voice input device, touch input device, etc.) or other peripheral devices (e.g., printer, scanner, etc.) via one or more I / O ports 358. An example communication device 346 includes a network controller 360, which can be arranged to facilitate communications with one or more other computing devices 362 over a network communication link.

[0087] The network communication link can be one example of a communication media. Communication media can typically be embodied by computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier wave or other transport mechanism, and can include any information delivery media. A "modulated data signal" can be a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media can include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, radio frequency (RF), microwave, infrared (IR) and other wireless media. The term computer readable media as used herein can include both storage media and communication media.

[0088] The computing device 300 can be implemented as a portion of a small, portable (or mobile) electronic device such as a cell phone, a personal data assistant (PDA), a personal media player device, a wireless web-watch device, a personal headset device, an application-specific device, or a hybrid device that includes any of the above functions. The computing device 300 can also be implemented as a personal computer including both laptop computer and non-laptop computer configurations.

[0089] From the foregoing, it will be appreciated that specific embodiments of the disclosure have been described herein for purposes of illustration, but that various modifications can be made without deviating from the disclosure. Further, where indicated, constituent elements of one embodiment can be combined with elements of other embodiments. Accordingly, the technology is not limited except as by the appended claims.

Claims

1. A method of synchronizing control of folders containing electronic mail in a first electronic mailbox hosted by a first server and folders in a second electronic mailbox hosted on a second server in a computing system, the first electronic mailbox being a copy of the second electronic mailbox, wherein, The method comprises: receiving data indicative of a signal, the signal being indicative of: a user interaction with an email in a first folder in the first email account or having directly interacted with the first folder; and a failure to perform a synchronization operation between a second folder in the first email account at the first server and a corresponding folder in the second email account at the second server; and upon receiving the signal: calculating a priority score corresponding to each of the first folder and the second folder based on the interaction and the failure indicated in the received signal; comparing the calculated priority scores of the first folder and the second folder; and based on the comparison made, synchronizing the first folder in the first email account hosted at the first server with the other corresponding folder in the second email account hosted at the second server according to a first synchronization rule and synchronizing the second folder at the first email account with the corresponding folder at the second email account according to a second synchronization rule different from the first synchronization rule.

2. The method of claim 1, wherein, The failure to perform the synchronization operation comprises one or more of: a failure to synchronize one of the emails in the second folder in the first email account with the corresponding folder in the second email account; receiving by the first server a retry response from the second server upon attempting to synchronize the second folder in the first email account with the corresponding folder in the second email account; or an indication that the synchronization of the second folder in the first email account resulted in a number of emails exceeding a threshold.

3. The method of claim 1, further comprising: receiving additional data indicative of a signal, the signal being indicative of the user having explicitly requested to synchronize the first folder or the second folder; and wherein the method further comprises: based on the received signal indicative of the user having explicitly requested to synchronize the first folder or the second folder, recalculating the priority score corresponding to each of the first folder and the second folder; and performing another comparison of the recalculated priority scores of the first folder and the second folder.

4. The method of claim 1, further comprising: receiving additional data indicative of a signal, the signal being indicative of a processing workload of the first folder or the second folder at the first server exceeding a threshold; and wherein the method further comprises: based on the received signal indicative of the processing workload of the first folder or the second folder at the first server exceeding the threshold, recalculating the priority score corresponding to each of the first folder and the second folder; and performing another comparison of the recalculated priority scores of the first folder and the second folder.

5. The method of claim 1, wherein, computing a priority score corresponding to each of the first folder and the second folder based on the interactions and the failures indicated in the received signals includes: assigning a first score to the interactions of the first folder and a second score to the failures corresponding to the second folder; and deriving a first priority score by summing the assigned first score with other scores assigned to additional interactions or failures corresponding to the first folder; and deriving a second priority score by summing the assigned second score with further scores assigned to additional interactions or failures corresponding to the second folder.

6. The method of claim 1, further comprising: decreasing the computed priority scores according to elapsed time after computing the priority scores corresponding to each of the first folder and the second folder.

7. The method of claim 1, wherein: the first synchronization rule indicates that the first folder is to be synchronized with another corresponding folder at the second electronic mailbox; and the second synchronization rule indicates that the second folder is not to be synchronized with a corresponding folder at the second electronic mailbox.

8. The method of claim 1, further comprising: the first synchronization rule indicates that the first folder is to be synchronized with another corresponding folder at the second electronic mailbox at a first frequency; and the second synchronization rule indicates that the second folder is to be synchronized with a corresponding folder at the second electronic mailbox at a second frequency lower than the first frequency.

9. The method of claim 1, further comprising: ordering the first folder and the second folder into a synchronization sequence according to the priority scores; and the first synchronization rule and the second synchronization rule indicate that the first folder is to be synchronized with another corresponding folder at the second electronic mailbox before the second folder is synchronized with a corresponding folder at the second electronic mailbox.

10. A computing device for processing electronic messages, the computing device comprising: a processor; a memory containing instructions executable by the processor to cause the computing device to perform a process according to any one of claims 1 to 9. ​ ​

Citation Information

Patent Citations

  • Synchronizing email messages between an external and / or local email server and / or a wireless device

    CN101711386A

  • Mail synchronous system and synchronous method thereof

    CN102904795A