流星用户和骨干非常慢

时间:2013-02-06 10:18:04

标签: performance backbone.js meteor

我创建了一个便于内容共享的项目。你可以在这里查看我的项目: SharingProject

您可以将user@example.com与123456用作密码,以将该网站作为已验证用户进行测试。当然该网站还有一些漏洞......

我使用meteor用户包和骨干包来浏览页面。 在localhost上,没有问题。为了测试,我将项目上传到流星服务器。现在,当我登录并浏览页面时,每次我导航到新页面时,由于URL更改,应用程序“检查”客户端的用户。这很烦人......

当然,我可以浏览只调用Session.set('page_id',..)的页面,但我的目标是能够将人们的网址发送到服务器上的特定页面。

代码类似于流星页面中todos示例中的代码:

Meteor.subscribe('pages', function () {
    if (!Session.get('page_id')) {
    var page = Pages.findOne({}, {sort: {owner: -1}});
    if (page)
      Router.setPage(page._id);
  }
});

...

var PagesRouter = Backbone.Router.extend({
  routes: {
    ":page_id": "main"
  },
  main: function (page_id) {
    Session.set("page_id", page_id);
  },
  setPage: function (page_id) {
    this.navigate(page_id, true);
  }
});

Router = new PagesRouter;

Meteor.startup(function () {
  Backbone.history.start({pushState: true});
});

为什么我在这里问:我搜索了网络,找不到有同样问题的人。所以要么之前没有人尝试过,或者有一个简单的解决方案呢?

编辑:我如何调用页面

<template name="pages"> 
    {{#each pages}}
        <p><a href="/{{_id}}">{{title}}</a>
        {{#if isauthor}}
            <a class="delPage" href="javascript:delPage('{{_id}}')">delete</a>
        {{/if}}
        </p>
    {{/each}}
</template>

2 个答案:

答案 0 :(得分:1)

我不知道你是如何渲染页面链接的,但是像这样的链接:

http://pagesharingproject.meteor.com/a1fbacba-0ddf-4077-a653-294b428bbfb8

应如下所示:

http://pagesharingproject.meteor.com/#a1fbacba-0ddf-4077-a653-294b428bbfb8

答案 1 :(得分:1)

好的我解决了这个问题,改变了(真实)

Meteor.startup(function () {
  Backbone.history.start({pushState: true});
});

到(假)

Meteor.startup(function () {
  Backbone.history.start({pushState: false});
});

当然还有像Mubix建议的那样添加锚。谢谢你的暗示! 它是上述网站的最新版本。

我今天花了一些时间在骨干文档上,但我无法想象为什么这有效?特别是我想知道为什么

{hashChange: false}

在这里不起作用?