因为这个缘故,CDN的 x-Cache总是MISS TCP_MISS,导致要回源。

查了半个小时,终于找到原因了。

(问题图片)

来自session.c:

Authors: Sascha Schumann

Andrei Zmievski

// ...

CACHE_LIMITER_FUNC(private)

{

ADD_HEADER("Expires: Thu, 19 Nov 1981 08:52:00 GMT");

CACHE_LIMITER(private_no_expire)(TSRMLS_C);

}

见:http://php.net/manual/en/function.session-cache-limiter.php

在session_start() 之前添加session_cache_limiter(’public’)以启用缓存。

如果你用的是框架,我建议放在入口index.php里,以ThinkPHP为例的话是这样:

/**追加部分 **/

header("Content-type:text/html;charset=utf-8");

header("Pragma: public");

header("Expires: ".strtotime("+1 days")." GMT");

session_cache_limiter("public");

/**追加部分 **/

header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

error_reporting(E_ALL & ~E_NOTICE);

define('THINK_PATH', '../ThinkPHP/');

define('APP_NAME', 'Home');

define('APP_PATH', '../Application/Home/');

define('__HOME__',__DIR__);

//define('MODE_NAME', 'rest'); // 采用rest模式运行

define('APP_DEBUG', true);//开发环境开启调试模式

define('RUNTIME_ALLINONE', false);

require THINK_PATH.'ThinkPHP.php';

ThinkPHP还要修改配置config.php 增加HTTP_CACHE_CONTROL=public(见ThinkPHP/Lib/Core/View.class.php Line 92 render()方法)。

说个题外话,Pragma: no-cache可以应用到http 1.0 和http 1.1,而Cache-Control: no-cache只能应用于http 1.1.默认是1.0好像,但是CDN才不管你http协议是什么,用2个参数做全等判断的。如果要CDN产生MEM HIT,你可以:

删除header里的Cache-Control和Pragma,或只用一种,取决于你网页头部的协议用的是几

Pragma和Cache-Control的值应该保持一致,否则网页本身可能出问题(表单方面,尤其是用了令牌的表单)

php header expire,解决PHP Expires 导致CDN出现TCP_MISS相关推荐

  1. pool win10提示bad_win10系统电脑蓝屏提示bad pool header的解决方法

    很多小伙伴都遇到过win10系统电脑蓝屏提示bad pool header的情况,想必大家都遇到过win10系统电脑蓝屏提示bad pool header的情况吧,那么应该怎么处理win10系统电脑蓝 ...

  2. html5新特性:利用history的pushState等方法来解决使用ajax导致页面后退和前进的问题

    html5新特性:利用history的pushState等方法来解决使用ajax导致页面后退和前进的问题 参考文章: (1)html5新特性:利用history的pushState等方法来解决使用aj ...

  3. 解决mybatis中#{}导致的The error may involve defaultParameterMap的问题

    解决mybatis中#{}导致的The error may involve defaultParameterMap的问题 参考文章: (1)解决mybatis中#{}导致的The error may ...

  4. Unable to find the ncurses libraries or the required header files解决

    问题: 解决方法: sudo apt-get install ncurses-dev 参考:Unable to find the ncurses libraries or the required h ...

  5. Ubuntu 16.04配置CUDA 9.0+cudnn 7.0以及解决Nvidia显卡导致黑屏问题

    Ubuntu 16.04配置CUDA 9.0+cudnn 7.0以及解决Nvidia显卡导致黑屏问题 参考文章: (1)Ubuntu 16.04配置CUDA 9.0+cudnn 7.0以及解决Nvid ...

  6. 解决浏览器滚动条导致的页面闪烁问题

    解决浏览器滚动条导致的页面闪烁问题 说明 我网页初始加载时网页内容没有占满整个高度,后面随着我添加内容,当内容接近浏览器底部时,导致滚动条忽然出现,此时就出现了页面闪烁情况. css 解决方法 1 方 ...

  7. Electron+Vue3+Vite+Element-Plus,保持软后台全速运行(解决循环过多导致的界面不刷新问题,保证窗口失去焦点后setTimeOut可用)

    文章目录 Electron+Vue3+Vite+Element-Plus,保持软后台全速运行(解决循环过多导致的界面不刷新问题,保证窗口失去焦点后setTimeOut可用) 问题描述 问题一 大循环界 ...

  8. 解决 vue-router 升级导致的 Uncaught (in promise) NavigationDuplicated

    解决 vue-router 升级导致的 Uncaught (in promise) NavigationDuplicated 1 导致错误原因 路由跳转有两种形式: 声明式:<router-li ...

  9. Ubuntu解决风扇高速导致声音大的问题

    Ubuntu解决风扇高速导致声音大的问题 原本的解决方法是利用"深度远程启动管理软件"进行调整,但是经过一个小时尝试未能成功,就问了浪潮客服,找到最终解决办法,如下所示: 重启服务 ...

最新文章

  1. 做人工智能必看的45篇论文(附下载地址)
  2. 2016年全球100G和200G相干WDM光学系统出货量增长75%
  3. 计算机网络:三层ISP结构
  4. 系统调用002 KiSystemService函数逆向分析
  5. [概率期望DP]JZOJ 4212 我想大声告诉你
  6. Function One
  7. Binary Search
  8. 在Spring中使用JDBCJobStore配置Quartz
  9. 《那些年啊,那些事——一个程序员的奋斗史》——115
  10. 最大期望算法 (EM算法)
  11. python制作文本进度条
  12. Yii2 Lesson - 03 Forms in Yii
  13. Raki的读paper小记:Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
  14. Spring JdbcTemplate 与 事务管理
  15. 梦幻西游手游最多人的服务器,梦幻西游手游哪个区人多及区服选择分析
  16. React基础学习(一)
  17. zbb20180921 spring事物的七种事物传播属性行为及五种隔离级别
  18. 应该去看看的十大论坛!!!
  19. VUE 路由守卫 next() / next({ ...to, replace: true }) / next(‘/‘) 说明
  20. SFS工具箱-Linux工具箱大全专注原创技术

热门文章

  1. Zcash Orchard Shielded Protocol
  2. android自定义dialog布局文件,Android自定义Dialog及其布局
  3. 西门子PLC的符号表
  4. 只会用Excel吗?这套全面的数据分析工具打包送你
  5. 西工大计算机博士好难毕业,老牌985西北工业大学的毕业生最后怎样了?1/3留陕西,月薪7000+...
  6. IDEA的Android的SDK环境配置
  7. javaweb实验1和2---H5C3
  8. GameFramework教程✨一、本专栏概述及注意事项
  9. putty xming进入linux桌面,Xming PuTTY 远程登录linux桌面
  10. Python爬虫:抓取手机APP数据