/** * Test Http functions. */ function test_functions() { http_cache_last_modified(); http_chunked_decode(); http_deflate(); http_inflate(); http_build_cookie(); http_date(); http_get_request_body_stream(); http_get_request_body(); http_get_request_headers(); http_match_etag(); http_match_modified(); http_match_request_header(); http_support(); http_negotiate_charset(); http_negotiate_content_type(); http_negotiate_language(); ob_deflatehandler(); ob_etaghandler(); ob_inflatehandler(); http_parse_cookie(); http_parse_headers(); http_parse_message(); http_parse_params(); http_persistent_handles_clean(); http_persistent_handles_count(); http_persistent_handles_ident(); http_get(); http_head(); http_post_data(); http_post_fields(); http_put_data(); http_put_file(); http_put_stream(); http_request_body_encode(); http_request_method_exists(); http_request_method_name(); http_request_method_register(); http_request_method_unregister(); http_request(); http_redirect(); http_send_content_disposition(); http_send_content_type(); http_send_data(); http_send_file(); http_send_last_modified(); http_send_status(); http_send_stream(); http_throttle(); http_build_str(); http_build_url(); }
public function send() { if (function_exists('http_match_etag') && function_exists('http_match_modified')) { $lastModified = $this->getLastModified()->getTimestamp(); if (http_match_etag($this->getEtag()) || http_match_modified($lastModified)) { $this->setNotModified(); $this->sendHeaders(); exit; } } $this->sendHeaders(); if (empty($this->content)) { readfile($this->file->getPathname()); } else { $this->sendContent(); } }
$file_last_modified = filemtime($src_uri); header("Last-Modified: " . date("r", $file_last_modified)); $max_age = 300 * 24 * 60 * 60; // 300 days $expires = $file_last_modified + $max_age; header("Expires: " . date("r", $expires)); $etag = dechex($file_last_modified); header("ETag: " . $etag); $cache_control = "must-revalidate, proxy-revalidate, max-age=" . $max_age . ", s-maxage=" . $max_age; header("Cache-Control: " . $cache_control); /* * Check if the client should use the cached version. * Return HTTP 304 if needed. */ if (function_exists("http_match_etag") && function_exists("http_match_modified")) { if (http_match_etag($etag) || http_match_modified($file_last_modified)) { header("HTTP/1.1 304 Not Modified"); exit; } } else { error_log("The HTTP extensions to PHP does not seem to be installed..."); } /* * Extract the directory, file name and file * extension from the "uri" parameter. */ $uri_dir = ""; $file_name = ""; $content_type = ""; $uri_parts = explode("/", $src_uri); for ($i = 0; $i < count($uri_parts) - 1; $i++) {