V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
notcome
V2EX  ›  Node.js

如何给纯 AJAX 页面做优化以方便搜索引擎索引?

  •  
  •   notcome · 2014-04-11 18:35:02 +08:00 · 5647 次点击
    这是一个创建于 3912 天前的主题,其中的信息可能已经有所发展或是发生改变。
    打算做一个类似 wiki 的网站, 用 node.js. 访问页面的时候先载入整个 js app, 然后 fetch 有关页面的 markdown-like 内容, 接着输出 HTML.

    对于这样的网站, 有办法对搜索引擎做优化吗? 我的一个想法是对于直接访问 A页面则返回纯 HTML 源码, 而接着访问 B页面则使用 AJAX, 类似 GitHub, 这样的话有什么框架可以推荐吗? 即能实现前后端代码的复用……
    18 条回复    1970-01-01 08:00:00 +08:00
    wdlth
        1
    wdlth  
       2014-04-11 19:55:15 +08:00
    Github用了Pjax技术,你也可以通过判断UA来进行docroot切换或者Rewrite之类输出不同页面。
    alexapollo
        2
    alexapollo  
       2014-04-11 20:01:12 +08:00
    同问。前一段了解了PJAX,但不清楚有没有同类技术。。
    jasontse
        3
    jasontse  
       2014-04-11 20:04:33 +08:00 via iPad
    jsonline
        4
    jsonline  
       2014-04-11 20:10:19 +08:00
    Pjax 依然使用了后台模板,页面不是由 JS 渲染的。
    我目前是维护两套模板,恩,很蛋疼。
    ijse
        5
    ijse  
       2014-04-11 21:53:20 +08:00
    使用前后端通用的模板引擎,例如handlebars ..

    然后,,
    ```
    app.get '/page/:partial', (req, res, next)->
    partial = req.param 'partial'
    if req.xhr
    # process....
    res.json { ... }
    else
    res.locals.partial = partial
    res.render 'layout', { ... }
    ```
    lbj96347
        6
    lbj96347  
       2014-04-12 01:12:47 +08:00 via iPad
    我們是使用phantomjs解決的,網上有類似的Example
    jsonline
        7
    jsonline  
       2014-04-12 01:27:18 +08:00
    @ijse 但是前端模板的用法和后台是不一样的。
    比如 Backbone,我是不会在前端模板里写循环的,因为可以用 Collection 在 JS 里循环。后台模板就只能在模板里循环了。
    jakwings
        8
    jakwings  
       2014-04-12 05:22:28 +08:00
    除了 Google 的 AJAX 收录方式之外。还可以用 sitemap.xml ,顺便提供较完整的静态页面。
    notcome
        9
    notcome  
    OP
       2014-04-12 07:23:48 +08:00 via iPhone
    先感谢各位。
    昨晚看了一下 PJAX,感觉还不错,毕竟减少 JS 可以提高访问速度(近期 GFW 太恐怖)。
    其它的方案今天实验实验。
    notcome
        10
    notcome  
    OP
       2014-04-12 07:25:45 +08:00 via iPhone
    @jasontse 仔细想了一下我这应该不算文档里的 ajax,没有状态,我只是希望比如 a.html,就下载 a.md 前端渲染……
    昨天第一篇文章就看它了结果晕掉了
    yimity
        11
    yimity  
       2014-04-12 09:28:13 +08:00
    可以用自定义 header,有自定义header的返回json,否则返回页面。
    Lax
        12
    Lax  
       2014-04-12 09:30:03 +08:00
    可以考虑考虑提交sitemap。
    peartail
        13
    peartail  
       2014-04-12 10:27:24 +08:00 via iPad
    Angularjs 在搞 SEO 的人群中更常用于 Ajax 网站的优化。
    peartail
        14
    peartail  
       2014-04-12 11:02:21 +08:00
    Google 官方文档:Making AJAX Applications Crawlable

    https://developers.google.com/webmasters/ajax-crawling/docs/getting-started
    rexren
        15
    rexren  
       2014-04-12 14:22:19 +08:00
    heqichang
        16
    heqichang  
       2014-04-12 16:31:34 +08:00
    可以判断请求的useragent,如果是搜索引擎的给它一个全文的页面,如果是普通浏览器的就加载现在的页面
    everyx
        17
    everyx  
       2014-04-13 11:31:17 +08:00
    andyhu
        18
    andyhu  
       2014-04-16 20:38:29 +08:00
    what about 百度和360?如果是中文网站还是这两个搜索引擎的天下吧,有人测试过带hash的地址收录怎样嘛?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1011 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:19 · PVG 06:19 · LAX 14:19 · JFK 17:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.