Frames optimaliseren voor
zoekmachines
Altijd wordt er wel een discussie gevoerd over het gebruik
van wel of geen frames in een website. Meestal lijkt het erop
dat er altijd 2 partijen zijn in deze dicussie:
- Eén partij die een hekel hebben aan het gebruik
van frames
- Eén partij die graag frames willen gebruiken binnen
de website.
De discussie rondom het gebruik van frames heb ik nooit echt
begrepen. De meeste argumenten tegen het gebruik van frames
zijn dat bookmarks / Favorieten niet worden hersteld, dat
sommige zoekmachines op het internet niet overweg kunnen met
frames en dat zodra een web pagina vanuit een zoekresultaat
van een zoekmachine wordt geopend de desbetreffende pagina
buiten zijn frame setting wordt geopend. Maar zijn dit wel
reele argumenten? In deze pagina ga ik in op het gebruik van
frames binnen websites en hoe de hierboven genoemde argumenten
feitelijk eenvoudig kunnen worden opgelost.
Zoals eerder is besproken probeer altijd bij de bouw van
een website te onthouden dat er eigenlijk 2 soorten bezoeker
zijn: web-browsers en spiders van zoekmachines. Vaak wordt
er bij het gebruik van frames vergeten dat de frameset pagina
een gewone HTML pagina is die ook door de spider wordt gelezen
en opgenomen kan worden in zijn index. Dit ondanks het feit
dat de gebruiker met zijn webbrowser niet deze inhoud zal
zien op zijn scherm. Hiervan uitgaande voeg dan net zoals
alle andere pagina's binnen je website een gewone HTML titel,
en de standaard META tags toe. Bekijk bijvoorbeeld het volgende
zoekresultaat van
Ilse als je zoek op "browser no frames". Meer
dan duizenden pagina's zijn foutief opgemaak, omdat er geen
goed gebruik gemaakt wordt van de no-frames tag en de toevoeging
van de META tag description. Onthoud altijd dat deze meta
tag gebruikt wordt om de samenvatting van de document weer
te gegeven in het zoekresultaat en boven zal resulteren in
een hogere ranking des te meer daar de frameset pagina meestal
de eerste pagina van de website is en daardoor ook hoger gewaardeerd
zal worden. Maar later hierover meer...
Voor zoekmachines die niet overweg kunnen met frames
Om een spider een goede toegang te geven tot je website zorg
ervoor dat je altijd gebruik maakt van de <noframe>
tag binnen de framesetting.
De structuur van zo'n document kan er als volgt uitzien:
<HTML>
<HEAD>
<title>Frames optimaliseren voor zoekmachines</title>
<meta name="keywords" content="frames, noframes,
frame herstel">
<meta name="description" content="Bij het
gebruik van frames in websites moet rekening...">
</head>
<FRAMESET cols= "60%,40%">
<noframe>
<body>
<h1>Welkom op de spiderglobe website</h1>En hier
meer informatie
<a href="sitemap.htm">Menu van spiderglobe</a>
<a href="content.html">Klik hier voor informatie
over spiderglobe</a>
</body>
</noframe>
<frame src="menu.html">
<frame src="content.html">
</frameset>
</html>
In het bovenstaande voorbeeld zal een spider die geen frames
kan lezen toch de links volgen welke in de noframe tag zijn
opgenomen waardoor de gehele site zal worden geindexeerd en
worden opgenomen in de collectie van de zoekmachine. Zorg
ervoor dat in de vervolg pagina's "normale" links
zijn opgenomen naar de andere pagina's binnen een website.
Daarnaast dien je rekening te houden dat de eerste pagina
(= root, index.htm) het zwaarst zal wegen. Zorg daarom voor
normale inhoud in de pagina.
Herstel de framecontext in je website
Als je frames gebruikt binnen je website wees dan voorzichtig
hoe je ze gebruikt. Buiten het feit dat sommige spiders op
het internet geen frame settings kunnen lezen is de meest
gemaakt fout met frames dat web pagina's welke vanuit een
zoekresultaat scherm van een zoekmachine worden geopend niet
de frame context wordt hersteld. Hierdoor wordt een web-pagina
meestal buiten de navigatie paden van de website geopend.
Hierdoor kan de gebruiker meestal niet verder navigeren binnen
de website.Voor de meeste communicatie managers en web master
is dit een nachtmerrie. Dit komt meestal vanwege het feit
dat web ontwikkelaars meestal niet anticiperen op het feit
dat documenten buiten de frameset kunnen worden geopend. Dit
komt doordat een zoekmachine de framecontext niet zal onthouden
wanneer een document wordt geindexeerd.
Het goede nieuws is dat het mogelijk is om de frame setting
van je website op een eenvoudige manier is te herstellen.
In het onderstaande voorbeeld bespreek ik een frameset wat
uit een 2-tal frames bestaat. Eén frame bestaat uit
het aansturings menu van de webset en de andere frameset bevat
de werkelijke inhoud.
Voor het aanmaken van de mainframe maak ik gebruik van Javascript.
Hiermee heb ik de mogelijkheid om parameters mee te geven
en kan ik CGI parameters gebruiken om de framesetting aan
te sturen
<HTML>
<HEAD>
<TITLE>This is the mainframe setting page</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--
var argument0 = "main.html";
var argument1 = "about.html";
var str = location.search;
var pos = str.indexOf("&");
if (pos != -1) {
var num = str.substring(pos + 1, str.length);
window["argument" + num] = str.substring(1, pos);
}
// -->
</SCRIPT>
</HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!--
document.write(
'<FRAMESET COLS="141, *" frameborder="NO"
border="0" framespacing="0">',
'<FRAME SRC="', argument0, '" NAME="menu"
scrolling="NO" noresize >',
'<FRAME SRC="', argument1, '" NAME="content">',
'</FRAMESET>'
);
// -->
</SCRIPT>
/*
make sure that a spider will retrieve also the documents he
need… put the 'default' argument in a simple a-hrefs
note that the no-frames tag will have no effect in this case
and the body tag will be ignored by the browsers.
*/
<BODY>
And any other relevance content to increase the traffic.
<a href="main.html">Menupage of this site</a>
<a href="about.html">Information about this
site</a>
</BODY>
</HTML
Wees van het feit bewust dat als je de bovenstaande manier
gebruikt dat een spider geen Javascript kan lezen. Om ervoor
te zorgen dat de rest van de website wordt gelezen voeg dan
een aparte body tag toe met daarin de links opgenomen die
de spider verder begeleiden in de website.
Het document met de werkelijk inhoud bevat ook een klein
stukje javascript. Dit stukje code voert een controle uit
of de pagina is geopend buiten de main frame setting. Als
dit niet het geval is dan zorgt de Javascript code ervoor
dat de main frame setting wordt hersteld met het desbetreffende
document in de content frame:
<html>
<head>
<title>Using frames in relation to search engines, part
2</title>
<SCRIPT LANGUAGE="JavaScript">
<!--
var str = location.search;
var pos = str.indexOf("&print");
if
((top.location.href.indexOf("mainframe.html") ==
-1)&& (pos == -1))
top.location.href = "mainframe.html?" + this.location.pathname
+ "&1";
// -->
</SCRIPT>
</head>
Dit kleine stukje javascript voert een controle uit of de
frameset bestaat en indien dit niet het geval is wordt de
frameset herbouwd met als parameter de URL van het document
wat buiten de frameset in geopend. De 2e parameter is er in
dit geval voor om aan te geven in welke frame de URL moet
worden geopend. Als de waarde 0 is wordt deze geopend in de
menu frame en is de waarde 1 dan wordt deze geopend in de
content frame.
In het bovenstaande voorbeeld bevat het HTML document zelf
de javascript code. Persoonlijk vind ik het handig om de Javascript
code in een javascript include file op te nemen. Deze include
file kan dan worden opgenomen in de HTML head van het document:
<script language="Javascript"
src="spider.js"</script>
Hierdoor wordt de "laad" tijd van het document beperkt
(spider kunnen immers geen Javascript leze) en wordt de herbruik
en onderhoud van de Javascript code een stuk eenvoudiger.
Ondanks het feit dat de hierboven weergegeven Javascript
voorbeelden ervoor zorgen dat de web-pagina's keurig in de
frame setting worden opgenomen kan het voorkomen dat dit niet
altijd wenselijk is. Denk hierbij aan het feit dat sommige
gebruikers gewoon de inhoud van een document wilenl printen.
Probeer dat maar eens met de hierboven weergegeven Javascript
code. Daarom gebruik ik in dit voorbeeld de parameter &print.
Als de URL van het desbetreffende document deze parameter
bevat kan de web-pagina toch buiten zijn frame-context worden
geopend.
Een link kan er als voorbeeld zo uitzien:
<a
href="content-1.html?&print" target="new">
<img src="images/print.jpg" width="36"
height="27" border="0">
</a>
Wat zijn nu de nadelen van het gebruik van frames?
Het enige nadeel wat ik kan bedenken is dat de eindgebruiker
geen mogelijkheid heeft om de back button te gebruiken op
de eerste pagina die ze openen binnen je website. Maar dit
is iets wat je wellicht moet accepteren.
Een ander algemeen aspect bij het gebruik van frames zijn
de gebruikers statestieken waarmee je rekening moet houden.
Indien een frameset pagina uit 3 frames bestaat worden initieel
4 pagina's geopend -> de frameset pagina en de drie pagina's
voor de frames zelf.
|