innoweb/silverstripe-prefix-requirements

Adds a file hash prefix to all requirements. Replaces the default ?{mtime} suffix to make the requirements fully cacheable.

Installs: 1 535

Dependents: 0

Suggesters: 0

Security: 0

Stars: 2

Watchers: 5

Forks: 1

Open Issues: 0

Type:silverstripe-vendormodule

3.0.2 2023-03-19 13:08 UTC

This package is auto-updated.

Last update: 2024-12-08 07:44:38 UTC


README

Overview

Adds a file hash prefix to all requirements. Replaces the default ?{mtime} suffix to make the requirements fully cacheable.

Whenever a CSS or Javascript file is changed, a new prefixed version of the file is generated. This makes the files fully cacheable because whenever a change is made a file with a new URL is included in the HTML.

It is recommended to minify CSS files using Grunt or Gulp (or any other technique you might want to use).

Requirements

  • SilverStripe CMS 5.x

Note: this version is compatible with SilverStripe 5. For SilverStripe 4, please see the 2.x release line. For SilverStripe 3, please see the 1.x release line.

Installation

  1. composer require innoweb/silverstripe-prefix-requirements
  2. run dev/build

Usage

The prefixed files are generated and stored in the default CombinedFilesFolder of the Requirements_Backend class. You can use the following entry in your config.yml to specify where the generated files are stored:

SilverStripe\View\Requirements_Backend:
  default_combined_files_folder: '_your_folder'

Default is ASSETS_DIR . '/_combinedfiles'.

This module doesn't handle css and js in the CMS.

Because the files are moved to the configured CombinedFilesFolder, please make sure you only use paths relative to the website root for includes in your css and js files. E.g. /_resources/themes/yourtheme/images/icon.png, not ../images/icon.png.

You can exclude certain requirements from being re-written using config:

Innoweb\PrefixRequirements\Control\PrefixResourceURLGenerator:
  excluded_resources:
    - 'vendor/lekoala/silverstripe-debugbar/**/*'
    - 'vendor/jonom/silverstripe-betternavigator/**/*'

You can also change the format that is used for the hash and switch it to postfix instead of prefix:

Innoweb\PrefixRequirements\Control\PrefixResourceURLGenerator:
  nonce_style: [mtime|sha1|md5]
  use_postfix: true

License

BSD 3-Clause License, see License