2012-05-25 3 views
2

В настоящее время я добавил schema.org Microdata на свою страницу. Я не добавлял скрытый контент, используя <meta>, я просто использовал его на содержании страницы, где мог найти подходящий словарь schema.org. Но теперь размер gzipped-версии моего файла увеличился на 11%, размер обычной версии увеличился на 24%.HTML5 Microdata: как предотвратить увеличение размера файла с помощью Microdata

Это явно слишком много для разметки, которая в настоящее время используется только некоторыми поисковыми роботами. Вот почему я подумал о c14n. Я знаю, что это, возможно, не самый лучший способ, но я хочу создать версию с Microdata и версию без Microdata, а затем я свяжу их вместе, используя HTTP Link: <http://www.example.com/>; rel="canonical".

Мой вопрос:

  1. Что вам вещь о решении проблемы с помощью c14n.
  2. Есть ли лучший способ добавить расширенные метаданные, не увеличивая размер ?
+4

Я не думаю, что это проблема вообще, только хороший Excercise. На среднем сайте и при среднем соединении размер чистого html-файла является лишь небольшим фактором во время загрузки. Это дополнительные подключения для получения js/css/изображений, требующих времени. Кроме того, учитывайте абсолютный размер ваших файлов. Как правило, только одно изображение среднего размера будет стоить вам намного больше КБ, чем полное микроданные, из которого вы можете найти свой HTML – cypherabe

+0

@cypherabe. Современные браузеры могут загружать мое изображение параллельно с помощью SPDY. И даже если моему изображению нужно еще немного времени, мне просто нужно указать ширину и высоту, и поэтому это не касается макета других элементов. Но если я буду использовать Microdata, то он добавит некоторые машиночитаемые надбавки к метаданным выше и между важным основным контентом. Было бы хорошо, если бы я мог отправлять Microdata отдельно после отправки основного контента. Но Microdata очень сложна с древовидной структурой, поэтому я должен встроить ее непосредственно в содержимое страницы. – fridojet

ответ

0
  1. Я не думаю, что канонизация будет работать. Использование <link rel="canonical href="microdatversion"> по существу подсказывает ботам индексировать версию микроданных и все ее микроданные (хорошие). но он также оценил бы эту версию для результатов запроса, которые привели бы пользователя к версии микроданных (плохо).
  2. Я бы написал сценарий для добавления всех микроданных после. очевидно, отложить загрузку скрипта. Вы можете добавить атрибуты как имена классов, например.

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

    <script defer>
 

function shortHand(type, cName) 
{ 
    if(type ==='itemprop') 
    { 
     switch(cName) 
     { 
     case 'n': return 'name'; 
     break; 
     case 'd': return 'description' 
     break; 
     default: return cName; 
     } 
    } 
    if(type==='itemtype') 
    { 
     switch(cName) 
     { 
     case 'p': return 'Product'; 
     break; 
     default : return cName; 
     } 
    } 

} 
function addItemprop(el,cName) 
{ 
    cName = shortHand('itemprop', cName); 
    el.setAttribute('itemprop',cName) 
} 
function 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]); 
    } 
}); 
Смежные вопросы