summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Prodromou <evan@status.net>2009-09-23 09:33:40 -0400
committerEvan Prodromou <evan@status.net>2009-09-23 09:33:40 -0400
commit42ba05de5fa9413ce0f383cfdafa7288e291ab17 (patch)
tree82918140c513d9951f88418c85387f5f05e32a93
parentc01a5b8f2e37fe876507edfccc01126a117d9728 (diff)
revert output buffering (costly) for ETags (low priority)
-rw-r--r--index.php2
-rw-r--r--lib/action.php41
2 files changed, 6 insertions, 37 deletions
diff --git a/index.php b/index.php
index fa94f0c75..362ab3cd3 100644
--- a/index.php
+++ b/index.php
@@ -233,7 +233,7 @@ function main()
try {
if ($action_obj->prepare($args)) {
- $action_obj->handleWrapper($args);
+ $action_obj->handle($args);
}
} catch (ClientException $cex) {
$cac = new ClientErrorAction($cex->getMessage(), $cex->getCode());
diff --git a/lib/action.php b/lib/action.php
index ebef4f9e4..670eb498c 100644
--- a/lib/action.php
+++ b/lib/action.php
@@ -873,29 +873,28 @@ class Action extends HTMLOutputter // lawsuit
}
/**
- * Wrapper for the handle method that handles etags, last-modified, and other conditional headers
+ * Handler method
*
* @param array $argarray is ignored since it's now passed in in prepare()
*
* @return boolean is read only action?
*/
- function handleWrapper($argarray=null)
+ function handle($argarray=null)
{
- header('Vary: Accept-Encoding,Cookie,Accept-Language,Authorization');
- header("Cache-Control: must-revalidate");
+ header('Vary: Accept-Encoding,Cookie');
$lm = $this->lastModified();
$etag = $this->etag();
if ($etag) {
header('ETag: ' . $etag);
}
- $if_none_match = (array_key_exists('HTTP_IF_NONE_MATCH', $_SERVER)) ?
- $_SERVER['HTTP_IF_NONE_MATCH'] : null;
if ($lm) {
header('Last-Modified: ' . date(DATE_RFC1123, $lm));
if (array_key_exists('HTTP_IF_MODIFIED_SINCE', $_SERVER)) {
$if_modified_since = $_SERVER['HTTP_IF_MODIFIED_SINCE'];
$ims = strtotime($if_modified_since);
if ($lm <= $ims) {
+ $if_none_match = (array_key_exists('HTTP_IF_NONE_MATCH', $_SERVER)) ?
+ $_SERVER['HTTP_IF_NONE_MATCH'] : null;
if (!$if_none_match ||
!$etag ||
$this->_hasEtag($etag, $if_none_match)) {
@@ -906,36 +905,6 @@ class Action extends HTMLOutputter // lawsuit
}
}
}
- if($etag) {
- $ret = $this->handle($argarray);
- }else{
- ob_start();
- $ret = $this->handle($argarray);
- $output = ob_get_contents();
- ob_end_clean();
- //deep etag
- $etag = md5($output);
- header('ETag: ' . $etag);
- if($if_none_match && $this->_hasEtag($etag, $if_none_match)) {
- header('HTTP/1.1 304 Not Modified');
- // Better way to do this?
- exit(0);
- }
- header('Content-Length: '.strlen($output));
- print $output;
- }
- return $ret;
- }
-
- /**
- * Handler method
- *
- * @param array $argarray is ignored since it's now passed in in prepare()
- *
- * @return boolean is read only action?
- */
- function handle($argarray=null)
- {
}
/**