Difference between DRUPAL_CACHE_PER_PAGE and DRUPAL_NO_CACHE
DRUPAL_NO_CACHE doesn't cache the item, ever.
DRUPAL_CACHE_PER_PAGE caches the item per page url -- this is useful for example if the block changes with a url context.