it the content file it says 59651,61 but with boost r/w to false it gets 59628,14?
here is a catch to consider. since boost is using the default kirby caching logic all keys are prefixed with domain. so if your frontend is www.domain.com and your api at api.domain.com you will get invalid results because the api is reading from its cache. and the panel behind www will read another one. and boost has no way of clearing both caches (for now).
i am confident that boost has no major issues here so it must be a semi broken caching state. like boost not setting the modified timestamp when the price changed for some reason.
also boost stores the modified dates of content files only on hooks (by default, can be changed in config)… so if you edit a file in the editor it wont know about that.
please try calling a page->update on the price and vardump the value of the price before and after that. also add vardumps to ModelHasBoost methods for cache read and write to see whats going on.
since you are using an api vardumping is not ideal. maybe you could log these to a file or use a tool like rayapp.
That state where the modified timestamp could not be read happened to me in my tests as well thus the if clause but its hard to replicate. Multiple file access in rapid succession, locked content file from kirby (?), not flushed timestamp on harddisk level…
But the fix should at least avoid invalid states now. Thanks for pointing out that issue.
i am out of my wits. unless you send me a reproducable example i dont know how to help you here. you could also contact me via discord and we could arrange for a screenshare if you dont want to send me any code.
i think the issue stems from non-translatable fields. those set to translate: false in the blueprint. the cache will check the language specific modified timestamp (using $page->modified()). but that does not reflect any changes you made on non-translatable fields in your default language. changing these does NOT update the modified timestamp of the other content files.
what you need to do is either
update lapse plugin - pushed a fix a few minutes ago or
add $page->modified(kirby()->languages()->default()->code()) to every cache key. you need to add so the key will reflect both language from request and default language