Caching and Memory problems. What is best caching method
Sure. In my experience it's often better to cache individual entries, rather than whole pages, if the entries have a lot of relations to other elements. It's very resource intensive in Craft to figure out for instance if an image or entry relationship exists. And the more relations you have, the more frequent the cache would break. 

The project I'm currently working on has a lot of different landing pages with entry items that have a ton of different images and relations. So I have A LOT of this going on for every single entry in a landing page:

{% if article.commentator | length %}
  {% if article.commentator.first().profileImage | length %}
    {% set listImage = article.commentator.first().profileImage.first() %}
    ...
  {% endif %}
{% endif %}


I found that when I cached the whole page, it would break often, resulting in a serious performance hit. I changed my code to cache individual entries. The difference in load of the page as a whole was small, but the actual impact in percieved performance was huge. In a positive way. :)

I also use the same generated HTML on a lot of different pages, so I also made the caching of these items globally. I create a key that is unique for the different options the block could have. The final cache tag looks something like this:

{% cache globally using key ("article-grid-item-" ~ article.id ~ "-" ~ gridType ~ "-" ~ modifier ~ "-" ~ craft.config.environment) for 3 hours unless craft.config.templateCacheDisabled %}
...
{% endcache %}


But the only way to figure out which would be better is to test it on your project. All builds are different, and as far as caching is concerned, there are no simple answers. ;)

And... I also wish P&amp;T would make this easier/less resource consuming: {% if entry.image | length %} :)