diff --git a/Gemfile b/Gemfile index c9a27061d1dc..2818b0618fe3 100644 --- a/Gemfile +++ b/Gemfile @@ -5,6 +5,7 @@ gem 'jekyll' # Core plugins that directly affect site building group :jekyll_plugins do gem 'jekyll-archives' + gem 'jekyll-cache-bust' gem 'jekyll-email-protect' gem 'jekyll-feed' gem 'jekyll-get-json' diff --git a/Gemfile.lock b/Gemfile.lock index 98c191d96378..620b38c7cbda 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -116,6 +116,8 @@ GEM webrick (~> 1.7) jekyll-archives (2.3.0) jekyll (>= 3.6, < 5.0) + jekyll-cache-bust (0.0.1) + jekyll (>= 3.6, < 5.0) jekyll-email-protect (1.1.0) jekyll-feed (0.17.0) jekyll (>= 3.7, < 5.0) @@ -261,6 +263,7 @@ DEPENDENCIES httparty jekyll jekyll-archives + jekyll-cache-bust jekyll-email-protect jekyll-feed jekyll-get-json diff --git a/_config.yml b/_config.yml index 923db92af259..eb1163fd8337 100644 --- a/_config.yml +++ b/_config.yml @@ -209,6 +209,7 @@ keep_files: # Plug-ins plugins: - jekyll-archives + - jekyll-cache-bust - jekyll-email-protect - jekyll-feed - jekyll-get-json diff --git a/_plugins/cache-bust.rb b/_plugins/cache-bust.rb deleted file mode 100644 index 94d82d20b0a3..000000000000 --- a/_plugins/cache-bust.rb +++ /dev/null @@ -1,51 +0,0 @@ -# based on https://distresssignal.org/busting-css-cache-with-jekyll-md5-hash -# https://gist.github.com/BryanSchuetz/2ee8c115096d7dd98f294362f6a667db -module Jekyll - module CacheBust - class CacheDigester - require 'digest/md5' - require 'pathname' - - attr_accessor :file_name, :directory - - def initialize(file_name:, directory: nil) - self.file_name = file_name - self.directory = directory - end - - def digest! - [file_name, '?', Digest::MD5.hexdigest(file_contents)].join - end - - private - - def directory_files_content - target_path = File.join(directory, '**', '*') - Dir[target_path].map{|f| File.read(f) unless File.directory?(f) }.join - end - - def file_content - local_file_name = file_name.slice((file_name.index('assets/')..-1)) - File.read(local_file_name) - end - - def file_contents - is_directory? ? file_content : directory_files_content - end - - def is_directory? - directory.nil? - end - end - - def bust_file_cache(file_name) - CacheDigester.new(file_name: file_name, directory: nil).digest! - end - - def bust_css_cache(file_name) - CacheDigester.new(file_name: file_name, directory: 'assets/_sass').digest! - end - end -end - -Liquid::Template.register_filter(Jekyll::CacheBust) \ No newline at end of file