nitropack
Last commit date
classes
3 years ago
nitropack-sdk
3 years ago
view
3 years ago
advanced-cache.php
3 years ago
batcache-compat.php
4 years ago
cf-helper.php
5 years ago
constants.php
3 years ago
diagnostics.php
4 years ago
functions.php
3 years ago
integrations.php
4 years ago
main.php
3 years ago
readme.txt
3 years ago
uninstall.php
4 years ago
wp-cli.php
5 years ago
advanced-cache.php
58 lines
| 1 | <?php |
| 2 | |
| 3 | defined( 'ABSPATH' ) or die( 'No script kiddies please!' ); |
| 4 | |
| 5 | if (strpos($_SERVER["REQUEST_URI"], "nitroHealthcheck") !== false) { |
| 6 | // This healthcheck is used to quickly check test whether the PHP application is able to handle the requests |
| 7 | // Mainly used to check for errors after .htaccess has been modified |
| 8 | echo "Healthy"; |
| 9 | exit; |
| 10 | } |
| 11 | |
| 12 | $nitropack_functions_file = '/*NITROPACK_FUNCTIONS_FILE*/'; |
| 13 | $nitropack_abspath = '/*NITROPACK_ABSPATH*/'; |
| 14 | |
| 15 | // We need the ABSPATH check in order to verify that the functions file which we are about to load belongs to the expected WP installation. |
| 16 | // Otherwise issues may occur when a site is being duplicated in a subdir on the same server. |
| 17 | if (file_exists($nitropack_functions_file) && ABSPATH == $nitropack_abspath) { |
| 18 | define( 'NITROPACK_ADVANCED_CACHE', true); |
| 19 | define( 'NITROPACK_ADVANCED_CACHE_VERSION', '/*NP_VERSION*/'); |
| 20 | define( 'NITROPACK_LOGGED_IN_COOKIE', '/*LOGIN_COOKIES*/' ); |
| 21 | require_once $nitropack_functions_file; |
| 22 | } |
| 23 | |
| 24 | if (defined("NITROPACK_VERSION") && defined("NITROPACK_ADVANCED_CACHE_VERSION") && NITROPACK_VERSION == NITROPACK_ADVANCED_CACHE_VERSION && nitropack_is_dropin_cache_allowed()) { |
| 25 | nitropack_handle_request("drop-in"); |
| 26 | $nitro = get_nitropack_sdk(); |
| 27 | |
| 28 | if (null !== $nitro) { |
| 29 | $np_siteConfig = nitropack_get_site_config(); |
| 30 | if ( !empty($np_siteConfig["alwaysBuffer"]) || ($nitro->isAJAXRequest() && $nitro->isAllowedAJAX()) ) { |
| 31 | define( 'NITROPACK_IS_BUFFERING', true ); |
| 32 | ob_start(function($buffer) use (&$nitro) { |
| 33 | if (!defined("NITROPACK_BEACON_PRINTED")) { |
| 34 | $respHeaders = headers_list(); |
| 35 | $contentType = NULL; |
| 36 | foreach ($respHeaders as $respHeader) { |
| 37 | if (stripos(trim($respHeader), 'Content-Type:') === 0) { |
| 38 | $contentType = $respHeader; |
| 39 | } |
| 40 | } |
| 41 | |
| 42 | if ( stripos($contentType, 'text/html') !== false && !preg_match("/<html.*?\s(amp|⚡)(\s|=|>)/", $buffer) && nitropack_passes_cookie_requirements() && nitropack_passes_page_requirements(false)) { |
| 43 | define("NITROPACK_BEACON_PRINTED", true); |
| 44 | $buffer = str_replace("</body", nitropack_get_beacon_script() . "</body", $buffer); |
| 45 | } |
| 46 | } |
| 47 | |
| 48 | if ($nitro->isAJAXRequest() && $nitro->isAllowedAJAX()) { |
| 49 | $nitro->pageCache->setContent($buffer, []); |
| 50 | } |
| 51 | return $buffer; |
| 52 | }, 0, PHP_OUTPUT_HANDLER_FLUSHABLE | PHP_OUTPUT_HANDLER_REMOVABLE); |
| 53 | } else { |
| 54 | define( 'NITROPACK_IS_BUFFERING', false ); |
| 55 | } |
| 56 | } |
| 57 | } |
| 58 |