You could use Custom Setting to store the token and its expiration period.
So next time you need it,you can retrieve the value from the Custom setting and validate its expiration.
if it has expired,you can call the site and update the token and its expiration period and use it.
Setup Custom Setting: (click here to know more)
1)Go to setup -> Develop -> Custom Settings
2)Click New ->
Object Name = Site_Setting (for example)
label = Site Setting
Setting Type = List
Visibility = Public(if you are using for managed package,then use Protected)
3)After creating the Custom setting,Click Manage to create fields to store token and its expiration period
Access the custom setting in Apex:(click here to know more)
Create a custom setting data to store the necessary values:
Site_Setting__c setting = new Site_Setting__c(Name = 'Site Token',Token__c='xxxx',Expiration_Period__c='xxxx');
insert setting;
To access it next time:
Site_Setting__c cs = Site_Setting__c.getInstance('Site Token');
// you then have access to cs.Token__c and cs.Expiration_Period__c
For more info on usage, you can refer this awesome Tutorial on custom setting by jeff.