Proxy Auto-Config files, universally abbreviated to PAC files, and the browser support for them were first created by Netscape sometime between 1995 and 1996 to provide greater flexibility for forwarding web browser traffic through an upstream proxy server. 

The capabilities of the era powered a user or IT administrator to configure a web browser to forward traffic through a proxy, explicitly defining a single proxy host, port, and a list of explicit exceptions or bypasses. While this was quite useful, such a configuration did not and still does not support failover between proxies and lacked any kind of intelligent traffic management, e.g. if a bypass contains an IP address of a server and a user entered a Fully-Qualified Domain Name (FQDN) that pointed to said IP address, there would be no match and the traffic would still go through the proxy. 

Rather than defining rules for upstream proxy forwarding directly within the browser itself, Netscape chose the standards-based JavaScript programming language as a foundation and built a set of flexible JavaScript-based functions that could be used in a file, served typically by a web server (though could be served from the local filesystem), that would define a set of rules for a web browser to follow for upstream proxy forwarding of web traffic. This ensured that web browser traffic could be controlled from a single centrally-hosted file, without having to push changes to every user device. 

Netscape implemented functions that provided the ability to build rules around the destination FQDN, URL, and IP address being accessed, as well as supporting functions for resolving an FQDN to an IP address, determining if an IP address falls with a specific subnet, as well as less-commonly used capabilities that supported rules based on date and time and device IP address. In addition, multiple proxy servers could be configured for redundancy and failover.

With these capabilities, a user or administrator could easily forward traffic to an upstream proxy, automatically bypass local network traffic, and implement failover between proxy servers.