我的header.php文件包含在我的所有脚本中,并包含一个基于twitters bootstrap样式表的工具栏。每次加载页面时,页面加载时都会闪烁。我假设标头默认是缓存但它似乎不是。有没有办法强制它使用缓存?
文件的head部分如下所示:
<?php if (!isset($_SESSION)) session_start(); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title><?php echo($title); ?></title>
<?php if (isset($meta)) {echo($meta);} ?>
<!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<!--[if IE 6]>
<link rel="stylesheet" type="text/css" href="css/ie6.css" />
<![endif]-->
<link rel="stylesheet" href="css/bootstrap.css" />
<link rel="icon" type="image/x-icon" href="favicon.ico" />
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.min.js"></script>
<style type="text/css">
/* Override some defaults */
<?php if (isset($extra_styles)) {echo($extra_styles);} ?>
</style>
</head>
答案 0 :(得分:1)
有不同类型的缓存:
客户端缓存
如果你的意思是客户端缓存,那么没有。客户端缓存单个内容,如图像和HTML文件,但不是其中的一部分。没有花哨的HTML标签或类似的告诉浏览器缓存哪个特殊部分。
服务器缓存
服务器缓存意味着服务器将一些经常访问的内容保存在RAM中以减少I / O并节省处理时间。您始终可以将HTML标题部分缓存在RAM中。不幸的是我不知道如何在PHP中这样做。
答案 1 :(得分:0)
您希望缓存到底是什么?浏览器无法在一个页面上缓存HTML的子集,以便在后续页面中使用;它只是不起作用。浏览器将文件作为一个整体缓存,无论它们是PHP生成的HTML页面,Javascript源代码还是图像。
如果您的标题在所有页面上都相同并不重要,因为它是由相同的include
'PHP文件生成的 - 浏览器不知道您的网络服务器在使用不同的PHP文件之前做了什么送达。浏览器只是整个页面的HTML,并解释它。