I can confirm that adding the option last results in only cached results being shown.
Running strace does not reveal an obvious cache file:
$ strace -e trace=file iwlist wlan0 scanning last
execve("/usr/local/sbin/iwlist", ["iwlist", "wlan0", "scanning", "last"], [/* 27 vars */]) = 0
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/usr/local/lib/libiw.so.29", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
wlan0 Scan completed :
Cell 01 - Address: 00:E1:6D:63:57:47
Channel:1
Frequency:2.412 GHz (Channel 1)
Quality=53/70 Signal level=-57 dBm
Encryption key:off
ESSID:"WorkVisitor"
Bit Rates:5.5 Mb/s; 6 Mb/s; 9 Mb/s; 11 Mb/s; 12 Mb/s
18 Mb/s; 24 Mb/s; 36 Mb/s
Bit Rates:48 Mb/s; 54 Mb/s
Mode:Master
Extra:tsf=000003a70067d7f9
Extra: Last beacon: 752737ms ago
IE: Unknown: 000B41524D4356697369746F72
IE: Unknown: 01088B0C129618243048
IE: Unknown: 030101
IE: Unknown: 0706555320010B1E
IE: Unknown: 0B0505005E8D5B
IE: Unknown: 2A0100
IE: Unknown: 2D1A2C181BFFFF000000000000000000000000000000000000000000
IE: Unknown: 3202606C
IE: Unknown: 3D1601000500000000000000000000000000000000000000
IE: Unknown: 7F080010000001400001
IE: Unknown: 851E09008F000F00FF0359004C41502D41432D322D303600000000000500003A
IE: Unknown: 9606004096000800
IE: Unknown: DD180050F2020101800003A4000027A4000042435E0062322F00
IE: Unknown: DD06004096010104
IE: Unknown: DD050040960305
IE: Unknown: DD050040960B09
IE: Unknown: DD080040961301003401
IE: Unknown: DD050040961404
+++ exited with 0 +++
Where are the cached results hiding? If I can find them, then maybe I can flush them.