It is difficult to say how long it will take to create a capture, as not all of the time is actually used rendering the capture. For instance some time is also required to load the target website or HTML. To speed up screenshot rendering first check that you are not using a delay when generating screenshots.
Not only will specifying a delay increase how long it takes to create the capture it can also effect capture priority, in the unlikely event of a queue. Fortunately there are ways around this.
Next check, what retrieval method you are using to be notified that your capture is complete? The synchronous method, SaveTo is much slower than the asynchronous method Save. As the SaveTo method has to poll the GrabzIt every three seconds to determine if a screenshot is complete while the asynchronous method will call your callback URL as soon as the screenshot is ready.
Other techniques that can improve capture time include:
Another issue can be the time it takes to download a screenshot. First check the size of the captures you are producing, if they are large files you could try to improve the download time by doing one or more of the following:
Finally, if you control the page you are taking a screenshot of try to optimise it. This will take a little testing on your part, but could save you several seconds. Somethings to try includes compressing images, scripts and CSS or even embedding resources directly into the HTML of web page. This avoids separate requests when generating the web capture.
While many of the optimisations above can be implemented when using the JavaScript API, as JavaScript runs in the browser rather than the on server side there are a series of potential optimisations and problems unique to it.
Consider using the preconnect
technique. This will ensure that the DNS resolution and any required SSL handshake is complete before the first call to GrabzIt's API. To do this add the following code to the HEAD
tag of the HTML page where GrabzIt is being used.
<link rel="preconnect" href="https://api.grabz.it" crossorigin> <link rel="preconnect" href="https://grabz.it" crossorigin>
Note that if your website is HTTP
only, you will need to alter the above URL's to use http
and not https
.
If you are using JavaScript's DataURI method this will add an extra overhead compared to the server side API's as JavaScript has to read a image as bytes and convert it to a data URI.