Di mana tempat yang ideal dalam kode untuk menggunakan markup Schema.org sebagai JSON-LD?

9

Di mana tempat terbaik untuk meletakkan markup Schema.org yang menggunakan JSON-LD? Beberapa merekomendasikan di dalam <head>tetapi skrip bekerja inline juga. Akan lebih mudah dalam sebuah MVC untuk menempatkan mereka dalam ruang lingkup yang sama dengan pengendali, sehingga itu berarti segaris dekat elemen mereka. Tetapi JSON-LD dapat "bekerja lebih baik" sebagai satu skrip / tumpukan besar di <head>. Saya hanya tidak yakin dengan lokasi yang ideal.

Contohnya adalah remah roti - haruskah saya menempatkan skrip JSON-LD sebelum markup untuk remah, atau haruskah saya melewati semua kesulitan memuat model (lagi) untuk mendefinisikannya di area pembuatan <head>? Sepertinya itu akan menjadi hit kinerja, tetapi jika itu layak untuk spek, maka perlu dilakukan.

Berikut ini adalah contoh dari Organisasi di JSON-LD (ini <head>sudah ada di ):

<script type="application/ld+json"> {
"@context" : "http://schema.org",
"@type" : "Organization",
"name" : "A Huge Corporation",
"url" : "http://www.example.com",
"logo" : "http://www.example.com/huge-corporation.png",
"founder" : "Humanz",
"foundingDate" : "1268",
"sameAs" : "http://plus.google.com/111111111111111111111",
"contactPoint" : {
    "@type" : "ContactPoint",
    "contactType" : "Customer Service",
    "telephone" : "+1-888-888-8888",
    "faxNumber" : "+1-777-777-7777",
    "contactOption" : "TollFree",
    "areaServed" : "US",
    "availableLanguage" : "English",
    "email" : "[email protected]"
},
"hasPos" : {
    "@type" : "Place",
    "name" : "The Branch or Store",
    "photo" : "http://www.example.com/store.png",
    "hasMap" : {
        "@type" : "Map",
        "url" : "https://maps.google.com/maps?q=feed_me_a_map"
    },
    "address" : {
        "@type" : "PostalAddress",
        "name" : "The Branch or Store",
        "streetAddress" : "1547 Main Street",
        "addressLocality" : "Beverly Hills",
        "addressRegion" : "CA",
        "postalCode" : "90210",
        "addressCountry" : "United States"
    }
}}
</script>

Dan di sini adalah cuplikan remah roti (saat ini berada di lingkup lain, lebih jauh ke bawah halaman dekat remah-remah yang diberikan secara visual). Akan menyenangkan untuk memahami hal ini, jika pekerjaan itu sepadan:

<script type="application/ld+json"> {
"@context" : "http://schema.org",
"@type" : "Breadcrumblist",
"itemListElement" : [
    {
    "@type" : "ListItem",
    "position" : 1,
    "item" : {
        "@id" : "http:www.example.com",
        "name" : "Home"
        }
    },
    {
    "@type" : "ListItem",
    "position" : 2,
    "item" : {
        "@id" : "http:www.example.com/widgets",
        "name" : "Widgets"
        }
    },
    {
    "@type" : "ListItem",
    "position" : 3,
    "item" : {
        "@id" : "http:www.example.com/widgets/green",
        "name" : "Green Widgets"
        }
    }
]}
</script>
dhaupin
sumber

Jawaban:

8

JSON-LD tidak peduli . Yang masuk akal, karena datanya sama, tidak peduli dari mana dalam dokumen itu diekstraksi.

Dari perspektif HTML, Anda hanya boleh memasukkannya di headjika JSON-LD tentang halaman web Anda atau tentang apa yang halaman web Anda wakili, karena headelemen tersebut didefinisikan mengandung metadata untuk dokumen . Tetapi tidak selalu mudah untuk menentukan apakah sesuatu dianggap sebagai metadata atau tidak; Saya tidak akan terlalu khawatir tentang ini.

unor
sumber
Masuk akal tentang pemikiran <head> - pada akhirnya akan meninggalkan organisasi di sana .... saya pikir itu dianggap sebagai "meta" dalam arti pada setiap halaman dan memberikan "tag" yang dapat diidentifikasi per-say.
dhaupin
dan di head, bukankah sepotong kode lagi memblokir pemblokiran halaman? Saya bertanya-tanya sebelum itu </body>bisa lebih baik karena itu
João Pimentel Ferreira
1
@ JoãoPimentelFerreira: Saya berharap itu tidak memblokir, karena itu adalah blok data, bukan skrip (keduanya menggunakan scriptelemen, tetapi mereka secara teknis berbeda kasus). Browser dapat sepenuhnya mengabaikan blok data apa pun. Tapi saya tidak tahu apa yang sebenarnya dilakukan browser.
unor