在缓存方面,Pushstate是否优于Hashbangs?

时间:2014-12-08 11:15:05

标签: ajax html5 browser-cache pushstate hashbang

与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/#!page1eg.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?

1 个答案:

答案 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