Avatar billede silke4ever Nybegynder
24. marts 2006 - 19:37 Der er 13 kommentarer og
1 løsning

Squid og opdatering

Hej

Jeg har fået installeret Squid på min webserver. Nu har jeg bare et problem med, at den opdaterer nogle få HTML sider for langsom, hvad kan jeg gøre for at disse sider altid bliver fuld opdateret?

Jeg har fået denne kode tilsendt af min host. Men det kan jeg ikke få til at virke:

header('Last-Modified: '.gmdate('D, d M Y H:i:s \G\M\T', $lu['timestamp']));
header('Expires: '.gmdate('D, d M Y H:i:s \G\M\T', time() + 3600));
header('Date: '.gmdate('D, d M Y H:i:s \G\M\T', time()));


Mvh
Jesper
Avatar billede jakobdo Ekspert
24. marts 2006 - 21:48 #1
Du kan kalde siden med: side.html?id=(et unikt id, tidspunkt eller lign)
Avatar billede silke4ever Nybegynder
24. marts 2006 - 23:18 #2
Øhh ja, det kan jeg så bare ikke bruge til så meget, når billeder ikke bliver "reloadet" og linket altid er det samme.

Jeg har et PHP script til at genere Html filen.

Fordi vi gør det lille nummer er for, at vi ellers oplever, at vores database bliver overbelastet med too many connections. Derfor genere vi en html fil, så brugerne ikke kommer i nærheden af vores database, men blot får vist en html fil.

Men hvordan koder vi os ud af cache problemet. Fordi hverken billeder eller html filen bliver læst.

Forskellen kan ses her:
http://www.feltet.dk/live.php
http://www.feltet.dk/live.html

Bemærk det er opdateringerne, der er forskellige. De nye etapeprofiler (kortene) bliver ikke vist korrekt i php eller html koden.
Avatar billede coderdk Praktikant
24. marts 2006 - 23:23 #3
Hvis det er genererede HTML sider kan du sætte <meta http-equiv="expires" content="Sat, 7 Jul 1973 09:45:27 GMT"> i <head> sektionen...
Avatar billede silke4ever Nybegynder
24. marts 2006 - 23:28 #4
Jeg har lige tjekket, det hjalp desværre ikke.
Avatar billede jakobdo Ekspert
24. marts 2006 - 23:35 #5
Så prøv at lav samme løsning på billederne.

<img src="billede.jpg?id=(noget unikt igen)" />
Avatar billede silke4ever Nybegynder
24. marts 2006 - 23:38 #6
Er der ikke en anden måde, at kode sig ud af det, så at serveren ikke laver cache på live.html siden. Jeg kan jo heller ikke lige til unik side?
Avatar billede jakobdo Ekspert
24. marts 2006 - 23:49 #7
Du linker til siden live.html
På alle billeder laver du så: <img src="billede.jpg?id=<?=microtime(true);?>" />
Så vil billedet blive loadet hver gang siden åbnes eller reloades!
Avatar billede silke4ever Nybegynder
25. marts 2006 - 00:45 #8
Burde denne kode, så ikke virke?

<?
$data.= '            <td height="16" colspan="3" bgcolor="#FFFFFF" class=menu><center><a href="java script:popUp(\'images/direkte/2.gif?id=microtime(true);\')"><img src="images/direkte/1.gif?id=microtime(true);" border="0"></a><br>';
?>
Avatar billede hmortensen Nybegynder
25. marts 2006 - 00:54 #9
Flg. headers burde virke:
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
Avatar billede silke4ever Nybegynder
25. marts 2006 - 00:57 #10
Nu har jeg en kode, der ser sådan her ud....


<?php
require("XXXXXX/XXXX");
$result = mysql_query("SELECT * FROM `direkte` ORDER BY `creation_stamp` DESC LIMIT 0 , 550")  or  die( "Kan ikke få forbindelse til databasen. Prøv venligst igen. Årsagen er: ".mysql_error());
mysql_close();
?>

<?
$data = '';
$data.= '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">';
$data.= '<html>';
$data.= '<head>';
$data.= '<title>Feltet.dk - LIVE!</title>';
$data.= '<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />';
$data.= '<meta http-equiv="expires" content="Sat, 7 Jul 1973 09:45:27 GMT"/>';
$data.= '<SCRIPT LANGUAGE="JavaScript">';
$data.= 'function popUp(URL) {';
$data.= 'day = new Date();';
$data.= 'id = day.getTime();';
$data.= 'eval("page" + id + " = window.open(URL, \'" + id + "\', \'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width=800,height=500,left = 182,top = 84\');");';
$data.= '}';
$data.= '</script>';
$data.= '<style type="text/css">';
$data.= 'body {';
$data.= '    margin-left: 5px;';
$data.= '    margin-top: 5px;';
$data.= '    margin-right: 5px;';
$data.= '    margin-bottom: 5px;';
$data.= '}';
$data.= 'a:link{color: #387CB5;text-decoration: none;}';
$data.= 'a:visited{color: #387CB5;text-decoration: none;}';
$data.= 'a:active{color: #387CB5;text-decoration: none;}';
$data.= 'a:hover{color: #000000;text-decoration: none;}';
$data.= '.style30 {font-family : Verdana, Arial; font-size: 10px; color:#333333;}';
$data.= '.style31 {font-family : Verdana, Arial; font-size: 10px; color:#ffffff;}';
$data.= '</style>';
$data.= '</head>';
$data.= '<body>';

o.s.v.

Hvordan indsætter jeg så din headers hmortensen?
Avatar billede hmortensen Nybegynder
25. marts 2006 - 00:59 #11
<?php

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

require("XXXXXX/XXXX");
Avatar billede silke4ever Nybegynder
25. marts 2006 - 01:00 #12
Hvis jeg bare indsætter dem øverst sker der heller ikke noget som helst.
Avatar billede silke4ever Nybegynder
25. marts 2006 - 01:24 #13
Men for at scriptet skulle virke, så skulle headerfilen vil blive smidt over i html filen. når PHP-scriptet bliver kørt, ellers bliver cachen vel ikke tømt? Når HTML filen bliver læst.
Avatar billede silke4ever Nybegynder
19. marts 2008 - 14:22 #14
Hvis aldrig de svar, som jeg ønskede
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester