如何隐藏页面源代码中的json对象?
问题描述:
iam在我的php文件中使用json对象,但我不想让我的json对象在源代码中显示,因为它增加了我的页面大小。如何隐藏页面源代码中的json对象?
这是林在PHP
$json = new Services_JSON();
$arr = array();
$qs=mysql_query("my own query");
while($obj = mysql_fetch_object($qs))
{
$arr[] = $obj;
}
$total=sizeof($arr);
$jsn_obj='{"abc":'.$json->encode($arr).',"totalrow":"'.$total.'"}';
这样做,这是JavaScript的
echo '<script language=\'javascript\'>
var dataref = new Object();
dataref = eval('.$jsn_obj.');
</script>';
,但我想隐藏这个$ jsn_obj从我的源对象的值,我怎么能做到这一点? ? PLZ的帮助!
答
我不确定有什么方法可以解决您的问题,除了改变你的想法是否它是一个问题(它不是,真的)。
如果不输出它,则不能在页面中使用JSON对象。获取对象的唯一方法是为它创建一个单独的AJAX请求。如果你没有这样的说法,你还在转移确切相同的字节数,你会有的,可是现在你已经添加一个额外的HTTP请求的开销(这将是较大比原来的要多,因为传输中现在有HTTP标头)。这种方式在你的页面加载时也会变慢,因为你必须加载页面,然后发送AJAX请求并运行结果。
有很多更好的方法来管理你的网页的大小。 JSON只是文本,所以你应该看看server-side solution to zip your content, like mod_deflate。 mod_deflate在动态PHP输出以及静态页面上运行得非常漂亮。如果您无法控制Web服务器,则可以使用PHP的built in zlib compression。
答
这很大程度上取决于您的json数据。如果你在html中内嵌的数据是巨大的,你可能会考虑使用ajax来加载json数据。假设你希望你的页面加载得更快,即使没有数据。
如果数据不是那么大,请尽量保持数据内联,而不用额外的http请求。要加快你的页面,请尝试使用YSlow!看看你可以优化的其他领域。
这似乎很无用。您将数据从服务器传递到浏览器,并要求浏览器执行解释工作。你的问题是如何从浏览器中隐藏这些信息,但仍然解释它。您要求浏览器执行的任何操作都可以通过某种方式查看。 – 2010-01-11 05:46:31