more correct handling of etags and last-modified

This commit is contained in:
Evan Prodromou 2009-02-18 23:43:26 +00:00
parent 72b3c9108c
commit c9def4a876

View File

@ -209,12 +209,10 @@ class Action extends HTMLOutputter // lawsuit
'src' => common_path('js/jquery.form.js')), 'src' => common_path('js/jquery.form.js')),
' '); ' ');
$this->element('script', array('type' => 'text/javascript', $this->element('script', array('type' => 'text/javascript',
'src' => common_path('js/jquery.simplemodal-1.2.2.pack.js')), 'src' => common_path('js/jquery.simplemodal-1.2.2.pack.js')),
' '); ' ');
Event::handle('EndShowJQueryScripts', array($this)); Event::handle('EndShowJQueryScripts', array($this));
} }
if (Event::handle('StartShowLaconicaScripts', array($this))) { if (Event::handle('StartShowLaconicaScripts', array($this))) {
@ -813,8 +811,10 @@ class Action extends HTMLOutputter // lawsuit
if ($if_modified_since) { if ($if_modified_since) {
$ims = strtotime($if_modified_since); $ims = strtotime($if_modified_since);
if ($lm <= $ims) { if ($lm <= $ims) {
if (!$etag || $if_none_match = $_SERVER['HTTP_IF_NONE_MATCH'];
$this->_hasEtag($etag, $_SERVER['HTTP_IF_NONE_MATCH'])) { if (!$if_none_match ||
!$etag ||
$this->_hasEtag($etag, $if_none_match)) {
header('HTTP/1.1 304 Not Modified'); header('HTTP/1.1 304 Not Modified');
// Better way to do this? // Better way to do this?
exit(0); exit(0);
@ -832,9 +832,11 @@ class Action extends HTMLOutputter // lawsuit
* *
* @return boolean * @return boolean
*/ */
function _hasEtag($etag, $if_none_match) function _hasEtag($etag, $if_none_match)
{ {
return ($if_none_match) && in_array($etag, explode(',', $if_none_match)); $etags = explode(',', $if_none_match);
return in_array($etag, $etags) || in_array('*', $etags);
} }
/** /**