Nog maar weer een topic, aangezien het wel een ander probleem is dan mijn vorige.
Na dit topic:
[http] images uit DB, hoe te cachen?
Heb ik de volgende situatie gecreerd:
Caching lijkt te werken onder alle browsers, alleen helpt mijn caching google chrome onderuit.
dwz:
Ik heb een testpagina gemaakt, waarop ik twee afbeeldingen laad via twee scriptjes:
In de eerste zit caching, in de tweede niet.
Wanneer je in chrome kijkt zie je dat na het laden van beide, chrome de eerste afbeelding weer verwijderd, en een kruisje laat zien.
In alle andere browsers gaat het goed.
de code van afbeelding 1:
en afbeelding2 (zonder caching)
Na dit topic:
[http] images uit DB, hoe te cachen?
Heb ik de volgende situatie gecreerd:
Caching lijkt te werken onder alle browsers, alleen helpt mijn caching google chrome onderuit.
dwz:
Ik heb een testpagina gemaakt, waarop ik twee afbeeldingen laad via twee scriptjes:
In de eerste zit caching, in de tweede niet.
Wanneer je in chrome kijkt zie je dat na het laden van beide, chrome de eerste afbeelding weer verwijderd, en een kruisje laat zien.
In alle andere browsers gaat het goed.
de code van afbeelding 1:
PHP:
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
| <? if(isset($_GET['id'])) { include 'ucms_admin/inc/config.php'; include 'ucms_admin/inc/funcs.php'; include 'ucms_admin/inc/connect.php'; $id = mysql_real_escape_string($_GET['id']); $query = "SELECT *, UNIX_TIMESTAMP(timestamp) as ticks FROM `" . $ucms_cfg['prefix'] . "image_image` WHERE id = $id"; $row = mysql_fetch_object(mysql_query($query)); // we get check HTTP // If-Modified-Since header // and do not send image // if there is a cached version $rh = getHeaders(); if (isset($rh['If-Modified-Since']) && // If-Modified-Since should exists $rh['If-Modified-Since'] != '' && // not empty strtotime($rh['If-Modified-Since']) >= $row->ticks) // and grater than { // Sending 304 response to browser // "Browser, your cached version of image is OK // we're not sending anything new to you" header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $row->ticks) . ' GMT', true, 304); exit(); } $maxage = 60*60*24*365; //header('Age:' . time()-$row->ticks); header('Cache-Control:max-age='.$maxage.', public'); header('Content-Length:'.strlen($row->image)); header('Content-Type:'.$row->type); header('Date:' . gmdate('D, d M Y H:i:s', time()) . ' GMT'); header('Expires:' . gmdate('D, d M Y H:i:s', time() + $maxage) . ' GMT'); header('Last-Modified:' . gmdate('D, d M Y H:i:s', $row->ticks) . ' GMT'); //header('ETag: "'.md5($row->id).'"'); header('Pragma:max-age='.$maxage.', public'); switch ($row->type) { case "image/gif": header("Content-disposition: inline; filename=".$row->id.".gif"); break; case "image/jpeg": header("Content-disposition: inline; filename=".$row->id.".jpg"); break; case "image/png": header("Content-disposition: inline; filename=".$row->id.".png"); break; } echo $row->image; exit; } ?> |
en afbeelding2 (zonder caching)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| <? if(isset($_GET['id'])) { include 'ucms_admin/inc/config.php'; include 'ucms_admin/inc/funcs.php'; include 'ucms_admin/inc/connect.php'; $id = mysql_real_escape_string($_GET['id']); $query = "SELECT * FROM `" . $ucms_cfg['prefix'] . "image_image` WHERE id = $id"; $row = mysql_fetch_object(mysql_query($query)); echo $row->image; exit; } ?> |
This message was sent on 100% recyclable electrons.