1) When working with lots of data, first search to get the HREFS of the items, then use the HREFS to work with the individual items. The batch processing verbs (BPROPFIND, BPROPPATCH, etc) work well with these. -this will usually give much better performance.
2 When at all possible, use of batch methods: BPROPFIND, BPROPATCH, etc.
3) Don't “SELECT * ” when doing searches. This is costly performance wise. Only retrieve back what you need.
4) Sniff OWA to see how it does its searches and the types of WebDAV calls it does.
5) Avoid searching non-indexed fields.
6) Indexed fields have urn:schemas-microsoft-com:exch-data:isindexed set to true.
7) Authentication communication:
a) Firewall, exchange virtual directory and authentication method being used need to be lined-up for optimal performance.
b) Have the virtual directory used in the DAV call support only the protocol you are using.
If the virtual directory has both windows and basic authentication turn on and port 88 is blocked, you will run into a delay.
c) If you use the XML DOM, you should use the XMLServer HTTP and not INet (client) if the DAV code is running from a server. SSL has a slight slowing effect.
d) Asynchronous vs Synchronous communication: Asynchronous will have higher performance and will help avoid lockups when the DAV processing is taking a long time. Synchronous is easier to write and debug.
e) Network issues can slow calls.
8) In terms of speed in doing the calls, you should get the best performance with .NET, followed by the XML DOM and then SAX
9) .NET has additional Credential Caching capabilities and has additional authentication settings - see the PreAuthenticate property of the web request for more information.
10) You may want to consider using full text index searches. Below is an article covering this.
XWEB: How to Perform Full-Text Searching Using WebDAV
http://support.microsoft.com/?kbid=259849
11) Limit search criteria;
12) Sort on the client and not in the WebDAV Search.
13) Firewalls, proxies and antivirus can slow down searches. Try running directly on the server and note the performance difference.
No comments:
Post a Comment