A crawl frontier is a data structure used for storage of URLs eligible for crawling and supporting such operations as adding URLs and selecting for crawl. Sometimes it can be seen as a priority queue. 
A crawl frontier is one of the components that make up the architecture of a web crawler. The crawl frontier contains the logic and policies that a crawler follows when visiting websites. This activity is known as crawling.
The policies can include such things as what pages should be visited next, the priorities for each page to be searched, and how often the page is to be visited. The efficiency of the crawl frontier is especially important since one of the characteristics of the Web that make web crawling a challenge; is that it contains such a large volume of data and it is constantly changing.
The initial list of URLs contained in the crawler frontier are known as seeds. The web crawler will constantly ask the frontier what pages to visit. As the crawler visits each of those pages, it will inform the frontier with the response of each page. The crawler will also update the crawler frontier with any new hyperlinks contained in those pages it has visited. These hyperlinks are added to the frontier and the crawler will visit new web pages based on the policies of the frontier. This process continues recursively until all URLs in the crawl frontier are visited.
The policies used to determine what pages to visit are commonly based on a score. This score is typically computed from a number of different attributes. Such as the freshness of a page, the time the page was updated and the relevance of the content with respect to certain terms.
The Frontier Manager is the component that the web crawler will use to communicate with the crawl frontier. The frontier API can also be used to communicate with the crawl frontier.
The frontier middlewares sit between the manager and the backend. The purpose of middlewares is to manage the communication between frontier and the backend. Middlewares are an ideal way to add or extend additional functionality simply by plugging additional code.
The backend component contains all the logic and policies that are used in a search. The function of the backend is to identify the pages to be crawled.