-
MathType
-
WirisQuizzes
-
Nubric
-
CalcMe
-
MathPlayer
-
Store FAQ
-
MathFlow
-
BF FAQ
-
Miscellaneous
-
Wiris Integrations
Configure custom formula storage
Reading time: 2minUse this guide when you need MathType Integration Services to store formulas or rendered formula files outside the local filesystem. Typical use cases include cloud object storage (such as Amazon S3), shared storage, databases, or custom persistence mechanisms.
After completing this guide, MathType Integration Services will use your custom storage implementation instead of the default filesystem-based storage.
Before you begin
Requirements
Make sure you have:
- A working MathType Integration Services deployment.
- Access to the Integration Services configuration.
- A custom storage implementation compatible with your platform.
- Permission to deploy custom server-side components.
Applies to
Self-hosted MathType Integration Services.
Steps
Understand what MathType stores
MathType Integration Services store two different types of information.
| Data | Purpose | Can be regenerated |
|---|---|---|
| Formula storage | Stores the association between a formula digest and its corresponding MathML. | No* |
| Rendered formula cache | Stores generated images or rendered output for faster delivery. | Yes |
* Unless another recovery mechanism exists.
The rendered cache can always be regenerated by re-rendering the formulas. The formula storage is more critical. In deployments that use image save mode, it may contain the only server-side association between rendered formulas and their original MathML. If this information is lost, existing formulas may not be recoverable.
Most deployments do not need a custom storage implementation. The default filesystem storage is suitable for the majority of installations. Custom storage is typically used in enterprise environments that require shared storage, cloud object storage, or integration with existing persistence infrastructure.
Choose a storage backend
By default, MathType Integration Services stores both formula storage and rendered cache files on the local filesystem. You can replace the default implementation with a custom storage backend, for example:
- Amazon S3 or another cloud object storage service.
- Shared network storage.
- A database.
- A custom persistence mechanism.
Choose a backend that provides the availability, scalability, and backup strategy required by your deployment.
Implement a custom storage provider
Create an implementation of the storage interface for your platform. The implementation is responsible for storing and retrieving both formula storage data and rendered cache files.
See the Java API reference or .NET API reference for the available storage interfaces and implementation details.
Configure the storage implementation
Configure Integration Services to use your custom implementation by setting the wirisstorageclass parameter in configuration.ini.
See MathType Integration Services parameters for the supported values and configuration details.
Deploy the implementation
Deploy the custom storage implementation together with your MathType Integration Services deployment. Depending on your platform, this may involve adding a library, assembly, or custom component to the application.
Restart the application if required.
Verify the configuration
Verify that Integration Services are using the custom storage implementation. Insert a new formula and confirm that:
- Formula storage is written to the custom backend.
- Rendered cache files are stored in the expected location.
- Existing formulas can be retrieved successfully.
Verify it worked
Perform a complete editing cycle:
- Insert a new formula.
- Save the content.
- Reload the page.
- Edit the same formula again.
- Verify that the formula is retrieved correctly from the custom storage backend.
- Verify that rendered formulas continue to display correctly after restarting the application.
Options and variations
Amazon S3
Amazon S3 can be used as a storage backend by implementing the MathType storage interface. When using Amazon S3:
- Use a dedicated bucket or storage path.
- Configure the appropriate bucket name and region.
- Store credentials using your platform's recommended credential management mechanism rather than hardcoding them.
- Ensure the application has permission to read, write, and delete the required objects.
Sample implementations are available in the official WIRIS sample repository.
Other storage providers
The same extension mechanism can be used with other storage systems, including:
- Azure Blob Storage.
- Google Cloud Storage.
- Shared network storage.
- Databases.
- Custom storage implementations.
Common issues
Formulas cannot be recovered
Verify that:
- Formula storage is being persisted correctly.
- The custom implementation stores both formula metadata and rendered cache files where appropriate.
- Formula storage has not been removed during maintenance or migration.
The custom storage implementation is not used
Verify that:
-
wirisstorageclasspoints to the correct implementation. - The custom component has been deployed correctly.
- The application has been restarted if required.
Performance is lower than expected
Verify that:
- The storage backend provides acceptable latency.
- Frequently accessed rendered formulas are cached efficiently.
- Network connectivity to the storage backend is stable.