0

Im using this code for caching my data:

<?php
$url = $_SERVER["SCRIPT_NAME"];
$break = Explode('/', $url);
$file = $break[count($break) - 1];
$cachefile = 'cached-'.substr_replace($file ,"",-4).'.php';
$cachetime = 3600;

if (file_exists($cachefile) && time() - $cachetime < filemtime($cachefile)) {
  include($cachefile); //include cache file
}else{
  ob_start(); //start output buffering
?>

<?php

....

echo '<div class="profile-font2">', $items, '</div>';

   $fp = fopen($cachefile, 'w'); //open cache file
  fwrite($fp, ob_get_contents()); //create new cache file
  fclose($fp); //close cache file
  ob_end_flush(); //flush output buffered
}
?>

The echo output get stored in the file. But I´ve a problem with my styles. The <div class=""> or table class gets ignored. So I just get the naked data. How is it possible that my styles get considered?

13
  • Where are your styles defined? Are they in the head? Are they separate files? Commented Feb 26, 2018 at 21:28
  • The styles are in one separate css. Commented Feb 26, 2018 at 21:31
  • 1
    considering the number of cache engines that exist, why build your own Commented Feb 26, 2018 at 21:34
  • If the style is being referenced in the head of the html output, I see no reason why your css would suddenly die if php is regurgitating a cache of its output, vs building it new (with any caching library or your own). So I am going to guess theres something more going on here than we are shown. Commented Feb 26, 2018 at 21:34
  • 1
    @dognose agreed, i have none. and never will. Commented Feb 26, 2018 at 21:38

1 Answer 1

1

echo '<div class="profile-font2">' - here you are just creating a div - it has a class-attribute, yes - but since you don't include any stylesheet - that means the class-attribute is worthless.

So, it depends on what you want to achive:

  • do you want to render the (cached) content according to the latest stylesheet?
  • do you want to cache the style-sheet as well?

For the first example, it would be quite easy, cause you just need to include the actual style-sheet before printing the cached content, i.e.:

<head>
<link rel="stylesheet" type="text/css" href="mystyle.css">
</head>
<body>
<?include("cachedContent.extension")?>
</body>

The second example would be more tricky, cause you need to "align" all the cached style-sheets with their respective HTML-File. I don't think that's trivial and hence don't have an answer for that case.

Sign up to request clarification or add additional context in comments.

1 Comment

There was some error with my css file in the head. Thanks.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.