New Cache strategy: Only cache the attributes of AMS

New Cache Strategy: Only cache the attributes of AMS

I think It's better to manage attributes only for AMS.

example:

imagine we have an AMS A, which contain AMS B, which contain AMS C.

```
If I fetch json from A, 
It will read A's attributes cache + B's result
B's result = B's attributes cache + C's result
C's result = C's attribute cache

therefore, it can manage cache by itself object and reusing the cache as far as possible

If B's cache expired, C's cache and A's cache is still work, it will lead to as little computation as possible
```

*Beside, It will detect the AMS class's change and automatic expired the cache.*