假如PHP将页面生成纯静态后,在用户以后访问这个页面时都是直接调用生成后的静态页面,静态页面不根据文件修改时间和现在时间相差做修改,只有在静态文件不存在的情况下PHP才处理重新生成静态文件. 有没有什么方法在静态页面存在的情况下让PHP接收客户端某个简单指令来重新生成静态页面,比如Ctrl+F5刷新,PHP有没有什么函数能接收到Ctrl+F5这个动作
用户→PHP检测有无静态文件→生成静态
http://ww4.sinaimg.cn/large/e6291bfdgw1erl7a2vb5uj20f008lt9a.jpg
1
996635 2015-04-28 13:14:47 +08:00
同过header 传个X-xxxxxx过去判断一下吧.
|
2
ideaa 2015-04-28 13:21:08 +08:00
这个功能已经集成到了CrossPHP框架的注释配置中了,有兴趣可以看下框架的源码.
|
3
justfindu 2015-04-28 13:21:42 +08:00
监控用户的键盘行为... 比如监控到 ctrl+f5 了 , 阻断浏览器行为, 你再刷新
|
4
jevonszmx 2015-04-28 13:25:33 +08:00
说实话,如果你的内容更新频繁,静态化量又特别大的时候,可以考虑换其他方式,不要生成静态文件。
你这种思路的缺点是:更新内容靠用户发起,万一被别有用心的人知道或者出了什么bug,你的服务器分分钟要垮。。。 强烈推荐使用varnish来做页面缓存,替代静态化。 varnish可以配置强大的规则,比如: 正则指定某些url缓存300s ``` if (req.request == "GET" && ( (req.http.host ~ "^www.example.com" && req.url ~ "^/($|index\/index/|list/|detail/|index)"))) { set beresp.ttl = 300 s; } ``` 某个二级域名下某些内容缓存时间更长: ``` if (req.http.host == "wap.example.com") { if (req.url ~ "^(?i)/xml/android.xml"){ set beresp.ttl = 24h; } } ``` 比起静态化,非常值得花精力去研究下varnish的。 |
5
haiyang416 2015-04-28 13:27:21 +08:00
PHP 在 Web 中只负责接收 HTTP 请求并返回 HTTP 响应,键盘行为跟它没有关系。
|
6
huigeer 2015-04-28 13:33:40 +08:00
骚年, 现在内存很便宜了, 搞啥静态页面啊。
几百万的静态页面管理更新, 也是很麻烦的事情 直接动态吧 |
7
Septembers 2015-04-28 13:55:11 +08:00
纯静态方案 已过时 参见: http://www.jianshu.com/p/0c233a30716c
|
8
yakczh 2015-04-28 14:07:34 +08:00
静态化适合详情页, 象分页列表,这种静态化以后,如果有新内容产生,有分页链接的html要全部重新生成一遍
|
9
tabris17 2015-04-28 14:24:18 +08:00
反向代理缓存
|
10
xzem 2015-04-28 14:36:48 +08:00 via Android
…页面插入个js文件,然后ajax请求php页面执行更新操作。
|
11
fangjinmin 2015-04-28 15:08:22 +08:00
smarty就是这样的方式的。
|