If you were given a dollar by every website that transferred unnecessary metadata to you, you'd be richer than Bill Gates! Well, not really; but you'd at least be well off. You see, very few people realize that the websites they visit on a daily basis are transferring useless metadata to them -- including seasoned website developers, designers, and marketers. And, even when people do realize it, they often assume that it's a best practice. It's not! In fact, it's one of the reasons why the web has become such a bloated medium. Well, that and images, stylesheets, javascript, fonts, etc. -- all of which are even bigger culprits than metadata. Still, that's no reason to ignore metadata -- it's been ignored for far too long! Thus, in this article, I'll shed some light on the problem of transferring unnecessary metadata on the web as well as discuss several solutions for dealing with it.
What is metadata?
According to Wikipedia, metadata refers to "data that provides information about other data". That is to say, metadata can describe a resource for purposes such as discovery and identification; it can indicate how compound objects are put together; and, it can provide information to help manage a resource (Wikipedia). If we apply this definition to websites, metadata can be classified as any data in the HTML markup of a webpage that's not shown directly to end-users; or, used by the website itself to properly function. For example, elements such as a webpage's "description" and "keywords" are neither shown to users nor required for the website to function. Now, that's not to say that metadata is useless; it's generally useful for something or to someone -- just not necessarily end-users. For example, the aforementioned "description" and "keywords" tags are useful to search engines, comments are useful to developers for debugging, and conditional comments are useful to Internet Explorer browsers less than version 10.
No harm, no foul! Right?
Wrong! Unnecessary metadata bloats websites and harms end-users. How do you ask? Well, first and foremost, it costs websites real money to transfer unnecessary metadata downstream. Just think about the number of servers, processes, memory, etc. that could be reduced by sending fewer data to users -- not to mention the potential performance improvements that could come about as a result. Then there's the cost to end-users' internet bandwidth, computer resources, time and attention in having to download, parse, and render unnecessary content. Shouldn't that be avoided, if at all possible? After all, not everyone lives in countries where broadband is ubiquitous and relatively inexpensive. Rather, over half of Internet users live in third-world or developing countries where broadband is notoriously slow and costly; and, many of them don't own speedy iPhones or Android devices. Thus, it's vitally important that every website -- specifically their developers, designers, and/or marketers -- respect each end-users time and money by putting more thought into what's sent downstream.
So, what do you propose?
Given that most metadata is either intended for use by search engines, user agents, or developers, I proposed only sending metadata when it's requested by a specific audience. Take, for example, the "description", "keywords", and "canonical" tags on most websites; they're only required by search engines such as Google, Bing, and/or Yahoo for SEO purposes. Therefore; those tags should only be rendered when a website can detect the requesting UserAgent string such as Googlebot, Bingbot, and/or Yahoo Slurp! The same can be said for the "apple-touch-icon", "msapplication", and IE conditional comment tags; they should only be rendered when a browser like Safari or Internet Explorer is being used. Yet another example is social media tags from the likes of Facebook, Twitter, Instagram, etc. Such tags should again only be rendered when a UserAgent Twitterbot and/or Facebot is being used. Lastly, developer-specific information could be hidden behind a feature flag that's based on a parameter in the URL. This is by no means an exhaustive list of solutions; I encourage you can come up with your own.
In closing, I hope I've convinced you to audit your own website(s) and remove any and all unnecessary metadata that you may be inadvertently transferring downstream to your end-users. I'm of the belief that more can be done on Production websites to stop spamming end-users with unactionable metadata.
What is metadata?
According to Wikipedia, metadata refers to "data that provides information about other data". That is to say, metadata can describe a resource for purposes such as discovery and identification; it can indicate how compound objects are put together; and, it can provide information to help manage a resource (Wikipedia). If we apply this definition to websites, metadata can be classified as any data in the HTML markup of a webpage that's not shown directly to end-users; or, used by the website itself to properly function. For example, elements such as a webpage's "description" and "keywords" are neither shown to users nor required for the website to function. Now, that's not to say that metadata is useless; it's generally useful for something or to someone -- just not necessarily end-users. For example, the aforementioned "description" and "keywords" tags are useful to search engines, comments are useful to developers for debugging, and conditional comments are useful to Internet Explorer browsers less than version 10.
No harm, no foul! Right?
Wrong! Unnecessary metadata bloats websites and harms end-users. How do you ask? Well, first and foremost, it costs websites real money to transfer unnecessary metadata downstream. Just think about the number of servers, processes, memory, etc. that could be reduced by sending fewer data to users -- not to mention the potential performance improvements that could come about as a result. Then there's the cost to end-users' internet bandwidth, computer resources, time and attention in having to download, parse, and render unnecessary content. Shouldn't that be avoided, if at all possible? After all, not everyone lives in countries where broadband is ubiquitous and relatively inexpensive. Rather, over half of Internet users live in third-world or developing countries where broadband is notoriously slow and costly; and, many of them don't own speedy iPhones or Android devices. Thus, it's vitally important that every website -- specifically their developers, designers, and/or marketers -- respect each end-users time and money by putting more thought into what's sent downstream.
So, what do you propose?
Given that most metadata is either intended for use by search engines, user agents, or developers, I proposed only sending metadata when it's requested by a specific audience. Take, for example, the "description", "keywords", and "canonical" tags on most websites; they're only required by search engines such as Google, Bing, and/or Yahoo for SEO purposes. Therefore; those tags should only be rendered when a website can detect the requesting UserAgent string such as Googlebot, Bingbot, and/or Yahoo Slurp! The same can be said for the "apple-touch-icon", "msapplication", and IE conditional comment tags; they should only be rendered when a browser like Safari or Internet Explorer is being used. Yet another example is social media tags from the likes of Facebook, Twitter, Instagram, etc. Such tags should again only be rendered when a UserAgent Twitterbot and/or Facebot is being used. Lastly, developer-specific information could be hidden behind a feature flag that's based on a parameter in the URL. This is by no means an exhaustive list of solutions; I encourage you can come up with your own.
In closing, I hope I've convinced you to audit your own website(s) and remove any and all unnecessary metadata that you may be inadvertently transferring downstream to your end-users. I'm of the belief that more can be done on Production websites to stop spamming end-users with unactionable metadata.
Comments
Post a Comment