加载页面链接速度更快

时间:2017-08-10 14:33:34

标签: javascript jquery

我在浏览这个网站https://amaioswim.com/ 我注意到当点击左侧的导航时,网址会立即改变。

他们还使用“淡出”和“淡入”窗帘,使页面之间的过渡无缝。

我想知道你会采用什么样的方法来实现这一目标。

我知道JS你可以更改网址,但只有主题标签网址...对吗? 或者是因为他们有一个超级延迟的超快速服务器?

你认为他们在同一个dvi容器中加载ajax-ly吗?

由于

3 个答案:

答案 0 :(得分:2)

这与历史API没什么关系。 (他们使用该API来更新显示的URL,但这是网站工作方式的一个小细节;它本身不会产生这种行为。)

此特定网站正在运行客户端框架。 (我在缩小的代码中没有看到任何关于哪一个的明显线索。)

站点内的链接作为AJAX请求处理。他们使用相同的端点进行新页面加载和XHR调用,并检查X-Requested-With标头以确定是否发送完整的服务器呈现的HTML文件(包括完整站点的框架)或只是该特定页面的内容(将在已加载的站点中嵌入客户端。)

作为证据:这将返回完整网站(如用户首次访问该网址时):

curl 'https://amaioswim.com/about'

这只返回“about”内容(如用户在加载网站后点击“about”链接):

curl 'https://amaioswim.com/about' -H 'X-Requested-With: XMLHttpRequest'

(您还可以在浏览网站时通过浏览器控制台中的“网络”面板查看此内容。)

加载单个页面的内容当然比加载整个页面HTML(及其CSS和JS)快得多,并允许您在AJAX调用过程中添加交叉渐变和动画等光泽效果

答案 1 :(得分:1)

几年以来,您可以使用html5历史记录api:

https://css-tricks.com/using-the-html5-history-api/

它将允许您非常自由地操纵URL。 例如,当您滚动到新部分时,您可以将该部分放在浏览器URL的末尾。

答案 2 :(得分:1)

这是历史API的实际应用。查找更多详情here

尝试使用pushStatereplaceState方法,这样可以解决此问题。要更准确地控制这些内容,您可能还需要查看popState event