This year I’m being a student placement in a company, involving in IBM Lotus Domino application development. I’ve gone through some tasks about program development or enhancement, which I’ve faced many problems on Lotus Domino. Some of them may have solution, where some of them are the weakness of Lotus. I’ve spent a lot of time to explorer these issues, and hope that I can share my experience here, to save your time.
What’s profile document?
First, I’ll talk about the Profile Document Caching problem. Profile Document is very useful for developing domino application, as it can serve as setting documents which is cached in RAM, for fast access. Also, in web access, it has a advantage that using @GetProfileField have no field size limit (unlike @DBColumn or @DBLookup), that it is a quick solution to load large amount of text.
What’s profile document caching?
In Lotus Notes Client, profile document works excellent. Whenever you try to get information, either by @Formula or LotusScript, they works fine. But when comes to web, it’s a big headache. With information in SearchDomino, if user save a few version of profile document in a short period of time, the server may not return the latest version in HTTP request. Instead, it may randomly pick a version of profile document! Some users in the IBM Domino Forum joke that “Domino like dice”.
Why the cache is not updated
According to Breaking Par, when user updated the profile document in Notes Client, it won’t inform the HTTP engine that it is updated. Thus, the HTTP engine may still get the old version, not updating its cache.
How to walk around the cache
1. Best Solution – use @DBColumn or @DBlookup instead
The best solution is not using profile document. I understand that profile docuemnt has some advantage, but when it comes to the caching problem, it will makes you get mad. The simplest and cleanest solution is to create normal document, and make a view for it, and use @DBColumn.
2. Use WEB agent to remind the HTTP engine
Breaking Par suggest that we may remind the HTTP engine by making a WEB agent to open and save the profile document. I haven’t tried this method yet, but it seems that it should work. Breaking Par reminds that sometimes it won’t work, and still they also prefer not using profile document for safety.
3. Clearing cache in server console
Alternatively, if you are able to access the server console, you may try Matt White’s solution: clear HTTP cache by console command tell http clearcaches. It’s not necessarily manual, as you may create a BAT file and run C:\Domino\nserver.exe -c “tell http clearcaches”.
Similar blog post: Lotus Domino: SearchViewEntries agent