summaryrefslogtreecommitdiff
path: root/plugins/Minify/extlib/minify/min_unit_tests/HTTP_ConditionalGet/3.php
blob: 8f5482ba891c33bfdd2360a8b11ff12e23b577ef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php

set_include_path(get_include_path() . PATH_SEPARATOR . realpath(dirname(__FILE__) . '/../../min/lib'));
require 'HTTP/ConditionalGet.php';

// generate content first (not ideal)
// emulate regularly updating document
$every = 20;
$lastModified = round(time()/$every)*$every - $every;
$title = 'Last-Modified is unknown : use hash of content for ETag';
$explain = '
<p>When Last-Modified is unknown, you can still use ETags, but you need a short
string that is unique for that content. In the worst case, you have to generate
all the content first, <em>then</em> instantiate HTTP_ConditionalGet, setting
the array key <code>contentHash</code> to the output of a hash function of the
content. Since we have the full content, we might as well also use
<code>setContentLength(strlen($content))</code> in the case where we need to
send it.</p>
<p>This script emulates a document that changes every ' .$every. ' seconds.
<br>This is version: ' . date('r', $lastModified) . '</p>
';
require '_include.php';
$content = get_content(array(
    'title' => $title
    ,'explain' => $explain
));

$cg = new HTTP_ConditionalGet(array(
    'contentHash' => substr(md5($content), 7)
));
if ($cg->cacheIsValid) {
    $cg->sendHeaders();
    // we're done
    exit();
}
$cg->setContentLength(strlen($content));
$cg->sendHeaders();

send_slowly($content);