Generation
Creating and delivering content in FirstSpirit is based on the "pre-generation" principle. Wherever possible, the content is not first produced on the live system at the time of the user query (live rendering), but is instead already on the FirstSpirit server (i.e. in a less time-sensitive offline mode) for what is called "generation".
By default, a schedule entry is created with each project. The schedule entry is used to carry out full generation ("generate full" schedule) and partial generation ("generate partly" schedule). As with any schedule entry, these schedule entries an be managed via the project properties ("schedule management"). These schedule entries can also be started from JavaClient with the relevant configuration set ("Project" / "Generate project" or "Generate partial project" menu) if the corresponding permissions are present (see below).
In addition, individual generation schedules can also be set up in schedule management. Thus, specified start nodes can be defined for individual, project-specific generation (partial generation) or even a generation schedule that only includes the released changes to the last deployed project status (delta generation).
All generation options configured for a project can be started in JavaClient via the "Run schedule" menu item (as long as the editor has the permissions necessary for this).
Full generation
The purpose of a full generation is to generate the entire project. This process can be very time intensive, depending on the scope of the project. Therefore, using partial generation or delta generation is recommended for regular, smaller generation actions.
Generated content:
- all released page references from the site store are included as well as
- all released media that are referenced in the output of these page references.
Media that are not referenced in the project are not included in a full generation. |
Partial generation
The purpose of a partial generation is to generate certain subsection of a project quickly and accurately. Depending on the configuration, for instance, only certain start nodes, only certain media objects and/or only changed project content are included.
Generated content: The following are included:
- all released page references from the site store, starting from the specified start nodes,
- all released media that are referenced in the output of these page references, and
- all released media from the media store starting from the specified start nodes.
Media generation
In principle, this is a simple partial generation where only the start nodes from the media store are defined.
The purpose of a media generation is to enable faster deployment of individual partial sections. Saving the processor intensive media generation into separate partial generation schedule entries improves performance, especially when executing multiple small partial generation schedules, since for each generation only the desired media are included. However, this option is also suitable for deploying media in a remote project, for instance ("remote media").
Generated content: all released media from the media store are included, starting from the specified start nodes.
Delta generation
Typical partial generations use a simple strategy to reduce the scope of the generation. Not all of the (released) project content is generated; only the partial sections of a project that are currently being edited are generated instead. The disadvantages of these generation strategies are obvious. All content below the defined start nodes are always generated, regardless of whether they have actually been changed or not. Moreover, the generation of content in n partial sections of a project require the configuration and execution of n generation schedules.
Delta generation utilizes a more efficient generation strategy. It no longer involves generating complete projects or complete subtrees of a project, but rather only the released content that has actually changed since the last generation. The purpose behind the delta generation is to avoid unnecessary and time-intensive generation of unchanged content. The changes to the project state last (successfully) generated are determined by the FirstSpirit Developer API. To do this, a script (action:“script”) must be activated before the actual generation (action: “generate”).
Developer API documentation:
Detailed instructions on configuring a delta generation and a sample script for determining changes in a project are described in the FirstSpirit Community:
A delta generation is only possible for projects that use the release function (the "Use Release function" option in the project settings must be enabled). |
Generation directory
By default, generated project content is stored by FirstSpirit Server in the default generation directories (fs5staging, fs5preview and fs5webedit) or in local project generation directories such as the following:
for content (without media): fs5staging / project ID / schedule ID / language channel_presentation channel / project structure
for media: fs5staging / project ID / schedule ID / media / language channel / project structure
- Project ID: When a project is created, this ID is assigned to it automatically by the system. It can be found in the project overview of the Server and Project Configuration application, for instance.
- Schedule ID: The system assigns this ID automatically to a schedule when the schedule is created. The default schedules for full or partial generation are included in every newly created project. The schedule ID can be found in the overview of schedules in the project properties ("schedule management") or in a schedule itself, for instance.
- Language channel_presentation channel: A subdirectory is created for each project language (see "Project properties" / "Languages"). The abbreviated code created in the project properties is used as the identifier. If several presentation channels are present (see "Project properties" / "Template sets"), a directory is created for each presentation channel in each language. When this is done, an abbreviated code is appended to the language code for the particular presentation channel, separated by an underscore; for example: de_1.
However, this method greatly depends on the selected URL creator: default URLs (de, de_1, en, en_1), infix URLs (abc.de.html, 1/abc.de.html, abc.en.html, 1/abc.en.html), advanced URLs (MeinTitel.html, MeinTitel-1.html, MyTitle.html, MyTitle-1.html). In addition, a distinction is made between language-dependent and language-independent media: media/de/abc.jpg, media/en/abc.jpg vs. media/bcd.jpg
For more information, see Generating default URLs and Advanced URLs. - Project structure: The hierarchical structure of the site store is recreated under the language/presentation channel directory: a directory is created for each released folder in the site store ("menu level"); these directories contain the released page reference(s). The hierarchical structure of the media store is recreated under the "media" folder: a directory is created for each release folder in the media store; these directories contain released media. In the case of language-dependent media, each language receives its own directory where its respective media are placed.
Example:
for media: .../fs5staging/11599/11640/media/en/media_folder/picture.jpg
for content: .../fs5staging/11599/11640/en_1/menuelevel_1/page.html
The generation directories can be adapted to specific projects. The structures depend on the individual project configuration and may vary from the structures shown here. |
Access to these generation directories is protected, which means that when calling this content, user authentication is required, as long as it has been configured. |
Permissions
In order to carry out full generation actions, server or project administrator permissions are required as standard. Otherwise, the "Generate project" and "Generate partial project" submenus are disabled under the "Project" menu in JavaClient.
For an editor without administration permissions to be permitted to start a full and/or partial generation, he (or alternatively, a group) must be selected in the schedule properties of the "Interactive execution" area.