我正在尝试通过仅加载足够的网页内容来获取其HTML的<head>
标记以获取其标题,图像和描述来加速我的Meteor应用程序。
我有一个客户端使用以下代码调用服务器端方法:
Meteor.call("metaGetter", url, function(err, res){...});
在服务器端,在metaGetter
方法中,我正在使用Meteor的HTTP.call:
var result = HTTP.call('GET', url, {headers: {'content-range': "bytes 0-100"}});
在Meteor的文档中写的。我能够得到结果的内容,html。但是,在打印返回的标题后,我没有看到我尝试设置的content-range
属性。
编辑:Akshat的解决方案有效,但仅适用于某些网站,实际上很少。任何帮助将不胜感激。
答案 0 :(得分:2)
使用range
标题:
var result = HTTP.call('GET', url, {headers: {'range': "bytes=0-100"}});
如果使用的服务器支持内容范围,则响应应具有content-range
标头。
当然,这需要一个支持请求范围的主机。我已经尝试了上面的代码,它在http://www.microsoft.com
url
上可以正常工作。
它的伤心地说没有什么你可以不支持它除了要求整个文档的网站做的确实。
一个相当奇怪的选择是手动请求网页作为套接字,并在获得比您需要的更多字节时切断。
答案 1 :(得分:1)
一般情况下,如果您想要总是获取标题,则无法获得固定限制:
一般情况下,我会获取整个HTML文件。在大多数体面的服务器上,这应该不到100毫秒。人类几乎无法察觉。如果你这么做,你可能希望允许并行执行服务器端方法(参见http://docs.meteor.com/#/full/method_unblock)
如果必须进行优化,您可以使用以前的方法,获取100个字节,但如果您找不到</title>
,则可以回退到下载整个HTML文件。