All Internet hosts, including your computer when it is connected to the Internet, use a DNS server. Every time you go to a website, you need to look up the site's IP address using the domain name of the website. Your request for this lookup is eventually passed to a DNS server somewhere.
However, your request is one of thousands, even millions of requests being made at any one time across the Internet. The DNS lookup process requires your local DNS server to ask others servers if it is not authoritative for the domain you are trying to reach, it should ask other servers to get an answer. Your local server could get quite busy performing these lookup requests and this could slow down its performance if it has to perform a lookup for every request.
To combat this, the answers that a DNS server gets from another can be added to its own internal database and retained for a period of time equal to the time to live - (TTL) value set on the DNS record requested.
Storing these responses is called caching and allows a DNS server to respond quickly to multiple queries for the same domain or host. If you are on a website and want to retrieve the next page on the site, the local DNS server does not have to look up the host again (provided the time to live value has not expired and caused the local DNS server to delete the information). This is why it takes longer to contact a website the first time, but subsequent requests for pages on the same site are faster. These are know as caching DNS servers. The DNS caches will also cache that records do not exist.
Almost all Internet Service Providers (ISPs) operate some kind of caching DNS server.
Although DNS caching speeds up resolution by storing recent answers, and short-circuiting the normal resolution process, there is a down side. Because DNS servers cache answers and don't delete these answers until the time to live expires, it can take hours or days for the entire Internet to recognise changes to DNS information for your domain name.