Many generic web servers also support one or more server interfaces used to generate dynamic content by web applications. Implementations used may vary from server-side scripting (i.e. scripting languages) to external application programs. This means that the behavior of the web application can be defined in separate files (scripts or programs), while the actual server software remains unchanged. Usually, this function is used to generate HTML documents dynamically or other type of contents ("on-the-fly") as opposed to returning static documents. The former is primarily used for retrieving or modifying information from databases. The latter is typically much faster and more easily cached. For performance reasons, usually websites with dynamic contents also have static contents whenever possible.