fixed redirect bugs in file, image, and zip archive

added cache control headers to style
added cache control headers to snippet
added server side caching to snippet
This commit is contained in:
JT Smith 2006-04-15 16:07:04 +00:00
parent 404749e32b
commit da9c26d72c
7 changed files with 45 additions and 4 deletions

View file

@ -95,6 +95,7 @@ sub changeCache {
$session->db->write("alter table Folder add column visitorCacheTimeout int not null default 3600");
$session->db->write("alter table HttpProxy add column cacheTimeout int not null default 0");
$session->db->write("alter table SQLReport add column cacheTimeout int not null default 0");
$session->db->write("alter table Snippet add column cacheTimeout int not null default 3600");
$session->db->write("alter table FileAsset add column cacheTimeout int not null default 3600");
$session->db->write("alter table Product add column cacheTimeout int not null default 3600");
$session->db->write("alter table SyndicatedContent add column cacheTimeout int not null default 3600");

View file

@ -319,7 +319,7 @@ sub www_view {
}
my $storage = $self->getStorageLocation;
$self->session->http->setRedirect($storage->getUrl($self->get("filename")));
return "";
return "1";
}

View file

@ -309,7 +309,7 @@ sub www_view {
return $self->getContainer->www_view;
}
$self->session->http->setRedirect($self->getFileUrl($self->getValue("showPage")));
return "";
return "1";
}

View file

@ -18,6 +18,7 @@ use strict;
use WebGUI::Asset;
use WebGUI::Asset::Template;
use WebGUI::Macro;
use HTTP::Date;
our @ISA = qw(WebGUI::Asset);
@ -71,6 +72,14 @@ sub definition {
fieldType=>'codearea',
defaultValue=>undef
},
cacheTimeout => {
tab => "display",
fieldType => "interval",
defaultValue => 3600,
uiLevel => 8,
label => $i18n->get("cache timeout"),
hoverHelp => $i18n->get("cache timeout help")
},
processAsTemplate=>{
fieldType=>'yesNo',
defaultValue=>0
@ -157,11 +166,20 @@ sub indexContent {
sub view {
my $self = shift;
my $calledAsWebMethod = shift;
if (!$self->session->var->isAdminOn && $self->get("cacheTimeout") > 10) {
my $out = WebGUI::Cache->new($self->session,"view_".$calledAsWebMethod."_".$self->getId)->get;
return $out if $out;
}
my $output = $self->get("snippet");
WebGUI::Macro::process($self->session,\$output);
$output = $self->getToolbar.$output if ($self->session->var->get("adminOn") && !$calledAsWebMethod);
return $output unless ($self->getValue("processAsTemplate"));
return WebGUI::Asset::Template->processRaw($self->session, $output);
unless ($self->getValue("processAsTemplate")) {
$output = WebGUI::Asset::Template->processRaw($self->session, $output);
}
if (!$self->session->var->isAdminOn && $self->get("cacheTimeout") > 10) {
WebGUI::Cache->new($self->session,"view_".$calledAsWebMethod."_".$self->getId)->set($output,$self->get("cacheTimeout"));
}
return $output;
}
#-------------------------------------------------------------------
@ -185,6 +203,12 @@ sub www_view {
my $self = shift;
my $mimeType=$self->getValue('mimeType');
$self->session->http->setMimeType($mimeType || 'text/html');
my $request = $self->session->request;
if (defined $request && $request->protocol =~ /(\d\.\d)/ && $1 >= 1.1){
$request->header_out('Cache-Control', "max-age=" . $self->get("cacheTimeout"));
} elsif (defined $request) {
$request->header_out('Expires', HTTP::Date::time2str(time + $self->get("cacheTimeout")));
}
return $self->view(1);
}

View file

@ -6,6 +6,11 @@ our $HELP = {
title => 'snippet add/edit title',
body => 'snippet add/edit body',
fields => [
{
title => 'cache timeout',
namespace => 'Asset_File',
description => 'cache timeout help'
},
{
title => 'assetName',
description => 'snippet description',

View file

@ -187,6 +187,7 @@ if ($self->session->user->isInGroup(2)) {
<meta http-equiv="Cache-Control" content="no-cache, must-revalidate, max-age=0" />
<meta http-equiv="Expires" content="0" />
';
$self->session->request->no_cache(1) if ($self->session->request);
}
my $style = WebGUI::Asset::Template->new($self->session,$templateId);
my $output;

View file

@ -2,6 +2,16 @@ package WebGUI::i18n::English::Asset_Snippet;
our $I18N = {
'cache timeout' => {
message => q|Cache Timeout|,
lastUpdated => 0
},
'cache timeout help' => {
message => q|Since all users will see this asset the same way, we can cache it for long periods of time to increase performance. How long should we cache it?<br /> <br /><b>UI Level: 8</b>|,
lastUpdated => 0
},
'assetName' => {
message => q|Snippet|,
lastUpdated => 1128830080,