Javascript 使用时避免额外的页面加载!AJAX导航

Javascript 使用时避免额外的页面加载!AJAX导航,javascript,ajax,web-crawler,hashbang,Javascript,Ajax,Web Crawler,Hashbang,我正在写一个网站,它基本上是一系列连续的页面。非限定URL指向最后一页,限定URL指向特定页。因此,我们: ->最后一页 ->第3页 我有以下要求: 我希望页面通过AJAX动态加载。用户可以在短时间内连续浏览大量页面,我希望避免重新加载和重画,并为相邻页面添加某种JavaScript预取,以加快导航速度 我希望这些页面可以设置为书签 我希望网页是可抓取的 我希望它能为大多数用户工作。 因此,我提出了以下方案: 归档页面的标准规范URL为。无论是否安装了JavaScript,通过此URL访问的页面

我正在写一个网站,它基本上是一系列连续的页面。非限定URL指向最后一页,限定URL指向特定页。因此,我们:

->最后一页 ->第3页 我有以下要求:

我希望页面通过AJAX动态加载。用户可以在短时间内连续浏览大量页面,我希望避免重新加载和重画,并为相邻页面添加某种JavaScript预取,以加快导航速度 我希望这些页面可以设置为书签 我希望网页是可抓取的 我希望它能为大多数用户工作。 因此,我提出了以下方案:

归档页面的标准规范URL为。无论是否安装了JavaScript,通过此URL访问的页面都是完全可读的。如果JavaScript不可用,则指向其他页面的链接是正常的链接,所有内容都以传统的方式工作。这也适用于爬虫。 如果可以使用JavaScript、历史操作pushState和replaceState的浏览器访问了这样的URL和URL,那么当访问到其他页面的链接时,将使用AJAX动态更新内容。浏览器历史记录随后由JavaScript更新。 如果浏览器中有JavaScript可用,但历史操作不可用,则访问该站点,用户在访问时将使用JavaScript重定向到。访问主页面时不会发生重定向。然后使用哈希更改事件完成导航。 如果爬虫试图通过外部链接访问,它将实际请求。对于这样的URL,Web服务器将发出一个永久重定向到,然后将正确地对其进行爬网。 这里看起来一切正常,但接下来,让我们看看所有可能的情况:

1.没有JavaScript浏览器 1.1. 没有JavaScript浏览器访问根URL 一切正常

1.2. 没有JavaScript浏览器访问规范URL 一切正常

1.3. 没有JavaScript浏览器访问shebang URL

默默地失败!用户获得的是最后一页,而不是第3页

2.爬虫 2.1. 爬虫访问根URL 一切正常

2.2. 爬虫访问规范URL 一切正常

2.3. 爬虫访问shebang URL 爬虫程序实际请求,并被发送到规范URL的重定向。这是对web服务器的一个附加请求,但这没什么大不了的,不会从数据库中提取额外的页面并返回给用户

3.旧浏览器 3.1. 旧浏览器访问根URL 指向其他页面的链接将替换为其shebang版本。然后通过AJAX顺利完成导航

3.2. 旧浏览器访问规范URL 向用户发出指向shebang URL的重定向。问题:服务器将实际获取和服务页面3次


为用户工作的Shebang URL是一种矛盾修饰法。对我来说,无论如何。最好的方法是:不要避免重新加载页面。在现代浏览器中,页面加载速度很快,等待的时间不会改变任何事情。如果您使用语义标记,页面的加载速度会非常快,以至于您不会注意到任何东西。AJAX并不是万能的解决方案。Shebang URL当然不是一个完美的解决方案,但对于不支持历史操作的浏览器,还有其他选择吗?当然,我可以认为没有历史操作支持的所有浏览器都在非JavaScript类别中,但是,Ajax导航对于我的用户基数很大一部分是禁用的。我同意Ajax不是一切的解决方案。但在等待的一秒钟并不能改变任何事情上,双方存在着强烈的分歧。性能是一个特点!顺便说一句,这是一个类似于图库的应用程序,用户可以在一次会话中浏览大量页面。大量的重新加载会很烦人。