If this means "two float values (and something else, blah blah)", then the best way is to compute the two values on the CPU and set them as uniforms. Use an UBO if you will.
needs two float values with some additional information for every fragment
If this means "two float values that depend on something else which varies for every fragment" then the best way remains a lookup texture, for two reasons: First, SSBO has functionality that you do not need (writeable, atomic ops, etc.). Second, SSBO is not yet widely supported (not everyone has latest-generation hardware!). Which means by using SSBO, you lock out potential customers for a reason that doesn't make sense to you.
Note that an uniform buffer object will (assuming it's not huge) likely be in dedicated read-only memory on some architectures (e.g. Kepler), which is equivalent to being permanently in L1 cache without using up L1 cache.