与hasbangs相比,HTML5 Pushstate有几个优点,事实上,Google现在是encouraging the use of Pushstate。公开讨论的唯一Pushstate缺点是非现代浏览器不支持它。但是,对我来说,似乎Pushstate在缓存方面也是不利的。我可能错了,因此这个问题。
在缓存页面方面,Pushstate是否优于Hashbangs?
这是一种似乎Pushstate在缓存方面不好的情况。
Pushsate
Bob导航到eg.com/page1
,整个页面已下载,渲染和缓存。
Bob单击按钮,下载并缓存eg.com/json/page2
。
浏览器处理JSON并重新呈现Bob页面的部分内容。
Pushstate将显示的浏览器地址更改为eg.com/page2
。
Bob关闭浏览器,然后重新打开并直接访问
eg.com/pushstate2
。整个页面已下载,渲染和缓存。*
* - 尽管理论上它已经在eg.com/json/page2
Hashbangs
Alice导航到eg.com/#!page1
,eg.com/index.html
已下载并缓存。
eg.com/json/page1
已下载并缓存。
浏览器处理JSON并呈现Alice的页面。
Alice点击一个按钮,eg.com/json/page2
已下载并缓存,显示的浏览器地址已更改为eg.com/#!page2
浏览器处理JSON并呈现Alice的页面。
Alice关闭浏览器,然后重新打开它并直接访问eg.com/#!page2
。 NOTHING已下载,所有内容均从缓存中加载,与Pushstate不同。
摘要的
我有许多类似的案例,问题是这是否确实有效,我可能会遗漏一些导致我错误结论的事情。在缓存页面时,Pushstate是否优于Hashbangs?
答案 0 :(得分:0)
我认为pushstate是劣等的,但如果你正确地建立SPA页面,差异不应该是显着的:
假设您使用的是最新的框架之一,您的index.html
页面应该相对较小,并且有一些<script>
标记(webpack,systemjs等框架)。
使用这些标记引用的js文件会正常缓存,因此两种方法之间的唯一区别是为每个pushstate url获取index.html
,而不是在hashbang模式下获取一次。
我从以下问题得到了这个想法: https://webmasters.stackexchange.com/questions/65694/is-this-way-of-using-pushstate-seo-friendly