views:

579

answers:

8

I want to display a user's latest Tweets on a webpage while maintaining the ability to style the Tweets with custom CSS and also maintaining good page load speed.

I have managed to display the latest Tweets in 2 ways.

  1. Using the PHP Twitter library (by Aaron Brazell). By using this method, my PHP code has to wait for a response from Twitter before my page can be completed and sent to the client. This could cause the page load time to be quite unpredictable and more than likely slow down the page load enough to be annoying to users.

  2. Using the Blogger Twitter Widget, the latest Tweets are loaded using JavaScript after the rest of the page has loaded. This way user's don't have to wait for Twitter response before they can view the page.

I would like to know if there are any other pro's and con's to using these different methods to display a user's latest Tweets, and also if there is perhaps another solution I can look into which will enable custom CSS styling and provide good page load performance?

Also, how do these 2 methods influence the way Twitter applies Rate Limiting? Using PHP I can cache the Tweets and therefore make fewer calls to Twitter, while using JavaScript this is not possible as far as I know?

A: 

My opinion - do in in client side.

  1. Why wasting you CPU time on this? Let the client handle this.
  2. Google will index it, and when the user browses there he will see something different.
elcuco
+9  A: 

You can have custom CSS styling in both ways, so this shouldn't be a problem

  1. when using PHP api, try to cache all the info you need and put it in eg. Database (and query twitter every 5-10 mins., or run update script through cron - since I last checked there is a limit on queries in twitter you can perform on a specific time basis)

  2. by using Javascript to update tweets you disable web spiders to index these tweets on your page (also disabled people usually don't have JS enabled... )

EDIT

Also note, that you will need more PHP coding to implement caching, but this is a very nice coding experience (on the other hand it is easy to implement a JavaScript script to fetch such things as updates from twitter)

Twitter API Rate Limiting

As read on twitter.api: Twitter limits REST requests to 150 requests/hour (using IP based rules or counting requests for authenticated API usage)

GET requests like fetching twitter feeds, timelines through rest api do count

POST requests like updating statuses do not count

Account rate limit status available at http://twitter.com/account/rate_limit_status.format where you can check how many request you can do in specified time limit

Juraj Blahunka
+1. I like the cron (or general caching) idea.
Franz
5 minutes might even be unnecessary. Since we seem to be talking about a single user, I don't think updating the cache that often will be necessary.
Franz
agreed, but the time to run a recache is easy to change when implemented properly :)
Juraj Blahunka
That's true again.
Franz
Thanks juraj.blahunka, I like your PHP solution with caching. As you say, once implemented the update frequency can be set easily depending on how often a user posts new Tweets.
sizeight
+3  A: 
  1. Pro: Absolutely independent from users' settings. Con: What you said - if Twitter is slow, your site is slow + an extra lot of requests from your server -> increased server load etc.

  2. Pro: Less work for your server - load speed is only dependent on your server's speed. Con: Not everybody has JavaScript enabled and even then you might have an ugly delay in the Twitter stuff popping up.

I'd go for option #1, personally.

Franz
Depending on how you implement it, that "ugly delay" could delay loading an entire section of the page, or cause a big bit of content reflow after the new data arrives.
David Dorward
A: 

I'd go for a more flexible and stable approach:

Check for new tweets repeatingly in the background (eg. every 5 minutes) and store them in your database. So you have all your tweets on your own server. This also prevents your site from loading for ages when twitter is down. Not to mention it's also working when JS is disabled ;)

Con here is the delay, but you could decrease the sleep-time, but in fact I think 5 minutes is more than short enough.

When your visitor has JS enabled and you want it to be feeling a bit more live, you could update your tweet using some AJAX.

Nils Riedemann
A: 

I can't really add anything to what's been mentioned already.

PHP would be the best way to go, but do make sure you cache the results at regular intervals. You could simply parse your Twitter profile's RSS feed with any of PHP's built-in XML/DOM tree parsers to output in whatever format you need, and this style however you wish.

The disadvantage of using a JavaScript method to display tweets is, as aforementioned, it will not be crawled by search engine spiders and will not work for visitors with JavaScript disabled (naturally).

Martin Bean
A: 

Both, build the tweet list using PHP then have a simple jQuery plugin (or something similar) running client-side to keep it up to date.

  • Works for clients without JavaScript
  • Allows you to implement server-side caching
  • Google will index it (which might be good?)
Phil Sturgeon
+1  A: 

try using sweetcron. you can make it a cron job. It will fetch Twitter feeds and put them into database. so twitter refrence will not affect your pageload.

more details here: http://code.google.com/p/sweetcron/

Ashish Rajan
A: 

On my site, my solution is to load the page as normal, and then include some tickers to show that there is data still to come. I then have a PHP script accessed with AJAX that loads the data from Twitter and outputs it in a nice way - I haven't implemented caching because I have an extremely low volume of traffic, but I could in the future. I also have a <noscript> tag with an iFrame for those unusual people who are without Javascript!

I choose this method because it allows me to let the user see the page very quickly, but they can still see the tweets later.

Tim Rogers