new caching system to replace old page cache

This commit is contained in:
JT Smith 2006-04-05 20:46:57 +00:00
parent e12ff119af
commit e4392f7449
54 changed files with 718 additions and 167 deletions

View file

@ -13,6 +13,7 @@ package WebGUI::Asset::Wobject::Article;
use strict;
use Tie::IxHash;
use WebGUI::International;
use WebGUI::Cache;
use WebGUI::Paginator;
use WebGUI::Asset::Wobject;
@ -73,6 +74,14 @@ sub definition {
my %properties;
tie %properties, 'Tie::IxHash';
%properties = (
cacheTimeout => {
tab => "display",
fieldType => "interval",
defaultValue => 3600,
uiLevel => 8,
label => $i18n->get("cache timeout"),
hoverHelp => $i18n->get("cache timeout help")
},
templateId =>{
fieldType=>"template",
defaultValue=>'PBtmpl0000000000000002',
@ -139,6 +148,20 @@ sub prepareView {
}
#-------------------------------------------------------------------
=head2 purgeCache ()
See WebGUI::Asset::purgeCache() for details.
=cut
sub purgeCache {
my $self = shift;
WebGUI::Cache->new($self->session,"view_".$self->getId)->delete;
$self->SUPER::purgeCache;
}
#-------------------------------------------------------------------
=head2 view ( )
@ -150,6 +173,10 @@ returns the output.
sub view {
my $self = shift;
if (!$self->session->var->isAdminOn && $self->get("cacheTimeout") > 10 && !$self->session->form->process("overrideTemplateId") && !$self->session->form->process("pn") && !$self->session->form->process("makePrintable")) {
my $out = WebGUI::Cache->new($self->session,"view_".$self->getId)->get;
return $out if $out;
}
my %var;
my $children = $self->getLineage(["children"],{returnObjects=>1,includeOnlyClasses=>["WebGUI::Asset::File","WebGUI::Asset::File::Image"]});
foreach my $child (@{$children}) {
@ -201,7 +228,11 @@ sub view {
$var{description} = $p->getPage;
}
$p->appendTemplateVars(\%var);
return $self->processTemplate(\%var, undef, $self->{_viewTemplate});
my $out = $self->processTemplate(\%var,undef,$self->{_viewTemplate});
if (!$self->session->var->isAdminOn && $self->get("cacheTimeout") > 10 && !$self->session->form->process("overrideTemplateId") && !$self->session->form->process("pn") && !$self->session->form->process("makePrintable")) {
WebGUI::Cache->new($self->session,"view_".$self->getId)->set($out,$self->get("cacheTimeout"));
}
return $out;
}
1;

View file

@ -13,6 +13,7 @@ package WebGUI::Asset::Wobject::Collaboration;
use strict;
use Tie::IxHash;
use WebGUI::Group;
use WebGUI::Cache;
use WebGUI::HTML;
use WebGUI::International;
use WebGUI::Paginator;
@ -248,6 +249,14 @@ sub definition {
tableName=>'Collaboration',
className=>'WebGUI::Asset::Wobject::Collaboration',
properties=>{
visitorCacheTimeout => {
tab => "display",
fieldType => "interval",
defaultValue => 3600,
uiLevel => 8,
label => $i18n->get("visitor cache timeout"),
hoverHelp => $i18n->get("visitor cache timeout help")
},
approvalWorkflow =>{
fieldType=>"workflow",
defaultValue=>"pbworkflow000000000003"
@ -410,6 +419,14 @@ sub getEditForm {
my $self = shift;
my $tabform = $self->SUPER::getEditForm;
my $i18n = WebGUI::International->new($self->session,"Asset_Collaboration");
$tabform->getTab("display")->interval(
-name=>"visitorCacheTimeout",
-label=>$i18n->get('visitor cache timeout'),
-hoverHelp=>$i18n->get('visitor cache timeout help'),
-value=>$self->getValue('visitorCacheTimeout'),
-uiLevel=>8,
-defaultValue=>3600
);
$tabform->getTab("display")->yesNo(
-value=>$self->getValue('displayLastReply'),
-label=>$i18n->get('display last reply'),
@ -822,6 +839,20 @@ sub purge {
#-------------------------------------------------------------------
=head2 purgeCache ()
See WebGUI::Asset::purgeCache() for details.
=cut
sub purgeCache {
my $self = shift;
WebGUI::Cache->new($self->session,"view_".$self->getId)->delete;
$self->SUPER::purgeCache;
}
#-------------------------------------------------------------------
=head2 recalculateRating ( )
Calculates the rating of this forum from its threads and stores the new value in the forum properties.
@ -895,6 +926,10 @@ sub unsubscribe {
#-------------------------------------------------------------------
sub view {
my $self = shift;
if ($self->session->user->userId eq '1' && !$self->session->form->process("sortBy")) {
my $out = WebGUI::Cache->new($self->session,"view_".$self->getId)->get;
return $out if $out;
}
my $scratchSortBy = $self->getId."_sortBy";
my $scratchSortOrder = $self->getId."_sortDir";
my $sortBy = $self->session->form->process("sortBy") || $self->session->scratch->get($scratchSortBy) || $self->get("sortBy");
@ -942,7 +977,11 @@ sub view {
my $p = WebGUI::Paginator->new($self->session,$self->getUrl,$self->get("threadsPerPage"));
$self->appendPostListTemplateVars(\%var, $sql, $p);
$self->appendTemplateLabels(\%var);
return $self->processTemplate(\%var,undef, $self->{_viewTemplate});
my $out = $self->processTemplate(\%var,undef,$self->{_viewTemplate});
if ($self->session->user->userId eq '1' && !$self->session->form->process("sortBy")) {
WebGUI::Cache->new($self->session,"view_".$self->getId)->set($out,$self->get("visitorCacheTimeout"));
}
return $out;
}
#-------------------------------------------------------------------

View file

@ -1137,18 +1137,6 @@ sub www_process {
}
}
#-------------------------------------------------------------------
=head2 www_view ( )
Overwrite www_view method and call the superclass object, passing in a 1 to disable cache
=cut
sub www_view {
my $self = shift;
$self->SUPER::www_view(1);
}
1;

View file

@ -12,6 +12,7 @@ package WebGUI::Asset::Wobject::EventsCalendar;
use strict;
use Tie::CPHash;
use WebGUI::Cache;
use WebGUI::International;
use WebGUI::SQL;
use WebGUI::Utility;
@ -45,6 +46,14 @@ sub definition {
tableName=>'EventsCalendar',
className=>'WebGUI::Asset::Wobject::EventsCalendar',
properties=>{
visitorCacheTimeout => {
tab => "display",
fieldType => "interval",
defaultValue => 3600,
uiLevel => 8,
label => $i18n->get("visitor cache timeout"),
hoverHelp => $i18n->get("visitor cache timeout help")
},
templateId =>{
fieldType=>"template",
defaultValue=>'PBtmpl0000000000000022'
@ -116,6 +125,14 @@ sub getEditForm {
2=>$i18n->get(509),
}
);
$tabform->getTab("display")->interval(
-name=>"visitorCacheTimeout",
-label=>$i18n->get('visitor cache timeout'),
-hoverHelp=>$i18n->get('visitor cache timeout help'),
-value=>$self->getValue('visitorCacheTimeout'),
-uiLevel=>8,
-defaultValue=>3600
);
$tabform->getTab("display")->template(
-name=>"templateId",
-label=>$i18n->get(94),
@ -198,9 +215,27 @@ sub prepareView {
}
#-------------------------------------------------------------------
=head2 purgeCache ()
See WebGUI::Asset::purgeCache() for details.
=cut
sub purgeCache {
my $self = shift;
WebGUI::Cache->new($self->session,"view_".$self->getId)->delete;
$self->SUPER::purgeCache;
}
#-------------------------------------------------------------------
sub view {
my $self = shift;
if ($self->session->user->userId eq '1' && !$self->session->form->process("calMonthStart") && !$self->session->form->process("calMonthEnd")) {
my $out = WebGUI::Cache->new($self->session,"view_".$self->getId)->get;
return $out if $out;
}
my $i18n = WebGUI::International->new($self->session,"Asset_EventsCalendar");
#define default view month range. Note that this could be different from
#the range a user is allowed to view - set by the events calendar limitations.
@ -466,25 +501,15 @@ sub view {
<option value="'.(8+$calMonthStart).'">9 '.$i18n->get(561).'</option>
<option value="'.(11+$calMonthStart).'">12 '.$i18n->get(561).'</option></select>
<input type="submit" value="Go" name="Go" />';
#use Data::Dumper; return '<pre>'.Dumper(\%var).'</pre>';
my $vars = \%var;
return $self->processTemplate($vars,undef,$self->{_viewTemplate});
my $out = $self->processTemplate(\%var,undef,$self->{_viewTemplate});
if ($self->session->user->userId eq '1' && !$self->session->form->process("calMonthStart") && !$self->session->form->process("calMonthEnd")) {
WebGUI::Cache->new($self->session,"view_".$self->getId)->set($out,$self->get("visitorCacheTimeout"));
}
return $out;
}
#-------------------------------------------------------------------
=head2 www_view ( )
Overwrite www_view method and call the superclass object, passing in a 1 to disable cache
=cut
sub www_view {
my $self = shift;
$self->SUPER::www_view(1);
}
1;

View file

@ -16,6 +16,7 @@ package WebGUI::Asset::Wobject::Folder;
use strict;
use WebGUI::Asset::Wobject;
use WebGUI::Cache;
use WebGUI::Utility;
our @ISA = qw(WebGUI::Asset::Wobject);
@ -65,6 +66,14 @@ sub definition {
tableName=>'Folder',
className=>'WebGUI::Asset::Wobject::Folder',
properties=>{
visitorCacheTimeout => {
tab => "display",
fieldType => "interval",
defaultValue => 3600,
uiLevel => 8,
label => $i18n->get("visitor cache timeout"),
hoverHelp => $i18n->get("visitor cache timeout help")
},
templateId =>{
fieldType=>"template",
defaultValue=>'PBtmpl0000000000000078'
@ -88,6 +97,14 @@ sub getEditForm {
my $self = shift;
my $tabform = $self->SUPER::getEditForm();
my $i18n = WebGUI::International->new($self->session,"Asset_Folder");
$tabform->getTab("display")->interval(
-name=>"visitorCacheTimeout",
-label=>$i18n->get('visitor cache timeout'),
-hoverHelp=>$i18n->get('visitor cache timeout help'),
-value=>$self->getValue('visitorCacheTimeout'),
-uiLevel=>8,
-defaultValue=>3600
);
$tabform->getTab("display")->template(
-value=>$self->getValue('templateId'),
-label=>$i18n->get('folder template title'),
@ -124,9 +141,27 @@ sub prepareView {
}
#-------------------------------------------------------------------
=head2 purgeCache ()
See WebGUI::Asset::purgeCache() for details.
=cut
sub purgeCache {
my $self = shift;
WebGUI::Cache->new($self->session,"view_".$self->getId)->delete;
$self->SUPER::purgeCache;
}
#-------------------------------------------------------------------
sub view {
my $self = shift;
if ($self->session->user->userId eq '1') {
my $out = WebGUI::Cache->new($self->session,"view_".$self->getId)->get;
return $out if $out;
}
my $children = $self->getLineage( ["children"], { returnObjects=>1 });
my %vars;
foreach my $child (@{$children}) {
@ -164,18 +199,14 @@ sub view {
});
}
}
return $self->processTemplate(\%vars,undef,$self->{_viewTemplate});
my $out = $self->processTemplate(\%vars,undef,$self->{_viewTemplate});
if ($self->session->user->userId eq '1') {
WebGUI::Cache->new($self->session,"view_".$self->getId)->set($out,$self->get("visitorCacheTimeout"));
}
return $out;
}
#sub www_edit {
# my $self = shift;
# return $self->session->privilege->insufficient() unless $self->canEdit;
# $self->getAdminConsole->setHelp("folder add/edit","Asset_Folder");
# return $self->getAdminConsole->render($self->getEditForm->print,"Edit Folder");
#}
1;

View file

@ -54,6 +54,10 @@ sub definition {
fieldType=>"yesNo",
defaultValue=>1
},
cacheTimeout=>{
fieldType=>"interval",
defaultValue=>0
},
filterHtml=>{
fieldType=>"filterContent",
defaultValue=>"javascript"
@ -139,6 +143,13 @@ sub getEditForm {
-hoverHelp=>$i18n->get('12 description'),
-value=>$self->getValue("rewriteUrls")
);
$tabform->getTab("display")->interval(
-name=>"cacheTimeout",
-label=>$i18n->get('cache timeout'),
-hoverHelp=>$i18n->get('cache timeout description'),
-uiLevel => 8,
-value=>$self->getValue("cacheTimeout")
);
$tabform->getTab("display")->yesNo(
-name=>"removeStyle",
-label=>$i18n->get(6),
@ -197,6 +208,21 @@ sub purge {
}
#-------------------------------------------------------------------
=head2 purgeCache ()
See WebGUI::Asset::purgeCache() for details.
=cut
sub purgeCache {
my $self = shift;
WebGUI::Cache->new($self->session,$self->get("proxiedUrl"),"URL")->delete;
WebGUI::Cache->new($self->session,$self->get("proxiedUrl"),"HEADER")->delete;
$self->SUPER::purgeCache;
}
#-------------------------------------------------------------------
sub view {
my $self = shift;
@ -204,7 +230,7 @@ sub view {
$cookiebox =~ s/[^A-Za-z0-9\-\.\_]//g; #removes all funky characters
$cookiebox .= '.cookie';
my $jar = HTTP::Cookies->new(File => $self->getCookieJar->getPath($cookiebox), AutoSave => 1, Ignore_Discard => 1);
my (%var, %formdata, @formUpload, $redirect, $response, $header, $userAgent, $proxiedUrl, $request, $ttl);
my (%var, %formdata, @formUpload, $redirect, $response, $header, $userAgent, $proxiedUrl, $request);
if($self->session->form->process("func")!~/editSave/i) {
$proxiedUrl = $self->session->form->process("FormAction") || $self->session->form->process("proxiedUrl") || $self->get("proxiedUrl") ;
@ -338,14 +364,9 @@ sub view {
$var{content} = "<b>Getting <a href='$proxiedUrl'>$proxiedUrl</a> failed</b>".
"<p><i>GET status line: ".$response->status_line."</i>";
}
if ($self->session->user->userId eq '1') {
$ttl = $self->get("cacheTimeoutVisitor");
} else {
$ttl = $self->get("cacheTimeout");
}
unless ($self->get("cacheTimeoutVisitor") <= 1 && $self->get("cacheTimeout") <= 1) {
$cachedContent->set($var{content},$ttl);
$cachedHeader->set($var{header},$ttl);
unless ($self->get("cacheTimeout") <= 10) {
$cachedContent->set($var{content},$self->get("cacheTimeout"));
$cachedHeader->set($var{header},$self->get("cacheTimeout"));
}
}

View file

@ -398,10 +398,6 @@ sub www_setStatus {
return $self->www_view;
}
sub www_view {
my $self = shift;
$self->SUPER::www_view(1);
}
#-------------------------------------------------------------------
sub www_viewReport {

View file

@ -4,6 +4,7 @@ use strict;
use Tie::IxHash;
use WebGUI::Form;
use WebGUI::HTMLForm;
use WebGUI::Cache;
use WebGUI::Mail::Send;
use WebGUI::SQL;
use WebGUI::User;
@ -27,6 +28,14 @@ sub definition {
className=>'WebGUI::Asset::Wobject::Matrix',
assetName=>$i18n->get('assetName'),
properties=>{
visitorCacheTimeout => {
tab => "display",
fieldType => "interval",
defaultValue => 3600,
uiLevel => 8,
label => $i18n->get("visitor cache timeout"),
hoverHelp => $i18n->get("visitor cache timeout help")
},
categories=>{
defaultValue=>"Features\nBenefits",
fieldType=>"textarea"
@ -192,6 +201,20 @@ sub purge {
$self->SUPER::purge;
}
#-------------------------------------------------------------------
=head2 purgeCache ()
See WebGUI::Asset::purgeCache() for details.
=cut
sub purgeCache {
my $self = shift;
WebGUI::Cache->new($self->session,"view_".$self->getId)->delete;
$self->SUPER::purgeCache;
}
#-------------------------------------------------------------------
sub setRatings {
my $self = shift;
@ -377,6 +400,14 @@ sub getEditForm {
my $self = shift;
my $tabform = $self->SUPER::getEditForm();
my $i18n = WebGUI::International->new($self->session,'Asset_Matrix');
$tabform->getTab("display")->interval(
-name=>"visitorCacheTimeout",
-label=>$i18n->get('visitor cache timeout'),
-hoverHelp=>$i18n->get('visitor cache timeout help'),
-value=>$self->getValue('visitorCacheTimeout'),
-uiLevel=>8,
-defaultValue=>3600
);
$tabform->getTab("properties")->textarea(
-name=>"categories",
-label=>$i18n->get('categories'),
@ -905,6 +936,10 @@ sub www_search {
#-------------------------------------------------------------------
sub view {
my $self = shift;
if ($self->session->user->userId eq '1') {
my $out = WebGUI::Cache->new($self->session,"view_".$self->getId)->get;
return $out if $out;
}
my (%var);
$var{'compare.form'} = $self->getCompareForm;
$var{'search.url'} = $self->getUrl("func=search");
@ -1000,7 +1035,11 @@ sub view {
});
}
$sth->finish;
return $self->processTemplate(\%var,undef,$self->{_viewTemplate});
my $out = $self->processTemplate(\%var,undef,$self->{_viewTemplate});
if ($self->session->user->userId eq '1') {
WebGUI::Cache->new($self->session,"view_".$self->getId)->set($out,$self->get("visitorCacheTimeout"));
}
return $out;
}
#-------------------------------------------------------------------

View file

@ -12,6 +12,7 @@ package WebGUI::Asset::Wobject::MessageBoard;
use strict;
use Tie::IxHash;
use WebGUI::Cache;
use WebGUI::Asset::Wobject;
use WebGUI::International;
use WebGUI::SQL;
@ -35,7 +36,15 @@ sub definition {
namespace=>"MessageBoard",
label=>$i18n->get(73),
hoverHelp=>$i18n->get('73 description')
}
},
visitorCacheTimeout => {
tab => "display",
fieldType => "interval",
defaultValue => 3600,
uiLevel => 8,
label => $i18n->get("visitor cache timeout"),
hoverHelp => $i18n->get("visitor cache timeout help")
},
);
push(@{$definition}, {
assetName=>$i18n->get('assetName'),
@ -65,10 +74,34 @@ sub prepareView {
$self->{_viewTemplate} = $template;
}
#-------------------------------------------------------------------
=head2 purgeCache ()
See WebGUI::Asset::purgeCache() for details.
=cut
sub purgeCache {
my $self = shift;
WebGUI::Cache->new($self->session,"view_".$self->getId)->delete;
$self->SUPER::purgeCache;
}
#-------------------------------------------------------------------
=head2 view ()
See WebGUI::Asset::view() for details.
=cut
sub view {
my $self = shift;
if ($self->session->user->userId eq '1') {
my $out = WebGUI::Cache->new($self->session,"view_".$self->getId)->get;
return $out if $out;
}
my %var;
my $count;
my $first;
@ -123,7 +156,11 @@ sub view {
$var{'lastpost.label'} = $i18n->get('lastpost');
$var{areMultipleForums} = ($count > 1);
$var{forum_loop} = \@forum_loop;
return $self->processTemplate(\%var,undef,$self->{_viewTemplate});
my $out = $self->processTemplate(\%var,undef,$self->{_viewTemplate});
if ($self->session->user->userId eq '1') {
WebGUI::Cache->new($self->session,"view_".$self->getId)->set($out,$self->get("visitorCacheTimeout"));
}
return $out;
}
1;

View file

@ -24,6 +24,7 @@ use Tie::IxHash;
use JSON;
use WebGUI::International;
use WebGUI::SQL;
use WebGUI::Cache;
use WebGUI::Asset::Wobject;
use WebGUI::Utility;
@ -43,6 +44,14 @@ sub definition {
my $definition = shift;
my $i18n = WebGUI::International->new($session, "Asset_MultiSearch");
my $properties = {
cacheTimeout => {
tab => "display",
fieldType => "interval",
defaultValue => 3600,
uiLevel => 8,
label => $i18n->get("cache timeout"),
hoverHelp => $i18n->get("cache timeout help")
},
templateId =>{
fieldType=>"template",
tab=>"display",
@ -87,6 +96,20 @@ sub prepareView {
}
#-------------------------------------------------------------------
=head2 purgeCache ()
See WebGUI::Asset::purgeCache() for details.
=cut
sub purgeCache {
my $self = shift;
WebGUI::Cache->new($self->session,"view_".$self->getId)->delete;
$self->SUPER::purgeCache;
}
#-------------------------------------------------------------------
=head2 view ( )
@ -97,6 +120,10 @@ to be displayed within the page style
sub view {
my $self = shift;
if (!$self->session->var->isAdminOn && $self->get("cacheTimeout") > 10) {
my $out = WebGUI::Cache->new($self->session,"view_".$self->getId)->get;
return $out if $out;
}
my %var = $self->get();
my $i18n = WebGUI::International->new($self->session, 'Asset_MultiSearch');
@ -105,7 +132,11 @@ sub view {
$var{'search'} = $i18n->get('search');
$var{'submit'} = WebGUI::Form::Submit->new({name=>'SearchSubmit',value=>$i18n->get('submit','WebGUI')})->toHtml();
return $self->processTemplate(\%var, undef, $self->get("templateId"));
my $out = $self->processTemplate(\%var,undef,$self->{_viewTemplate});
if (!$self->session->var->isAdminOn && $self->get("cacheTimeout") > 10) {
WebGUI::Cache->new($self->session,"view_".$self->getId)->set($out,$self->get("cacheTimeout"));
}
return $out;
}

View file

@ -12,6 +12,7 @@ package WebGUI::Asset::Wobject::Product;
use strict;
use Tie::CPHash;
use WebGUI::Cache;
use WebGUI::HTMLForm;
use WebGUI::Storage::Image;
use WebGUI::SQL;
@ -101,6 +102,14 @@ sub definition {
tableName=>'Product',
className=>'WebGUI::Asset::Wobject::Product',
properties=>{
cacheTimeout => {
tab => "display",
fieldType => "interval",
defaultValue => 3600,
uiLevel => 8,
label => $i18n->get("cache timeout"),
hoverHelp => $i18n->get("cache timeout help")
},
templateId =>{
fieldType=>"template",
defaultValue=>'PBtmpl0000000000000056'
@ -333,6 +342,20 @@ sub purge {
#-------------------------------------------------------------------
=head2 purgeCache ()
See WebGUI::Asset::purgeCache() for details.
=cut
sub purgeCache {
my $self = shift;
WebGUI::Cache->new($self->session,"view_".$self->getId)->delete;
$self->SUPER::purgeCache;
}
#-------------------------------------------------------------------
sub purgeRevision {
my $self = shift;
WebGUI::Storage->get($self->session,$self->get("image1"))->delete if ($self->get("image1"));
@ -737,6 +760,10 @@ sub www_moveSpecificationUp {
#-------------------------------------------------------------------
sub view {
my $self = shift;
if (!$self->session->var->isAdminOn && $self->get("cacheTimeout") > 10) {
my $out = WebGUI::Cache->new($self->session,"view_".$self->getId)->get;
return $out if $out;
}
my (%data, $sth, $file, $segment, %var, @featureloop, @benefitloop, @specificationloop, @accessoryloop, @relatedloop);
tie %data, 'Tie::CPHash';
my $brochure = $self->get("brochure");
@ -879,7 +906,11 @@ sub view {
}
$sth->finish;
$var{relatedproduct_loop} = \@relatedloop;
return $self->processTemplate(\%var, undef, $self->{_viewTemplate});
my $out = $self->processTemplate(\%var,undef,$self->{_viewTemplate});
if (!$self->session->var->isAdminOn && $self->get("cacheTimeout") > 10) {
WebGUI::Cache->new($self->session,"view_".$self->getId)->set($out,$self->get("cacheTimeout"));
}
return $out;
}
1;

View file

@ -18,6 +18,7 @@ use WebGUI::Paginator;
use WebGUI::SQL;
use WebGUI::Utility;
use WebGUI::Asset::Wobject;
use WebGUI::Cache;
our @ISA = qw(WebGUI::Asset::Wobject);
@ -40,6 +41,10 @@ sub definition {
fieldType=>"template",
defaultValue=>'PBtmpl0000000000000059'
},
cacheTimeout=>{
fieldType=>"interval",
defaultValue=>0
},
paginateAfter=>{
fieldType=>"integer",
defaultValue=>50
@ -170,6 +175,13 @@ sub getEditForm {
-hoverHelp=>$i18n->get('16 description'),
-value=>$self->getValue("debugMode")
);
$tabform->getTab("display")->interval(
-name=>"cacheTimeout",
-label=>$i18n->get('cache timeout'),
-hoverHelp=>$i18n->get('cache timeout description'),
-uiLevel => 8,
-value=>$self->getValue("cacheTimeout")
);
# Add toggleQuery javascript
$tabform->getTab("properties")->raw(qq|
@ -279,9 +291,27 @@ sub prepareView {
}
#-------------------------------------------------------------------
=head2 purgeCache ()
See WebGUI::Asset::purgeCache() for details.
=cut
sub purgeCache {
my $self = shift;
WebGUI::Cache->new($self->session,"view_".$self->getId)->delete;
$self->SUPER::purgeCache;
}
#-------------------------------------------------------------------
sub view {
my $self = shift;
if (!$self->session->var->isAdminOn && $self->get("cacheTimeout") > 10) {
my $out = WebGUI::Cache->new($self->session,"view_".$self->getId)->get;
return $out if $out;
}
# Initiate an empty debug loop
$self->{_debug_loop} = [] ;
@ -294,7 +324,11 @@ sub view {
# Add debug loop to template vars
$var->{'debug_loop'} = $self->{_debug_loop};
#use Data::Dumper; return '<pre>'.Dumper($var).'</pre>';
return $self->processTemplate($var, undef, $self->{_viewTemplate});
my $out = $self->processTemplate($var,undef,$self->{_viewTemplate});
if (!$self->session->var->isAdminOn && $self->get("cacheTimeout") > 10) {
WebGUI::Cache->new($self->session,"view_".$self->getId)->set($out,$self->get("visitorCacheTimeout"));
}
return $out;
}
#-------------------------------------------------------------------

View file

@ -463,16 +463,5 @@ sub www_displayStock {
return $self->processTemplate($var, $self->get("displayTemplateId"));
}
#-------------------------------------------------------------------
=head2 www_view ( )
Overwrite www_view method and call the superclass object, passing in a 1 to disable cache
=cut
sub www_view {
my $self = shift;
$self->SUPER::www_view(1);
}
1;

View file

@ -1213,18 +1213,6 @@ sub www_respond {
}
#-------------------------------------------------------------------
=head2 www_view ( )
Overwrite www_view method and call the superclass object, passing in a 1 to disable cache
=cut
sub www_view {
my $self = shift;
$self->SUPER::www_view(1);
}
#-------------------------------------------------------------------
sub www_viewGradebook {
my $self = shift;

View file

@ -69,6 +69,14 @@ sub definition {
tie %properties, 'Tie::IxHash';
my $i18n = WebGUI::International->new($session,'Asset_SyndicatedContent');
%properties = (
cacheTimeout => {
tab => "display",
fieldType => "interval",
defaultValue => 3600,
uiLevel => 8,
label => $i18n->get("cache timeout"),
hoverHelp => $i18n->get("cache timeout help")
},
templateId =>{
tab=>"display",
fieldType=>'template',
@ -485,6 +493,20 @@ sub prepareView {
}
#-------------------------------------------------------------------
=head2 purgeCache ()
See WebGUI::Asset::purgeCache() for details.
=cut
sub purgeCache {
my $self = shift;
WebGUI::Cache->new($self->session,"view_".$self->getId)->delete;
$self->SUPER::purgeCache;
}
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
=head2 view()
@ -494,9 +516,11 @@ Returns the rendered output of the wobject.
sub view {
my $self = shift;
if (!$self->session->var->isAdminOn && $self->get("cacheTimeout") > 10) {
my $out = WebGUI::Cache->new($self->session,"view_".$self->getId)->get;
return $out if $out;
}
my $rssFlavor = shift;
$self->logView() if ($self->session->setting->get("passiveProfilingEnabled"));
my $maxHeadlines = $self->get('maxHeadlines') || 1000000;
my @urls = split(/\s+/,$self->get('rssUrl'));
return $self->processTemplate({},$self->get('templateId')) unless (scalar(@urls));
@ -535,7 +559,11 @@ sub view {
return $rss;
} else {
return $self->processTemplate(\%var,undef, $self->{_viewTemplate});
my $out = $self->processTemplate(\%var,undef,$self->{_viewTemplate});
if (!$self->session->var->isAdminOn && $self->get("cacheTimeout") > 10) {
WebGUI::Cache->new($self->session,"view_".$self->getId)->set($out,$self->get("cacheTimeout"));
}
return $out;
}
}

View file

@ -186,19 +186,4 @@ adminConsole views.
# WebGUI::International::get("edit_title","NewWobject"));
#}
#-------------------------------------------------------------------
=head2 www_view ( )
Override www_view method and call the superclass's object method, passing
in a 1 to disable wobject-level cache. Only use this method if you want
to explicitly disable caching, or do something else when /yourWobjectUrl?func=view or just /yourWobjectUrl is requested.
=cut
sub www_view {
my $self = shift;
return $self->SUPER::www_view(1);
# default: return $self->SUPER::www_view();
}
1;