In the URL, the content after the hash mark (#) is not sent to the server, but is displayed in JavaScript on the page. Thus, using # basically allows you to process the page "http://twitter.com/" (for example, by opening background connections to load additional data). It also means that content that does not change from one page to another (think about the general layout of the page) can be cached and served right away (since the effective URL is still โhttp://twitter.com/โ) whereas to place it on the path to the URL (without a hash), to obtain this layout, a complete separate selection will be required.
source share