我应该用AJAX加载整个html页面吗?

我应该用AJAX加载整个html页面吗?,ajax,google-analytics,Ajax,Google Analytics,我的设计师认为在不同的页面之间创建一个过渡是个好主意。基本上只有内容部分将重新加载(页眉和页脚保持不变),只有内容div应该具有过渡效果(淡入淡出或某种形式)。创造这种效果并不是真正的问题,让谷歌(分析)高兴是 我不喜欢的解决方案和原因 用ajax只加载content div:google不会看到任何内容,这意味着永远也找不到该站点,或者只加载ajax检索到的部分,这些部分根本不是完整的页面 显示过渡效果,然后将用户“重定向”到指定页面(捕获元素的单击事件):效果与链接到另一个页面几乎相同,例

我的设计师认为在不同的页面之间创建一个过渡是个好主意。基本上只有内容部分将重新加载(页眉和页脚保持不变),只有内容div应该具有过渡效果(淡入淡出或某种形式)。创造这种效果并不是真正的问题,让谷歌(分析)高兴是

我不喜欢的解决方案和原因

  • 用ajax只加载content div:google不会看到任何内容,这意味着永远也找不到该站点,或者只加载ajax检索到的部分,这些部分根本不是完整的页面
  • 显示过渡效果,然后将用户“重定向”到指定页面(捕获元素的单击事件):效果与链接到另一个页面几乎相同,例如,用户仍将看到页面被重新加载
我想到了一个可能的解决办法: 当访问者单击链接时,捕获事件,用ajax加载目标,同时显示过渡效果,然后用ajax请求获取的内容重写整个文档

至少这会起作用,并且有一些好处;页面重新加载看起来是无缝的,无论你的互联网连接有多慢,谷歌都不会介意,因为ajax内容本身就是一个完整的html页面,可以按原样进行爬网,即使是非javascript浏览器(手机等)也不会介意,他们只是重新加载页面

我对实现这种方法犹豫不决,因为我会使用ajax重新加载整个页面。我想知道这是否是ajax的本意,它是否会减慢速度。最重要的是,是否有更好的解决方案,例如,我的第一个“坏”解决方案,但略有不同,所以谷歌会喜欢它(也分析)

谢谢你的想法

  • 您可以使用AJAX和SEO:

  • 我想你可以从Gmail的设计中学到一些东西


  • 这可能有点奇怪,但我有一个想法

    使用“ifarme”GET参数准备要加载的页面

    • 当出现“iframe”时,使用一些javascript加载它以触发父级show\u iframe\u content()
    • 当没有“iframe”时,只需加载页面,并使用名为“preload”的隐藏iframe元素
    您的目标是确保在“预加载程序”中使用附加的“iframe”get参数打开每个链接,并且当iframe加载完成时,它调用show_iframe_content()将内容复制到父页面

    如下所示:单击链接->过渡到加载阶段->iframe loaded->显示iframe内容()调用->iframe内容复制回父级->过渡回正常阶段

    这一切都很好,因为如果一个爬虫访问了你的多个页面,它将在不使用“iframe”get参数的情况下完成,因此它可以像正常情况一样遍历你的所有页面,但是当你在浏览器中使用它时,你可以让你的链接发挥上述的魔力

    这只是它的一个草图,但我相信它是可以做对的

    编辑:实际上,您可以使用简单的ajax来完成,而无需iframe,问题是您必须在页面加载到浏览器中后修改页面,才能使用ajax加载链接内容。爬虫也应该看到链接

    示例脚本:

    $.fn.initLinks = function() {
        $("a",this).click(function() {
            var url = $(this).attr("href");
            // transition to loading phase ...
            // Ajax post parameter tells the site lo load only the content without header/footer
            $.post(href,"ajax=1",function(data) {
                $("#content").html(data).initLinks();
                // transition to normal phase ...
            });
            return false;
        });
    };
    
    $(function() {
       $("body").initLinks();
    });
    

    Google analytics可以跟踪javascript事件,就好像它们是页面视图一样-请查看此处以了解实现情况:


    简短回答:我不建议以这种方式加载整个页面

    长回答:不推荐。虽然可能,但这并不是XHR/Ajax的真正意图。实际上,您所做的是复制浏览器的本机行为。您将遇到的一些问题:

  • 支持后面/前面 按钮您需要一个URI方案 解决
  • 浏览器必须解析 整个页面通过AJAX完成。 这会让事情变慢的。例如,如果 将一块HTML加载到 浏览器,然后将DOM替换为 只有这样,才会出现任何脚本、CSS 或者其中包含的图像开始 下载
  • 记忆 浏览器无法更改页面。结束 时间(取决于浏览器),我会 预计内存使用会增加
  • 可访问性。屏幕阅读器 需要随时通知 页面内容已更新。可以 不是为你担心而是值得 提到
  • 缓存。浏览器 不知道要缓存哪个页面 (超过初始载荷)
  • 关注点分离-您的观点 基本上是分为 用于渲染 页面的内容以及静态 用于页面框架的HTML和 最后,将JS与服务器合并 与浏览器部件的连接。 这将使维护随着时间的推移 问题和复杂
  • 与其他组件的集成- 你已经看到了我的问题 谷歌分析。你可能会遇到 与其他组件相关的问题 到DOM运行的时间 建造的

  • 页面转换效果是否值得,这是你的决定,但我希望我已经回答了你的问题。

    除了“它看起来很酷”之外,问问你为什么需要这种转换。除此之外,在这种情况下,我真的没有选择的余地,因为这是设计师的选择,有两个原因;它看起来确实“很酷”,如果你知道我的意思的话,用户将有“不必等待”的体验(或者有正在发生的事情的想法)为什么?我认为“看起来很酷”就足够了。我的意思是Flash之所以受欢迎只是因为它看起来很酷。为什么没有它就不能达到同样的效果呢。我已经调查过了,但我还不清楚。我要调查它在生产中的效果!当我有更多信息时,我会告诉你们的!不太喜欢iFrame,但这是个人的事情:)但是添加“ajax”参数的解决方案听起来非常简单!就像这个!谢谢pfft。。。不幸的是,你对我的问题回答得有点太好了:)那我得想点别的