分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]
Mar 19
js的跨域问题一直很让前端开发头痛。因为只在大一些的应用都会有多个域名。最常用的应用的就是上传。

一般架构上考虑读写压力,会都会把图片等附件上传的功能单独一台服务器或者一个域名,可问题就来了。

html无论是html4还是html5都不允许跨域请求。反正返回来的东西就是空白。

但事实上不是这样,真实情况事:

返回来的东西被浏览器限制了
Mar 3
其实我不是想说ob_start,而是解决一个nginx的proxy_cache问题。

我使用proxy_cache对根据页面头信息里的有效期和状态页面进行缓存。这个的性能还是很不多。交给php进行控制,而且不需要每个页面都创建。只是第一次访问时才生成缓存。

在长期的运行下,发现一个问题,如果程序在出现超时后,没有返回非200的状态(如500).还是返回200。这样就问题大了。本来proxy_cache就是靠状态来判断,在出错后还是返回200这样我如何是好呢?所以我就想到使用ob_start()进行缓存。但实际上这个是没有作用。

ob_start只是开通缓存的通道。如果出错问题,他还是会返回通道的内容数据,所以不会有影响,只是非正常退出,不返回数据而已。

另外ob_start开启的缓存通道可以多个开通。

所以ob_start不能解决状态问题。最后使用set_error_handler(),设置一个出错回显的函数。直接在函数中针对出错的函数。输出500的头信息。

好了这个就可以解决问题了。

那ob_start还要不要用?我想还是用吧。出错后就不要输出页面的内容了。因为内容未处理完。不如不输出。

<?php
ob_start()
set_error_handler('my_error_handler');

function my_error_handler($errno, $errmsg, $filename, $linenum, $vars){
    header('HTTP/1.1 500 Internal Server Error');
}
$smarty = new Smarty();
$smarty->display();
分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]