经过大量的工作,我终于得到了一个相当复杂的查询,非常流畅地工作,并很快返回结果.
它在开发和测试方面运行良好,但现在测试速度已大大减慢.解释查询在开发上需要0.06秒并且在测试中大致相同,现在测试时间为7秒.
解释略有不同,我不确定为什么这将是dev的解释
-+---------+------------------------------+------+------------------------------ ---+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+------------+--------+-------------------------+------------ -+---------+------------------------------+------+------------------------------ ---+ | 1 | PRIMARY | | ALL | NULL | NULL | NULL | NULL | 5 | | | 1 | PRIMARY | tickets | ref | biddate_idx | biddate_idx | 7 | showsdate.bid,showsdate.date | 78 | | | 2 | DERIVED | shows | ALL | biddate_idx,latlong_idx | NULL …
这里有点SEO问题.
我有一个包含大量内容的网站.我知道每个页面上的内容都是一样的.
我认为搜索引擎关键是页面内容的差异,以便他们可以推广正确的数据,但当我查看谷歌和bing中的摘要时,摘要显示我的"反馈"块(这是我要求的地方)反馈).
Yahoo(以及Facebook中的摘要)显示了我的搜索选项菜单.
这些并不是一个让人想要点击页面的东西.
所以我想知道最好的方法是从搜索引擎中隐藏这些内容,或者提高应该编入索引的其他内容的可见性.
页面结构非常一致,所以我认为搜索机器人很容易选择这些东西,但显然不是.
我已经看过骨干https://gist.github.com/838460中的分页,对于我正在寻找的东西,这一切看起来都非常沉重.
我想做一个无限滚动式分页,我是骨干的新手,所以也许我只是没有正确地理解它.
我认为我会做的是获取第一个集合,单击"下一步"按钮,然后获取结果并将其附加到原始集合并呈现新添加的项目.
所以我在我的路由器中有这个,我有一个索引功能
if(!myApp.list){
myApp.list = new myApp.collections.list;
myApp.list.page = 1;
} else {
myApp.list.page++;
}
myApp.list.url='/recipes?page='+myApp.list.page;
myApp.list.fetch({
add: true,
success: function() {
new myApp.views.list({ collection: myApp.list});
},
error: function() {
new Error({ message: "Error loading documents." });
}
});
如果它不存在,它将创建集合,如果它存在,则在请求列表中的下一个项目之前递增"页面".
所以问题的第一部分是,这种做事方式有什么问题吗?似乎比我见过的其他解决方案简单得多.
问题#2看起来很荒谬,但是如何触发"下一步"按钮才能获得下一个列表?
在我看来,我有一个"下一步"按钮,但调用myApp.routers.list.index或myApp.views.list并没有给我一个更新列表.
我正在构建一个支持触摸的html应用程序,并决定使用iScroll在div中滚动.
基本上,我有两个单独的滚动div,但滚动条总是放在页面的远端
我在这里遇到的问题是双重的.
1)滚动条都在最右侧(这对于左滚动内容没有多大意义
2)当滚动的唯一内容在下面时,滚动条一直延伸到标题的顶部
当我在标题上设置'position:fixed'时,它缩小到一个很小的尺寸,而我似乎无法过度纠正.
我正在使用无服务器和无服务器本地进行本地开发。
我有一个外部文件,其中包含对我node.env在应用程序中检索到的环境变量的引用。
据我了解,我应该能够设置环境变量,例如
dev:
AWS_KEY: 'key',
SECRET: 'secret
test:
AWS_KEY: 'test-key',
SECRET: 'test-secret',
etc:
...
Run Code Online (Sandbox Code Playgroud)
并通过serverless.yml中的以下行将这些环境变量包含在我的应用程序中
provider:
name: aws
runtime: nodejs4.3
stage: ${opt:stage, self:custom.default_stage}
deploymentBucket: serverless-deploy-packages/${opt:stage, self:custom.default_stage}
environment:
${file(./serverless-env.yml):${opt:stage, self:custom.default_stage}}
Run Code Online (Sandbox Code Playgroud)
然后在命令行中,我打电话
serverless offline --stage dev --port 9000
我以为这会在我的应用程序中包含正确的var,但是它不起作用。这不是应该的工作方式吗?我在这里做错什么了吗?
我正在尝试尽我所能来提高页面的加载速度,特别是加载ajax的组件.
在萤火虫中,我的外出看起来像这样
我不完全确定我是否正确读取它,但对于DOMContentLoaded它是+ 2.19s(或者如果我们应该从等待响应中减去它,它可能只有.8).
但是然后4.67s为'负载'(事件).
这两者似乎都是非常长的加载时间.
我无法弄清楚会导致这种情况的原因.这些统计数据来自加载一个直接的html页面,我通常通过ajax加载.但这只是HTML.页面中没有javascript,页面正在直接加载,而不是通过ajax请求加载.
但是,当我通过ajax加载此页面时,我发现页面尝试加载时会出现严重延迟.
有什么建议?
我一直在浏览IE调试栏中的html,它看起来都非常干净.页面中有30个图像.这可能是'加载'事件在等待什么?如果是这样,有什么方法可以加快速度吗?
特别是,由于用户永远不会直接加载此页面,而只是通过ajax请求,因此他们可以提高ajax中的页面加载性能.问题不在于ajax加载脚本,而是具体使用html页面.
---------------------- EDITTED --------------------------- ---页面的结果被加载到一个jquery循环中,其中一次可以看到多个图像,因此使用lazyloader提供了非常糟糕的用户体验.(假设是导致此问题的图像).
我有一个页面,它已被请求我允许一些用户通过CSS自定义.
我很高兴这样做,但我想弄清楚如何使其安全.没有很多样式表将应用于页面,但我原本以为如果我只是检查页面是css扩展名,那么我会安全.
但是,我所做的研究表明xss很容易通过css完成.但我还没有找到任何关于如何安全地包含用户生成的外部CSS的资源.
有没有人有这方面的建议或资源?
MySpace和其他一些网站一起设法做到这一点,但我看不出如何确保这是安全的.
我在外部css所在的页面上没有任何"安全"用户数据.但我确实为搜索获得了一些变量.
---------------- sliky的回应之后的其他数据----------------------
我不打算让每个用户都添加外部CSS.但是,css变量可以由特殊的合格用户设置,一旦该变量可用,基本上任何人都可以随意设置它.获取该变量的唯一方法是自己传播URL,所以也许我过分关注安全性,但我对此表示怀疑.
我可以设置它,以便页面不用外部样式表编制索引,但仍然关心如何维护最终用户的安全性.
我会在我的网站上有一个链接 http://mysite.com/page?useracct=12343&extcss=http://location/of/css.css
我设置了useracct,所以只有我允许启用不同css的用户才能为他们的页面创建链接.在我的网站上,我将使用css页面链接到该用户帐户.
所以有人不能随便说出 http://mysite.com/page?extcss=http://new/dangerous/css.css
但是,他们可以创建链接 http://mysite.com/page?useracct=12343&extcss=http://new/dangerous/css.css 有人进入该页面的唯一方法就是创建危险的那个人css转发了这个链接.
我想如果我对外接手进行散列和腌制,它可能更安全.也许那是最好的方式?
这与json获取关键名称作为文本的问题几乎完全相同?,但这种反应对我不起作用.
我有一个json对象
{"userList":[
{"user1":[{"username":"mike","memberSince":"01/03/2011"}]},
{"user2":[{"username":"john","memberSince":"01/05/2011"}]},
]}
我拥有"user1"和"user2"标签的唯一原因是因为我将用户列表通过userId存储在jQuery数据中,然后对其进行字符串化以将其放入cookie中并将其发送到另一个页面中.我知道,听起来很愚蠢,但我只是在构建一些前端的东西来证明一点,然后才能正确地使用db.
所以
jQuery('div#userList').data('user1',user1JSON);
变成
{"user1":[{"username":"mike","memberSince":"01/03/2011"}]}
使用时
var userlist=JSON.stringify(jQuery('div#userList').data());
因此,用户信息现在是userId的子级,而不仅仅是用户列表的子级.
为了获得用户信息,我应该可以说
for(u=0;u<userList.length;u++){
var userInfo=userList[u][0];
}
但不幸的是,这只是给我一个未定义的错误.如果我使用
var userInfo = userList[u]['user1'];
我正确地获得了用户信息.
所以,有人可以纠正我为什么userList [u] [0]不起作用,或者
向我解释如何使用JSON.stringify而不将userid添加到字符串的开头?
我正在使用一系列教程在javascript中构建我的第一个遗传算法.
我正在为这个调度教程http://www.codeproject.com/KB/recipes/GaClassSchedule.aspx#Chromosome8构建一个稍微简单的结构,但是我遇到了育种问题.
我得到了60个人口,现在我正在挑选前两个人来繁殖,然后选择一些随机的其他个体与前两个人一起繁殖,我不会最终得到相当少的父母相当快?
我想如果我在接下来的20个赛季中分别获得前两个成绩,我将不会在解决方案方面取得很大进展.
那是对的吗?有一个普遍接受的方法吗?
我试图通过直接连接Chrome而不运行Selenium来运行量角器.正如文档所说,这可以通过在配置文件中设置directConnectto true来实现.
当我运行量角器时directConnect: true,我得到:
直接使用ChromeDriver ...
[launcher]运行WebDriver的1个实例错误:在Process.ChildProcess._handle.onexit(child_process.js:792:34)的errnoException(child_process.js:1001:11)处生成ENOENT [launcher]进程退出时显示错误代码1
如果我没有运行量角器directConnect而是指定我的selenium url,一切运行正常.
我正在运行Protractor版本1.6.1,Chrome版本41.0.2272.35 beta-m(64位)和Chromedriver版本2.13.0.
selenium google-chrome selenium-chromedriver angularjs protractor
ajax ×1
algorithm ×1
angularjs ×1
backbone.js ×1
css ×1
html ×1
iscroll4 ×1
javascript ×1
join ×1
jquery ×1
json ×1
key ×1
mysql ×1
performance ×1
protractor ×1
security ×1
selenium ×1
seo ×1
xss ×1
yaml ×1