Lotus – Profile Document Cache


Prelude

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”.

Reference:
SearchDomino – Is there a limit to number of profile documents an R6 server can support?
Breaking Par – Profile Document Warning
11TMR – Using profile documents in a web application

Similar blog post: Lotus Domino: SearchViewEntries agent


1 thought on “Lotus – Profile Document Cache

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料