Statický export

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>

rfs-rule - Zde se dá nastavit cesta ve FS, kam se budou exportované soubory ukládat

 

Zdroje:

OpenCms dokumentace