Sleepmode solution for Wireless switch using esp8266

I have a esp01 and it works like a wireless switch.

When i click an momentarily button it checks a variable.
That variable shows the last command sent : on or off.
If it's on it sends off command, if it's already off its sends on command.

  1. Assuming that the mcu is on deepest sleep: how can I wake up the microcontroller just by pressing the same momentarily switch? The same switch that turns the variable

  2. I know that you can store data in some memory and when the mcu turn on again it can check the stored data . Dont know how to do that.

  3. Wich is the best state or how should I modify the code to save energy. I need to make the device portable and last long on battery.