This topic contains 2 replies, has 2 voices, and was last updated by admin 8 years, 1 month ago.
-
AuthorPosts
-
September 5, 2016 at 5:03 pm #73210
Hello,
I am looking for any hints that will improve the speed of the calendar. The search fields in my data source (DateStart, DateEnd, TimeStart, TimeEnd, Resource, etc.) are indexed = All. The speed loading the data seems variable, between 3 and 10 seconds.
Thanks
-
September 6, 2016 at 12:32 pm #73216
Thanks for the question. There are a few things you can look at.
- The absolute biggest slowdown we’ve seen is complicated unstored calculations on your Data Source layout (the layout you reference in soSIMPLE Calendar Settings)
- Unstored calculations as part of the search criteria (such as searching on a field with the calc “list(resources)”) could be very slow.
- Any data on the layout will need to be retrieved, even if it isn’t being used on the calendar. If you can run automated scripts on your server to move unstored data into stored fields, that would likely help the speed a lot. Don’t forget to remove the unstored version from the layout.
- The only fields you need on the data source layout are the ones that show up in your Data Source settings or in the URL to filter the calendar. Optimally, everything else should be removed from that layout.
- Every time you redraw the calendar, or navigate to different week (by default), the server is queried.
- For example, if you navigate four weeks in the future by clicking the “next” arrow, each week you pass will query from the server. So you may get four queries to get to the fourth week.
- Navigating using the drop-down calendar or the navigation calendars will bypass this.
- You can also control how much data is retrieved at once by changing Options > How much data > from the default “week” to either “day” or “month”. This can change perceived slowness by loading a month at a time, for example, so navigating to adjacent weeks won’t send another query.
- You can add a data source filter by defining a field to limit your initial found set. This field is set in Data Source > Show Only Records Flag
- Startup scripts for your solution can also slow you down. Every time you create a new connection to the server, you run the solution’s startup script. You can bypass that by adding an exit clause right at the top of the solution startup script that says
if [LeftWords (Get(ApplicationVersion);1) = “Web” and Get(SystemPlatform)≠4]
Exit (true)
End if
- If you’re using Advanced Server-Side scripts, you have to be very careful how they’re constructed so that they don’t hang in a loop, accidentally return your entire data set, or do other time consuming tasks like sorting or summarizing.
- If you’re NOT using Advanced Server-Side scripts make sure you haven’t selected one in the Data Source setup.
- The absolute biggest slowdown we’ve seen is complicated unstored calculations on your Data Source layout (the layout you reference in soSIMPLE Calendar Settings)
-
October 21, 2016 at 5:46 pm #73405
Another advanced tip:
We heard of one developer who increased speed by creating an “interface” file for soSIMPLE. I put “interface” in quotes because it’s not an interface file as we have come to understand it, since no end-user ever actually sees the file.
Here’s what he did, which in his particular situation, improved his speed significantly enough to be worth the effort:
- He created an empty FileMaker file
- Created a file reference the main data file where the soSIMPLE events live.
- Added a single table occurrence for the events (in the other file). The only table occurrence in the entire file is the events table used for soSIMPLE.
- Pointed the data source setup in soSIMPLE Calendar Settings to the new streamlined file.
- Made sure the account defined in data source setup was set up in both files, and that PHP extended privilege was checked for this account on both files.
It appears that the smaller overhead in opening that file was able to increase the speed of the calendar overall.
-
AuthorPosts
You must be logged in to reply to this topic.