There is simple way to speed this up. All Google Search links point to redirection service: www.google.gr/url?example.com. It is trivial to write script which makes those links direct.
They use that to improve search quality by seeing which links people actually click on – a key signal they're not going to give up – but the good news is that there's a better way to do that and they're already using it. HTML5 added a ping attribute to the <a> tag which tells the browser to make an untracked asynchronous request to a different URL to record the click: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#...
According to the same author, that was deployed over a year ago but only to browsers which support it:
Unfortunately, this was implemented in Firefox years ago but disabled due to a fear-mongering campaign by some self-styled privacy advocates who were quite vocal in sharing their misunderstanding of web privacy:
> Unfortunately, this was implemented in Firefox years ago but disabled due to a fear-mongering campaign by some self-styled privacy advocates who were quite vocal in sharing their misunderstanding of web privacy
What 'misunderstanding'? I don't want people knowing what third party links I'm clicking on. There's no misunderstanding. I understand it perfectly. I just don't want it. I disable 3rd party HTTP referers as well (using the RefControl extension). Sure it's not the only way sites can implement this behaviour, and I'm glad an official way exists... but only so Google will use it and then I can disable it. The argument against having an off switch is basically 'well, they're going to fuck you anyway, so bend over and here's some lube'.
You say 'some self-styled privacy advocates' are fear-mongering, well its because webheads keep implementing insanely harmful features and aren't actively making the web better for the privacy concious. They (we, I guess) are grossly under-served.
The response to link tracking should be "Hmm, how can we have websites ask for this permission, and shut down all these nasty means of doing it?" not "oh boy, these people are tracking people in an ugly way, how can we make this fast?". But guess which one is actually a hard problem.
Do you suppose that most everyday users know (not suspect, but know) that Google are watching every link they click on? A technologically illiterate user base cannot consent.
> What 'misunderstanding'? I don't want people knowing what third party links I'm clicking on. There's no misunderstanding. I understand it perfectly. I just don't want it.
This is exactly what I was talking about: the misunderstanding is thinking that your outrage changes the privacy situation in any way. The options on offer are “Stop using Google” or “Let Google collect data about the search results you click on”; redirect scripts, <a ping> and Beacon are all simply implementation details for the latter option.
If you feel strongly about this contact your politicians and lobby for privacy laws restricting the data companies are allowed to collect. There's approximately zero chance that everyone will voluntarily stop measuring how well their search ranking algorithms work.
Disabling all the JS crap that modern sites layer on top of content - reduces memory and CPU usage. I paid for the memory and CPU, and I don't want several hundreds of MBs spent caching JS interpreter/optimizer data structures and analytics scripts wasting my CPU compute power - decreasing the battery life of my device.
While you may be right that the privacy angle is something that few users care about, there are real tangible benefits to disabling some of this stuff.
a) <a ping> doesn't involve JavaScript and actually saves battery power by reducing the amount of time where the network is active without being fully loaded
b) It's true that you paid for the device but Google pays for the service – the deal is that they pay for everything by showing you ads. If you disagree with that you're welcome to use or start a competitor but it's absurdly entitled to think that you have any grounds to demand that they change their business model.
a) Its true that it doesn't involve JS but not doing the ping itself would save the battery life even further.
b) Don't put words in other peoples mouths. How incredibly rude of you. I have not demanded that they change anything. My post makes no mention of any "business model".
My computer as of today allows me some control over the code that runs on the CPU and the data that gets transferred over the network. I'd like to exercise that option if and when I wish to. You're free to do whatever you want.
Yeah, it appears that they both add and remove the direct links in JS, so with JS disabled you never see the direct link (at least, that's what I get when I disable javascript).
There are. It means there are now N+1 instead of N things to worry about for those of us that actually do care. It signals an acceptance that this is something to be encouraged and welcomed. All behind users backs.
In theory, centralizing such requests with a ping should make it much easier for a browser to disable the pings, so if anything this improves security. Of course, if Google wanted to detect the lack of clicks from a given user and fall back to redirection, they could, in which case the net benefit and harm for security would be zero.
As others have said, there is no way to prevent Google from gathering this information, so adding the capability to a browser doesn't change the situation.
I am all for privacy and am a daily user of encrypted email and encrypted chat. However, I think there are some activities that the very privacy minded need to accept that they simply cannot participate in and maintain complete privacy.
Search is one of these. In order for search to work, the user has to send a query to a third party. The third party has to be able to read the query to do the search. If that's not an acceptable loss of privacy, then don't use search.
why don't you download the internet and run grep, then you don't have to leak your search terms. Seriously - why would you want Google to know what search terms you're using? Why would anyone want to pass this information to an untrusted third party?
As for me, I think once a site has seen my exact search term, knowing which of the results I'm clicking on is a small leak and quite useful so that the popular results can be put at the top.
wow, so, this is what in my mind I was caricaturing. Offline living is basically incompatible with the knowledge available on the Internet, and what you mention are super unreasonable steps for normal users to take.
So when I google 'suicide' it's OK for Google to know whether I'm clicking on the Samaritans or the Wikipedia article? And when I Google 'rape' it's OK for Google to know whether I click on a news article about a string of recent rapes or click through to rape fetish erotica website?
The main argument here is, they already know which you click on. They use referral links. So that's not a sensible reason to prohibit the "ping" attribute.
Given two solutions with equal potential for abuse, why not pick the technically superior solution?
> Given two solutions with equal potential for abuse, why not pick the technically superior solution?
Straw man. You're presupposing the existence of 'ping'. The argument is why, given an observation that web features X and Y are being used to implement contentious function Z, would you want to implement a brand new, even more insidious, web feature, designed solely for doing Z, in the first place? Technical superiority of the new implementation of Z is not in dispute.
Monitor the HTTP activity with FF developer tools while using Google. It's plain to see that no new traffic flows to Google occurs when I click a link.
There are extensions that will rewrite the referral links back to the original link, or prevent the link from being swapped in the moment of onmousedown or whatever they use.
To your first question: YES, it's 100% okay for them to receive this query (a distinct issue from 'Google knowing').
I think in this case it's pretty black or white, because people would ordinarily take the time to add to their search queries. If people want to see results on (whatever fetish), do you think they would just Google the word 'sex' and then go from there, under cover that they might have just been looking up the Latin word for 6 they saw in some inscription? (Whoops, also better load the first 9,700,000 results pages in javascript, which is what I estimate you have to read through to get to something that mentions this without adding the word 'latin'). Wouldn't want to give away which page of results the user stopped on.
I mean if they want 'suicide help in Detroit' would they just Google the word suicide?
Not everything is black or white, but for Google to know what the BEST result is for 'suicide help in Detroit' is pretty black and white: they already have the query, and yes, they should know which link is clicked on the most. If it was originally on the second page through their algorithm but gets 90% of the clicks when they put it on the first page, yes, they should absolutely know and use this information. In fact (because it had been on the second page in this example) it might save lives!
there really is no trade-off or drawback. it's like the server in a restaurant asking you if you enjoyed your meal, and using this as part of recommendations the next someone someone asks what's popular.
"Well, you know what I ordered, but damned if I'll let you know what part of it I liked. That's just too personal."
it's like the server in a restaurant asking you if you enjoyed your meal...
...and then being able to get you fired, steal your identity, or otherwise affect your life without your knowledge because you happen to enjoy a certain kind of food your boss doesn't like.
Yes, exactly. And not even 'a certain kind of food' but rather which food that you had already ordered.
The metaphor is spot-on. "Did you enjoy your meal"? "Oh so you can get me fired, steal my identity, or otherwise affect my life without my knowledge because I happen to enjoy a certain kind of food my boss doesn't like? No comment."
The reason it's a good analogy is because you already 'ordered' (the search terms are the meaningful data) and a statistical sampling of which of the top 10 results for "octopus hentai videos" a random sampling of users who entered that search term clicked on, is not in practice used for anything other than improving ranking quality.
it's exactly the same as "did you enjoy your meal" or what you liked about it - you've already given up most of the info by ordering in the first place.
so your analogy is a good one. it's just completely innocent.
...How many people out there are worried that Google might know they're into rape fetish erotica website, but don't mind Google knowing that they're searching for "rape"?
Wow. I'd love to see these treacherous "onmousedown" handlers that substitute the link on Google site gone! Especially on the RIGHT click.
Actually, I could never understand, why Google substitutes the link with the redirect on the RIGHT click. It is necessary when you LEFT click, the page looses control and it doesn't matter much for users anyway. But WHY do it on the right click? When the user RIGHT clicks the link, the user needs the ORIGINAL link! And the user IS NOT leaving the page. Google is free to record a right click. And yet, instead of just recording the right click Google mangles the link instead. WHY? Just evil/stupid? or I'm not understanding some hidden wisdom here?
I've always figured that one is just an oversight. Implementing the behavior you want is an extra feature requiring extra code. The current behavior is the ordinary one, that you see in nearly every web page out there.
So, they don't care, that right-clicks vs left-clicks is actually different data? And that tracking a bit more intelligently can reduce user frustration? So basically it is not stupid/evil, it is just lazy/evil?
(And BTW, this is a compliment to Google, as I'm asking the question. Not assuming that by default, as any other big co they've just filled with bozos.)
It could be for a lot of reasons. Busy with other things, lazy- or even about things like performance. Once upon a time I remember when their home page was heavily stripped and used unterminated HTML (e.g. no </body> tag) as part of an effort to minimize bandwidth and improve latency.
I don't know why, but especially when something is following the default behavior I do not assume malice.
Unlikely performance. Google search results page is relatively heavy, with Google+/etc. And this one, is a simple change of a few lines of code. Yes, sure, it is a default behavior and I also don't assume malice (evil = lazy / stupid / don't care about users, not malice). I'm just surprised about the oversight, that they apparently don't care about having slightly better click types data and also making the user experience slightly better.
(And BTW, this is again compliment to Google, as I'm surprised. Not assuming that by default, as any other big co they've just filled with bozos.)
Works, but it's annoying for the use-case of copying the URL. If they didn't do this, you could right-click "Copy Location". Now you have to open it in a new tab, select the address and copy it there, wasting bandwidth and time.
I don't work at Google, but I think they do that to gather click through data for links and positions on the results page. Simply linking to the destination would prevent them from learning valuable information about the quality of their search engine and what users think is valuable.
I'm sure they do. They could probably get that data from the vast majority of users using Javascript. I assume a concurrent onclick request wouldn't slow things down noticeably.
How about a right click? Google substitutes the link on the right-click as well. Which creates loads of frustration for users wanting to copy say a link to a research paper to an e-mail.
Will other browsers be implementing support for this? How much of this type of improvement should we view as Google's ambitions and fast pace of execution, and how much as a Microsoft-style move to lock in users to a specific platform that offers a better, but incompatible, experience?
I'm not taking sides here, I don't know enough to make a judgement. But it's interesting that Google seems to be increasing their pattern of standards-tweaking in order to make a superior product - and who can fault them for that? But isn't that how we got so much of the mess that MS made?
The early feedback from FF, IE, (and to some extent, Webkit), folks have been positive, and I'm hoping this can be a cross-browser feature in 2015 (yes, I'm an optimist).
My (biased) view on the matter is that this instance is a useful standards are pushed forwards. rel='prefetch' is well trod (some support existed in Firefox <3.5) and part of the HTML5 standard. The browser appears to be given a lot of leeway in how to implement link prefetching (the page is just hinting that prefetching seems like a good idea), so persisting prefetches across navigations seems entirely within the spirit and the letter of the standard. The high profile launch of this feature in a major product is a signal that other browsers can take that persisting a prefetch across a navigation is worthwhile. That sort of feedback about what works and what's important is very helpful to the standards process, and very much aligned with the spirit of rough consensus and running code.
Abuse of standards, to me, looks more like intentionally breaking compatibility with other browsers or implementing features that are easy for one party to implement and hard for anyone else to. For example, ActiveX was problematic in part because it was straightforwards to implement on Windows and a nightmare to try to implement anywhere else. This forced other browsers to either make their non-windows users second class citizens, or fall behind on feature parity.
I work at google, but as a ground level engineer working on internal tooling, not on Chrome or Search or anything. My views here are my own.
Or to look at it another way, Google made their search experience faster on platforms they control Android/Chrome, but slower (or normal speed, whatever you want to call it) everywhere else. I'm pretty sure if MS did that they'd be (rightfully) criticized for it.
I think this is just a work-around for the sloppiness of the web. If all the resources for a page were compiled into a single file and sent all at once, this wouldn't be necessary, but that'd be inefficient to for subsequent page requests.
Sites that want to get the same speedup can make sure they don't have any secondary resources that block page rendering.
Finally, the particular mechanism, link rel="prefetch" is used by Bing and IE 11 [1]. Google has just found a way to prefetch even earlier than normal, by inserting the prefetch links into the search page as soon as the user clicks.
> I think this is just a work-around for the sloppiness of the web. If all the resources for a page were compiled into a single file and sent all at once, this wouldn't be necessary, but that'd be inefficient to for subsequent page requests.
The benefit of the web was that you didn't have a fat GUI locally. With the push to aggregate assets together and get the entire UI/logic into the client browser, cached, and read off of remote services, we're slowly making our way back to local GUI apps. This time, the browser is the OS (forgive the poor analogy).
I don't think this offers an "incompatible experience" - my reading of the post is that the experience is fully compatible and that users of non-Chrome browsers will still be able to use Google Search. Currently, some/all non-Chrome browsers won't do the extra prefetches.
Well, they do have snippets from Wikipedia and the like. Bing (I believe) had the magnifying glass tool that would show you a thumbnail of the result on hover. Google came out with something similar for a bit--you'd click a result and it would pull up a thumbnail(?) to the right. That may still be a thing, actually.
Other then search engines what type of sites gain any benefit from this?
For external links, if you aren't a search engine, you don't know what resources need to be prefetched and even if you did you will have no way of knowing when it changes (other then manually).
For internal links, in most cases the resources are already cached and http 2.0 server push is going to fix the rest.
Beyond that, the API looks clunky - instead of having a "prefetch" attribute on a link, you need to add more links with special syntax to the header dynamically.
What's the point in adding this functionality to a browser? this looks like an implementation specifically designed to make only google search faster.
No, HTTP/2 has no effect on this. The insight here is that we're initiating the fetch for the HTML and its critical resources in parallel... which requires that the page initiating the navigation knows which critical resources are being used on the target page.
But isn't HTTP/2 push restricted to same-origin content? Critical resources may not be same-origin, so I'd expect this technique to have some utility even when HTTP/2 is fully deployed on clients and servers and fully utilized.
Actually, you're both right. With http/2 the server can push critical assets delivering similar results. But, that requires that the server supports http/2 and is smart enough to initiate the push, AND those resources are same-origin.
The benefit of above technique is that it's deployable today, doesn't require the destination server to be upgraded, and works for cross-origin resources.
Cross-origin could be an HTTP server itself serving content from a different origin via a push channel (which it could do either because the different origins share servers -- which can occur -- or by having, e.g., prefetched the data itself from the foreign server and pushing it.)
HTTP/2, I'm pretty sure, doesn't allow this (and there are all kinds of reasons it wouldn't be a good idea), but it wouldn't necessarily require forcing the other server to push the content.
HTTP/2 won't help with connections to a previously-unused server – you'd still have to take the initial connection latency, although after the initial request an optimized endpoint would be able to push render-blocking resources out before the browser parses the page and requests them.
is 0.1 seconds improvement a big deal? Especially on mobile/g3 that is lost in the noise. By comparison, pages right here on HN routinely take 10+ seconds to load for me, even on a gigabit uplink.
> Marissa ran an experiment where Google increased the number of search results to thirty. Traffic and revenue from Google searchers in the experimental group dropped by 20%.
> Ouch. Why? Why, when users had asked for this, did they seem to hate it?
> After a bit of looking, Marissa explained that they found an uncontrolled variable. The page with 10 results took .4 seconds to generate. The page with 30 results took .9 seconds.
> Half a second delay caused a 20% drop in traffic. Half a second delay killed user satisfaction.
This feels like a situation where we found an answer, and extrapolated to say it must be the answer.
The article does at least have plenty of examples. I just can't help but think some of these are heavily confounded with "changes cause people to change." That is, I'd be curious to know if any of the tests did nothing other than increase latency.
The increase from 10 to 30 results, for example, had to have changed the look of the page. Would that alone have been enough to change behavior? My hypothesis is that it would be. Especially if there was a viable alternative that was still familiar to the user. Can't fathom by how much, though.
if you like this topic you might also be interested in a recent HN post of mine, that did not get much attention, on the topic of all the various possible techniques or patterns we can draw from in order to improve performance (eg. lower latency, increased throughput) or scalability:
Posting from a throwaway account since I work on a competing browser.
I think Google needs to check its steps quite carefully when doing things like these. For quite some time they have leveraged their search monopoly (think about their EU search market share) to bring search/browser-type integration features to chrome first. I would say this is abusing a monopoly in one market segment (search in the EU) to attempt to create a monopoly in another segment (browsers in the EU) by continually making sure that Chrome is the browser that works better than other browsers when using Google search services.
Yes, this is innovative, but there is also a concept known as antitrust laws. Another way of bringing this to the market would have been to invite competing browsers to use this and build a credible time plan for a simultaneous launch for all the browsers that wanted to support this.
Perhaps their implementation differs, but they even showed the JS they're using to perform the prefetch in the post. It doesn't seem like they're trying to hide anything.
They kept the fact that they were going to deploy this on the search service that has a monopoly on search in EU secret until it was launched in Chrome. Before this, this link prefetching has seen very little use in the wild.
This statement, as written, is false.
In both the US and the EU, it is only illegal if you use certain techniques to accomplish it, and only then, if it has actual anticompetitive effects.
For example, Microsoft performed a technique known as tying.
But even the claim was not simply "they shipped IE with Windows 98" , or that they introduced other product features to work well with IE first, but "they made IE deliberately difficult to remove, and deliberately and intentfully made it harder for netscape navigator to work". This is not the same as "we made IE the best, and did nothing to competitive products". In particular, it is not the fact that they introduced stuff to IE first, it is the fact that they deliberately harmed the other products.
Even then, the court held the tying should be analyzed deferentially, and that the US would have to prove this had actual anticompetitive effect.
See in particular, the court's admonition at 93
"As a general rule, courts are properly very skeptical about claims that competition has been harmed by a dominant firm's product design changes. See, e.g., Foremost Pro Color, Inc. v. Eastman Kodak Co., 703 F.2d 534, 544-45 (9th Cir. 1983). In a competitive market, firms routinely innovate in the hope of appealing to consumers, sometimes in the process making their products incompatible with those of rivals; the imposition of liability when a monopolist does the same thing will inevitably deter a certain amount of innovation. This is all the more true in a market, such as this one, in which the product itself is rapidly changing. See Findings of Fact p 59. Judicial deference to product innovation, however, does not mean that a monopolist's product design decisions are per se lawful. See Foremost Pro Color, 703 F.2d at 545; see also Cal. Computer Prods., 613 F.2d at 739, 744; In re IBM Peripheral EDP Devices Antitrust Litig., 481 F. Supp. 965, 1007-08 (N.D. Cal. 1979)."
Note that these are also tying between sold products and given away products, not justgiven away products. Otherwise, open source linux distributions with large market share would have tying issues (and in fact, they've been unsuccessfully sued for illegal competition before)
As far as I can tell, synergies between your products has been 100% OK since the dawn of time, even if one or both of your products has monopoly status. The anti-trust cases come when you start locking out competitors.