Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision f64972cc

Von Moritz Bunkus vor etwa 2 Jahren hinzugefügt

  • ID f64972cc12355f3cc877a577a1a0c0ebec80e036
  • Vorgänger a82e64e7
  • Nachfolger aa0405fa

CSS/JS-Caching: immer neuladen durch Verwendung von Git-Revision oder kivitendo-Version

Ist [debug] → »auto_reload_resources« gesetzt, so wird weiterhin in
jedem Request neu geladen (für Entwicklerinstallationen).

Ist der Parameter aber nicht gesetzt, so wird nun immer versucht, die
aktuelle git-Revision in Erfahrung zu bringen (den Parameter
»git_reload_resources« gibt es nicht mehr).

Schlägt dies fehl, wird die kivitendo-Version genommen.

Unterschiede anzeigen:

SL/Layout/Base.pm
3 3
use strict;
4 4
use parent qw(Rose::Object);
5 5

  
6
use SL::Version;
7

  
6 8
use File::Slurp qw(read_file);
7 9
use List::MoreUtils qw(uniq);
8 10
use Time::HiRes qw();
......
47 49
  return grep { $_ } ($_[0]->sub_layouts_by_name->{$_[1]});
48 50
}
49 51

  
50
sub init_auto_reload_resources_param {
51
  if ($::lx_office_conf{debug}->{auto_reload_resources}) {
52
    return sprintf('?rand=%d-%d-%d', Time::HiRes::gettimeofday(), int(rand 1000000000000));
53
  }
52
sub _current_git_ref {
53
  my $git_dir = SL::System::Process::exe_dir() . '/.git';
54 54

  
55
  if ($::lx_office_conf{debug}{git_commit_reload_resources}) {
56
    my $git_dir = SL::System::Process::exe_dir() . '/.git';
55
  return unless -d $git_dir;
57 56

  
58
    return '' unless -d $git_dir;
57
  my $content = eval { scalar(read_file($git_dir . '/HEAD')) };
59 58

  
60
    my $content = eval { scalar(read_file($git_dir . '/HEAD')) };
59
  return unless ($content // '') =~ m{\Aref: ([^\r\n]+)};
61 60

  
62
    return '' unless ($content // '') =~ m{\Aref: ([^\r\n]+)};
61
  $content = eval { scalar(read_file($git_dir . '/' . $1)) };
63 62

  
64
    $content = eval { scalar(read_file($git_dir . '/' . $1)) };
63
  return unless ($content // '') =~ m{\A([0-9a-fA-F]+)};
65 64

  
66
    return '' unless ($content // '') =~ m{\A([0-9a-fA-F]+)};
65
  return $1;
66
}
67 67

  
68
    return '?rand=' . $1;
69
  }
68
sub init_auto_reload_resources_param {
69
  my $value;
70

  
71
  $value   = sprintf('%d-%d-%d', Time::HiRes::gettimeofday(), int(rand 1000000000000)) if $::lx_office_conf{debug}->{auto_reload_resources};
72
  $value ||= _current_git_ref();
73
  $value ||= SL::Version->get_version;
70 74

  
71
  return '';
75
  return $value ? "?rand=${value}" : '';
72 76
}
73 77

  
74 78
##########################################
config/kivitendo.conf.default
384 384
# the web browser to always reload the resources.
385 385
auto_reload_resources = 0
386 386

  
387
# Alternative to auto_reload_resources. If the installation dir is under git
388
# version control, this will use the HEAD commit sha1 as the random GET
389
# parameter, so that resources are reloaded if the installed version charnges.
390
git_commit_reload_recources = 0
391

  
392 387
# If set to 1 each exception will include a full stack backtrace.
393 388
backtrace_on_die = 0
394 389

  

Auch abrufbar als: Unified diff