This lets revalidations via IMS headers run a bit faster.
Change-Id: I1f61086dea4c6bc460f6249ed7fda78316117a8d
// may still be a wikipage redirect to another article or URL.
$article = $this->initializeArticle();
if ( is_object( $article ) ) {
+ $url = $request->getFullRequestURL(); // requested URL
+ if (
+ $request->getMethod() === 'GET' &&
+ $url === $article->getTitle()->getCanonicalURL() &&
+ $article->checkTouched() &&
+ $output->checkLastModified( $article->getTouched() )
+ ) {
+ wfDebug( __METHOD__ . ": done 304\n" );
+ return;
+ }
$this->performAction( $article, $requestTitle );
} elseif ( is_string( $article ) ) {
$output->redirect( $article );
}
}
- # Is it client cached?
- if ( $outputPage->checkLastModified( $timestamp ) ) {
- wfDebug( __METHOD__ . ": done 304\n" );
-
- return;
- # Try file cache
- } elseif ( $wgUseFileCache && $this->tryFileCache() ) {
+ # Try to stream the output from file cache
+ if ( $wgUseFileCache && $this->tryFileCache() ) {
wfDebug( __METHOD__ . ": done file cache\n" );
# tell wgOut that output is taken care of
$outputPage->disable();
/**
* Loads page_touched and returns a value indicating if it should be used
- * @return bool True if not a redirect
+ * @return bool True if this page exists and is not a redirect
*/
public function checkTouched() {
if ( !$this->mDataLoaded ) {
$this->loadPageData();
}
- return !$this->mIsRedirect;
+ return ( $this->mId && !$this->mIsRedirect );
}
/**