2

目前,我将 schema.org 微数据添加到我的页面。我没有使用添加隐藏内容<meta>,我只是在可以找到合适 schema.org 词汇的页面内容上使用它。但是现在我的文件gzip压缩版本的大小增加了11%,普通版本的大小增加了24%。

对于目前仅由某些搜索机器人使用的标记而言,这显然太多了。这就是我想到c14n的原因。我知道这可能不是最好的方法,但我想创建一个带有微数据的版本和一个没有微数据的版本,然后我使用 HTTP 将它们链接在一起Link: <http://www.example.com/>; rel="canonical"

我的问题:

  1. 你对使用 c14n 解决问题有什么看法。
  2. 有没有更好的方法来添加高级元数据而不增加太多的大小?
4

1 回答 1

0
  1. 我不认为规范化会起作用。使用<link rel="canonical href="microdatversion">基本上会告诉机器人索引微数据版本及其所有微数据(好)。但它也会对这个版本的查询结果进行排名,这会将用户带到微数据版本(坏)。
  2. 我会写一个脚本来添加所有的微数据。显然推迟脚本加载。您可以像这样将属性添加为类名。

    <div class="it-p is ip-d"></div>

    <script defer>
功能简写(类型,cName)
{
    如果(类型 ==='itemprop')
    {
        开关(cName)
        {
         案例“n”:返回“名称”;
         休息;
         案例“d”:返回“描述”
         休息;
         默认值:返回 cName;
         }
    }
    如果(类型==='项目类型')
    {
        开关(cName)
        {
        案例“p”:返回“产品”;
        休息;
        默认值:返回 cName;
        }
    }

}
函数 addItemprop(el,cName)
{
    cName = shortHand('itemprop', cName);
    el.setAttribute('itemprop',cName)
}
函数 addItemtype(el,cName)
{
    cName = shortHand('itemtype', cName);
    el.setAttribute('itemtype','http://scheme.org/'+cName)
}

$('[class]').filter(function()
{
    var removeclass=[];

    for(var i=0; i < this.classList.length; i++)
    {
        var cName =this.classList[i];
        if (/^ip-/.test(cName))addItemprop(this,cName.replace('ip-',''));removeclass.push(cName);
        if (cName =='is')removeclass.push(cName);this.setAttribute('itemscope','');
        if (/^it-/.test(cName))addItemtype(this,cName.replace('it-',''));removeclass.push(cName);

    }
    for(var i=0; i < removeclass.length; i++)
    {
        this.classList.remove(removeclass[i]);
    }
});
于 2014-01-08T10:16:22.213 回答