When building a house the foundations are fundamental to it's structural integrity. Without good strong foundations the house is weak and liable to fall over at any moment.
Here are some rather sweeping statements:
I did warn you they were rather sweeping.
history.pushState() tells us otherwise. You can read about it here.
Basically it makes it possible for what we now call single page web apps to exist across multiple pages while still providing nice page transitions (no page refresh).
history.pushState() - A Fallback
History.pushState is all well and good but it's only available in WebKit and Firefox(4) at the moment. Maybe that is why people are seeing hashbangs as an alternative solution. Personally I would rather fallback to a fragment identifier (#) only in situations where history.pushState is not available.
So when pushState is not available:
might redirect to :
which would then go and fetch the contents from
If a page is loaded with the fragment identifier in a browser that supports pushState the hash should be removed and pushState used.
We have for a long time been able to obfuscate our data with technologies like Flash, I for one have avoided these technologies because I believe that when we publish data properly on the web it becomes more re-usable, findable, accessible and actually has far greater potential.