[ba-ohs-talk] Making the Web Stickier
Hi, (01)
I've had this idea floating around on my desk for a while. In a cursory
search I haven't found anything on the web that matches. And I don't think
I'm likely to get around to building it in the near future. However, it
seems like a good idea to me, so I've decided to just drop it into the
ba-ohs-talk meme-pool and see if it swims. (02)
Lots of people moan about broken links. Lots of folks have built site
monitoring tools and robots that tell you certain things and that have
certain degrees of independent capability for link maintenance. None that
I've seen go the full distance.
So here's the idea: Why not build the full-distance link maintainer into the
web server as a core service, then have web servers talk to each other about
their links? (03)
I've called it Sticky. It's process is as follows: (04)
1) Records the local address of any addressable resource on the server
noting access restrictions.
2) Scans all internal resources for external links.
3) For each external address within, e.g. the class of publicly accessible
resources, it calls the Sticky at that website (I'll label this xSticky from
hereon) and registers mySticky with xSticky and requests notification of
changes for that external address. (05)
Internally, mySticky engages in a procedure roughly like the following:
a) For each external address:
-check link
if (link)
-generate checksum for linked page.
-crawl for xSticky
if(xSticky)
-register mySticky(externalAddress) for change notification
-prompt user for link check frequency (e.g. minutes, days,
years...) (06)
b) when (time)
-check link
if(link == dead)
-call xSticky
-see if replacement registered
if(redirect)
-pick up redirect
-check checksum to see if same as old page
-check oldFragmentID if any
if(oldFragmentID && !checksumSame)
-mySticky: notify user for eyeball check of page
if(replacement from xSticky)
-test link
-check checksum
-test oldFragmentID (07)
c) if(redirect && checksumSame && oldFragmentID)
-mySticky modify external URL in internal resource.
if(replacement && checksumSame && oldFragmentID)
-mySticky modify external URL in internal resource. (08)
Or something like that. (09)
A similar process could be followed for internal resources that address
other internal resources. (010)
I'll leave figuring out dynamically served content to the clever folks. (011)
Anyway, if someone wants to pick that up and run with it, go ahead (on
condition that I get a mention in there somewhere for starting the ball
rolling ;-) Then I'll be able to remove at least one piece of paper from my
real desktop. (012)
Actually, now I think about it, maybe the Sticky communication protocols
should be standardised too. (013)
--
Peter (014)