PHP 如何不缓存生成的 HTML,而是缓存静态数据,如 images/js/css
PHP How to not cache generated HTML but cache static data like images/js/css
许多PHP开发人员在他们的PHP页面顶部添加了无缓存标头,我也是,原因很明显。由于 PHP 生成的内容通常是动态的,因此让浏览器缓存它们会导致向用户呈现过时的数据。为了避免这种缓存,通常会被禁用。
<?php
//no cache headers
header("Expires: Mon, 26 Jul 1990 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");
?>
问题是由于这个标头,我的图像,javascript文件和css文件也是静态的,因此可以(并且应该)缓存,也没有被缓存。这会大大减慢网站的速度。
有没有办法在PHP内容上没有缓存,但仍然缓存了js/images/css?
假设我有完全访问权限来修改(linux)服务器配置,HTACCESS,当然还有PHP文件本身,如何实现这一点?
还是整个"无缓存的事情"对于动态PHP文件是不必要的?即使它们被 url 重写为看起来没有扩展名。
我可能是错的,但我相信您可以将所有 js 和 CSS 文件放入一个 php 中,然后使用类似的东西进行缓存
ob_start ("ob_gzhandler");
ob_start("compress");
因此,您将有一个定义其标头的.php,然后对您的js和css文件以及上述文件有一些要求。
您可能需要几个 if 语句来获取更改等。
我将在我现在在手机上的几个中做出更全面的答案。
更新
在 git 上找到了一个资源,我认为它将帮助您走上正确的道路。
https://github.com/SubZane/CSS-Compressor/blob/master/csscompressor.php
您可以使用
htAccess 来定义要缓存的文件您想要的只是在网站的主目录中创建一个.htaccess文件并添加此代码
例:
# cache images/pdf docs for 1 week
<FilesMatch "'.(ico|pdf|jpg|jpeg|png|gif)$">
Header set Cache-Control "max-age=604800, public, must-revalidate"
Header unset Last-Modified
</FilesMatch>
# cache html/htm/xml/txt diles for 2 days
<FilesMatch "'.(css|js)$">
Header set Cache-Control "max-age=172800, must-revalidate"
</FilesMatch>
相关文章:
- 缓存谷歌地图数据
- 有没有办法清除客户端上的XHR缓存数据
- typeaheadjs:如何在不使用缓存数据的情况下调用服务器
- 如何使用Dojo Store进行客户端数据缓存
- 如何仅在数据更改时取消缓存数据
- 在Angularjs服务中为返回对象引用的http请求提供的数据构建简单的缓存
- 如何在脱机工作时将数据写入和更新 HTML5 缓存的网页
- 如何正确注销GWT应用程序以避免浏览器加载缓存数据
- angularJS缓存数据
- 缓存 html 页面但不缓存数据
- 使用Javascript解析序列化的Laravel缓存数据
- 如何使javascript加载新数据每次(不使用缓存数据),当我重定向到一个处理程序(页)在鼠标点击
- 在表单输入的字段中缓存数据
- 在node.js中缓存数据的最便宜的方法
- 我如何在Chrome扩展缓存数据
- 在AngularJS中缓存数据的更好方法
- 动态改变jquery对话框的标题,不从下拉菜单中获取缓存数据
- 在node js上缓存数据的最佳方式
- 如何避免通过XMLHttpRequest()下载时缓存数据
- 角度处理不正确的缓存数据