Nearly all applications running on OS X make use of file caches. These caches are small files which store precomputed or prefetched information needed very often. By “remembering” and reusing previously requested results, applications can be accelerated significantly. They just access the already known data in their cache files, and don’t need to recompute or to refetch the information. Examples for data stored in cache files are the last few Internet web pages an application has accessed, photos of your chat buddies you typically communicate with, or the data to quickly display the image of your Desktop background, already decompressed, scaled and optimized for the screen you are using.
Many applications are actually not “aware” that they are using cache files because OS X may arrange the caches automatically for them when the programs are requesting data via the operating system, in cases where it is already known in advance that caching will speed up similar requests later. For example, each program supporting a “check for updates” feature will usually contact a specific web server to fetch some status information over the Internet. If this is done using standard system procedures, OS X will automatically create a personal web cache for this application used to accelerate access to its update server. The application does not really “know” this, but it will receive the requested information via OS X faster than usual.
Caches are responsible for very significant speed gains, but problems can arise if a cache becomes corrupt for some reason. In this situation the cache contains wrong, outdated or otherwise unusable information which can cause very strange effects in all applications using the affected cache. Under normal circumstances, OS X or the affected applications should detect that there is something wrong with the cache, so they can throw away the cached information and automatically rebuild it when new data is requested. However, this detection might not always work in practice, especially after a network connection was interrupted, after a program has crashed unexpectedly, or when your computer had problems with its clock, so it could no longer track correctly which information is up-to-date and which is outdated.
Due to the hidden nature of caches, problems resulting from corrupt cache contents are very difficult to find. The user only sees that “sometimes something is very wrong with some applications”. If you experience a strange problem with an application, this could be the result of a corrupt cache, but you cannot be sure. A simple but harsh way to find out is to remove all cache files, then to restart the affected programs, and checking whether this has successfully fixed the problem. If yes, this will be okay, but if no, you will have lost all valuable information which had been kept in the caches. It may take hours, days, or weeks until your system has recovered from this situation by rebuilding the caches with recomputed and refetched information. During this recovery period, the computer will run significantly slower than usual.
Although cache cleaning can be an effective maintenance step to resolve certain problems, it has harmful side effects as we have seen. For this reason, TinkerTool System introduces a much more intelligent approach: You can temporarily deactivate caches and take this step back when you see that cache removal had no positive effect. This new technique effectively avoids the problem that cache cleaning often makes the original problem even worse.
Some Internet sites recommend to use cache cleaning as a regular or even scheduled maintenance step. As we have outlined in this section, this is one of the worst advices you can get. Cache cleaning always has the negative side effect of making your computer slower than normal. It should only be used as a last resort when troubleshooting a well-defined problem, knowing exactly that the positive effects will indeed outweigh the negative effects of losing cache data.
Smart cache deactivation for all permanent cache types is possible with Macintosh operating systems up to OS X Yosemite 10.10.5. Unfortunately, OS X El Capitan 10.11 and later are not capable of supporting this for all cache types. These systems have technical design issues that prevent this from working correctly under all conditions. For this reason, TinkerTool System has to show different user interfaces depending on the operating system you are using.
With OS X Yosemite, TinkerTool System offers smart cache deactivation for all application-related cache files. The caches are divided into the following subcategories which can be processed separately:
In professional environments, the private home folders of users are usually stored on a central file server, not on the individual hard disks of local computers. Because network access is typically a bit or even significantly slower than access to a local disk, OS X keeps all caches where fast access is important in a separate area on the system disk. TinkerTool System refers to them as high-speed caches. They are used for Internet browsing or for temporarily storing thumbnail images, for example.
With OS X El Capitan, TinkerTool System offers smart cache deactivation for the following two categories:
The two other categories can only be cleaned:
Smart deactivation of caches as a troubleshooting procedure is done using the following steps:
Define for yourself what exact problem —possibly caused by a corrupt cache— you like to fix. Find a program where you can reproduce this exact problem and test if only one user account or all user accounts of the computer are affected by it.
Start TinkerTool System and open the panes Caches. On OS X Yosemite, go to Application-Related Caches, on OS X El Capitan, go to Unprotected Caches. Select the cache sets of the user, computer, or operating system which might be causing the problem. Then press the button Deactivate selected caches.
TinkerTool System will ask you to quit all running applications. You can also have TinkerTool System do this automatically for you. Depending on the cache sets you have selected, the program will then perform a logout or restart.
Log in to the system again (with the same user account used in the previous steps). TinkerTool System will start automatically, giving you the option either to restore the caches or to discard them. Keep the application running.
Test if the problem you defined during the first step has indeed be resolved by deactivation of the caches. If yes, you might accept the harmful effects of losing the cache data. In this case, press the button Discard previous caches. If no (the problem was not fixed and can still be reproduced as before), press the button Restore previous caches. In the latter case, TinkerTool System will again perform a log out or restart, respectively, and all selected caches will be returned to their previous states. You won’t have negative side effects.
TinkerTool System tries to guide you automatically through the smart deactivation process. A short summary of the instructions, and a large green arrow marker are used to visualize in which state the computer is in. Additional status messages and notes are given in bold face in the lower left corner of the window.
You should avoid to postpone the decision to either restore or discard the caches for too long. Please make the decision as fast as possible.
If you had activated the option Caches of the operating system and you were forced to discard these caches, OS X will not only run slower but will also record a very high number of warning messages in the system log, indicating that the so called XPC Helper Cache is no longer active. Because this particular cache might not be rebuilt until the next operating system update, it is strongly recommended to trigger a manual update of this cache. For more information, please see the paragraph XPC Cache at the end of this section.
To clean a cache category completely, deleting all its data, perform the following steps:
Remember that cache cleaning should be avoided whenever possible. It will cause your system to run significantly slower for some time. Only use cache cleaning as a last resort, if you know for sure that the contents of a specific cache category is causing a technical problem.
OS X uses a specialized background service for font management, the font registration server. This background program is responsible for finding out which fonts are available on your system, it keeps track which user has activated which fonts, which of the more than 200,000 character glyphs supported by OS X are available in which of the fonts, it manages auto-activation of fonts, and performs many other font-related tasks.
Your computer may contain dozens of user accounts, several hundred fonts and millions of different characters. To bring them all together, sophisticated databases of glyphs, characters, fonts, and individual user settings have to be maintained. This background database is made up of the so-called font caches. The operating system as a whole and each user account keep their own font caches.
In case the font registration server experiences a technical problem, the contents of the font caches can become corrupt. This will cause strange effects when working with fonts, e.g. delays after login, unexpected errors in the Font Book application, the spontaneous activation of fonts which should be inactive, or —in the worst case— a complete failure to display the correct characters for certain fonts which basically results in “garbled text”.
If you are experiencing such a problem, TinkerTool System can assist you in cleaning the font caches. The clean operation can either be performed for the current user account or for the account and the whole operating system together.
When cleaning the caches of the font server, a logout will be necessary. OS X will automatically rebuild the font caches during the next login. This operation should complete within a few seconds or minutes. TinkerTool System automatically guides you through all necessary steps.
Perform the following steps to clean the font caches:
OS X can be operated on a large number of different Macintosh systems. Because each computer model contains different devices, like network cards, graphics chips, or disk interfaces, the part of the operating system that controls these devices is structured into small modules, called drivers. Each type of hardware device corresponds with a specific OS X driver that controls this device, or more exact, all devices of this kind. OS X only needs to load the drivers which correspond with the devices found inside a particular computer. This way the OS does not need to load all the software components used to control all Macintosh systems ever built. Drivers are organized as kernel extensions, a more general term used for the small software modules that add specific functionality to the inner core of the operating system.
OS X keeps several internal caches used to optimize the startup phase of the operating system. Among other data, these caches hold the information which kernel extensions are needed to operate your particular computer, and which not. This way, the system knows in advance which drivers it needs and does not need to perform a complete search which drivers and which devices are available, and how these two sets must be matched with each other. The use of caches significantly shortens the startup process.
Under specific circumstances, the caches could become corrupt or might contain outdated information. This could happen for example if a third-party kernel extension does not work or was not installed correctly, or if you added or removed devices from your computer and due to some technical problem, OS X lost track which driver must be activated or deactivated.
TinkerTool System can assist you in cleaning these startup driver caches. OS X will automatically rebuild the caches after some seconds. No restart is required. To clean these caches, perform the following steps:
Modern versions of OS X and applications developed for the OS X platform make extensive use of an Apple technology known as XPC (Cross Process Communication). XPC offers functions that running processes can use to communicate with each other via secure and reliable channels. Programs need XPC particularly when they have been split into different parts internally, e.g. to distribute work onto multiple processor cores, or for privilege separation (see also the notes on the security architecture of TinkerTool System).
Many applications and parts of OS X come with hidden internal helper programs, known as XPC services, the separate helper components that talk to each other via XPC. To determine which application offers which service, and to locate all the different services and their names needs significant time, so OS X uses a dedicated cache, the XPC Helper Cache, to store this information.
After you have used TinkerTool System’s feature to deactivate or even to discard the Caches of the operating system, the inter-process communication can run slower. In addition, OS X may record thousands of error messages in its internal system log indicating that the XPC helper cache has been lost, which also slows down the system and wastes storage space. To quickly recover from such a situation, you can use TinkerTool System to let OS X rebuild the XPC cache. Perform the following steps: