I'm going to reference my answer to a different question:
Chrome has an awesome built-in diagnostic tool, "about:net-internals", which is designed to help troubleshoot network problems. In particular, it has an "Events" tab which lets you specify a URL and then Chrome breaks down the entire process of loading it, step-by-step, including DNS resolution, cache hits, and AJAX element requests.
In this case I'd suggest having your client install Chrome on their machine and then perform a test on your website. The logging data will indicate where the time is spent. In particular, to diagnose a slow internet connection at the client's end, I would look for the following red flags:
- Taking a long time to start the initial connection. The time from when the client clicks the button and the browser begins to open a connection to your website, to the first bit of response from your server, is usually limited by the client's internet connection. Especially if the client has poor upload speed or a lot of uploads going on on his network (say if somebody is running a file sharing program); either of those can create a substantial delay in starting a connection.
- Files transferring slowly. You'll be able to see how large each file is and exactly how much time it takes; you can tell if they're taking longer than they ought to. Also, if files are transferring slowly, you should be able to determine whether the issue is more with smaller files spending a lot of time waiting to start transferring, or perhaps with larger files that never reach a high bandwidth.
- Slow DNS resolution. The client's computer or network may have a bad DNS server configured, so that whenever he tries to visit your site, his computer looks up
www.yoursite.com
in DNS and has to wait a few seconds for that lookup to fail before trying again elsewhere. This can introduce a very significant delay on accessing a wide variety of sites, which then vanishes on a page reload (since the DNS lookup has already been done and the result saved).
One of the nice things about using this tool to troubleshoot is that you can then provide the client with an annotated log as evidence that you're not at fault (presuming that does wind up being the case), so that they have something solid to use when confronting their ISP.