Statický export je jednou z pokročilých vlastností OpenCms , která umožňuje razantní nárust výkonosti serveru. Během procházení zdrojů z Online projektu jsou vytvářeny kopie požadovaných souborů, které jsou ukládány na předem dané místo ve FS. K obsluze dalších požadavků na tento zdroj už nejsou potřeba dotazy do databáze a jejich zobrazení šablonou (celkem složitá práce), ale použije se uložený výstup v FS.
Nastavení statického exportu se nachází souboru opencms-importexport.xml. Výchozí podoba tohoto souboru:
<staticexport enabled="true">
<staticexporthandler>org.opencms.staticexport.CmsOnDemandStaticExportHandler</staticexporthandler>
<exportpath>export</exportpath>
<defaultpropertyvalue>false</defaultpropertyvalue>
<defaultsuffixes>
<suffix key=".jpg"/>
<suffix key=".gif"/>
<suffix key=".png"/>
<suffix key=".doc"/>
<suffix key=".xls"/>
<suffix key=".ppt"/>
<suffix key=".pdf"/>
<suffix key=".txt"/>
<suffix key=".css"/>
<suffix key=".zip"/>
<suffix key=".swf"/>
</defaultsuffixes>
<rendersettings>
<rfs-prefix>${CONTEXT_NAME}/export</rfs-prefix>
<vfs-prefix>${CONTEXT_NAME}${SERVLET_NAME}</vfs-prefix>
<userelativelinks>false</userelativelinks>
<exporturl>http://127.0.0.1:8080/${CONTEXT_NAME}/handle404</exporturl>
<plainoptimization>true</plainoptimization>
<testresource uri="/system/shared/page.dtd"/>
<resourcestorender>
<regex>/sites/.*</regex>
<regex>/system/galleries/.*</regex>
<regex>/system/modules/.*/resources/.*</regex>
</resourcestorender>
</rendersettings>
</staticexport>
Význam hlavních elementů:
staticexporthandler - definuje třídu, která se použije při exportu. OpenCms má několik tříd, které umožňují export:
resourcestorender - zde se regulárními výrazy nastavují zdroje, které budou exportovány.
Následuje složitější příklad konfiguračního XML, ve kterém je k provádění statického exportu zvolena třída CmsAfterPublishStaticExportHandler. Ta umožňuje velmi zajímavé úpravy nastavení, které mohou zrychlit hromadný export souborů.
<staticexport enabled="true">
<staticexporthandler>org.opencms.staticexport.CmsAfterPublishStaticExportHandler</staticexporthandler>
<exportpath>export</exportpath>
<defaultpropertyvalue>false</defaultpropertyvalue>
<defaultsuffixes>
<suffix key=".jpg"/>
<suffix key=".gif"/>
<suffix key=".png"/>
<suffix key=".doc"/>
<suffix key=".xls"/>
<suffix key=".ppt"/>
<suffix key=".pdf"/>
<suffix key=".txt"/>
<suffix key=".css"/>
<suffix key=".zip"/>
<suffix key=".swf"/>
</defaultsuffixes>
<rendersettings>
<rfs-prefix>${CONTEXT_NAME}/export</rfs-prefix>
<vfs-prefix>${CONTEXT_NAME}${SERVLET_NAME}</vfs-prefix>
<userelativelinks>false</userelativelinks>
<exporturl>http://127.0.0.1:8080/${CONTEXT_NAME}/handle404</exporturl>
<plainoptimization>true</plainoptimization>
<testresource uri="/system/shared/page.dtd"/>
<resourcestorender>
<regex>/sites/site1/.*</regex>
<regex>/system/modules/com.example.site1/resources/.*</regex>
<export-rules>
<export-rule>
<name>rule for site one</name>
<description>description of rule for site one</description>
<modified-resources>
<regex>/sites/site1/.*</regex>
<regex>/system/modules/com.example.site1/.*</regex>
</modified-resources>
<export-resources>
<uri>/sites/site1/</uri>
</export-resources>
</export-rule>
</export-rules>
</resourcestorender>
<rfs-rules>
<rfs-rule>
<name>rule for site one</name>
<description>description of the rule</description>
<source>/sites/site1/.*</source>
<rfs-prefix></rfs-prefix>
<exportpath>/apache/site1</exportpath>
<userelativelinks>false</userelativelinks>
<related-system-res>
<regex>/system/modules/com.example.site1/resources/.*</regex>
</related-system-res>
</rfs-rule>
</rfs-rules>
</rendersettings>
</staticexport>
Při použití této třídy platí několik pravidel:
export-rule - V subelementu modified-resources se nastaví v jakých zdrojích se bude sledovat změna. Pokud byl nějaký z definovaných objektů změněn (nebo vytvořen nový) budou exportováný zdroje které jsou specifikovány v elementu export-resources. Následují dva malé příklady
<export-rule>
<name>mysite-template</name>
<description>This rule will export all resources under /sites/mysite/,
if any resource under /system/modules/mymodule/template/ is modified</description>
<modified-resources>
<regex>/system/modules/mymodule/template/.*</regex>
</modified-resources>
<export-resources>
<uri>/sites/mysite/</uri>
</export-resources>
</export-rule>
<export-rule>
<name>mysite-news</name>
<description>This rule will export the index.html and the news.html files in folder /sites/mysite/,
if any resource under /sites/mysite/modules/news/ is modified</description>
<modified-resources>
<regex>sites/mysite/modules/news/.*</regex>
</modified-resources>
<export-resources>
<uri>/sites/mysite/index.html</uri>
<uri>/sites/mysite/news.html</uri>
</export-resources>
</export-rule>
rfs-rule - Zde se dá nastavit cesta ve FS, kam se budou exportované soubory ukládat
Zdroje:
OpenCms dokumentace