Move Article checkLastModified() up to MediaWiki::performRequest

This lets revalidations via IMS headers run a bit faster.

Change-Id: I1f61086dea4c6bc460f6249ed7fda78316117a8d
This commit is contained in:
Aaron Schulz 2016-08-23 23:53:31 -07:00
parent fbce940836
commit 8b141886ed
3 changed files with 14 additions and 9 deletions

View file

@ -286,6 +286,16 @@ class MediaWiki {
// 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 );

View file

@ -543,13 +543,8 @@ class Article implements Page {
}
}
# 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();

View file

@ -504,13 +504,13 @@ class WikiPage implements Page, IDBAccessObject {
/**
* 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 );
}
/**