Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript包含动态SRC=";url";_Javascript_Performance_Webpage - Fatal编程技术网

Javascript包含动态SRC=";url";

Javascript包含动态SRC=";url";,javascript,performance,webpage,Javascript,Performance,Webpage,是否可以(也是一个好主意)通过散列url将动态数据传递给JavaScript包含文件 例如: <head> <script src="scripts.js#x=123&y=456"></script> </head> 同样的原则也适用于javascript文件。我希望实现的是在页面之间重用script.js的缓存版本 转到index.php,包括以下内容: <head> <script src="scripts.js#x

是否可以(也是一个好主意)通过散列url将动态数据传递给JavaScript包含文件

例如:

<head> <script src="scripts.js#x=123&y=456"></script> </head>
同样的原则也适用于javascript文件。我希望实现的是在页面之间重用script.js的缓存版本

转到index.php,包括以下内容:

<head> <script src="scripts.js#x=123&y=456"></script> </head>

然后转到fun.php,包括以下内容

<head> <script src="scripts.js#x=898756465&y=5678665468456"></script> </head>
<head> <script src="scripts.js#session=887987979&csrf_token=87965468796"></script> </head>

然后我们将看到。php包含以下内容

<head> <script src="scripts.js#x=898756465&y=5678665468456"></script> </head>
<head> <script src="scripts.js#session=887987979&csrf_token=87965468796"></script> </head>

从页面视图到页面视图,通过hash bang传递页面所需的任何信息,同时从缓存中重用scirpt.js


那么,是否可以从scirpts.js中读取hash bang信息?

如果您正在创建的HTML文件是动态的,那么只需创建内联JavaScript即可。编写一个include只会从浏览器创建一个额外的请求,这是可以避免的

编辑: 只需包含一个读取URL的JavaScript文件,您不需要传递任何变量(当然,您也可以):


对于stackoverflow来说,这并不是一个问题,通过URL传递数据的方式,您可以使用这些特定的值缓存脚本,而不能缓存内联javascript代码。stackoverflow似乎是唯一和最好的问这个问题的地方。关于缓存,url中的哈希(#)指示浏览器可以使用页面的缓存版本。@BrianMcGinity-片段id与缓存无关。您是说发送到页面的js将根据参数不同而有所不同吗?意思是
scripts.js#x=123&y=456
的源代码与
scripts.js#x=abc&y=def
的源代码不同?(而且
#
是一个输入错误,对吗?)在它执行的时候,我不认为JavaScript对检索它的请求有任何概念,所以在
标记的URL中的散列之后没有办法获得“参数”。内联JavaScript的主要问题是可重用性和可维护性;如果您仅使用
标记来调用初始化函数,则不必太担心。对于第一页请求,将创建一个往返。第二个请求使用缓存版本。因此,如果URL更改(不同的x和y),您希望浏览器使用相同的HTML,但不同的JavaScript?我在问题中添加了进一步的说明…请参阅更新。我希望不同的html页面从缓存中使用相同的javascript文件,同时传递不同的哈希信息。我仍然认为创建javascript动态更有意义。通过缓存来提供文件,您想要实现什么?@Sonata我不认为JavaScript本身是动态的,只是一些变量的值在页面之间有所不同(我可能是错的)。如果是这样的话,每次生成一个全新的脚本似乎都是过火了。
$(document).ready(function() {
    // pseudo code
    hashbang = location.href.substr(location.href.indexOf('#') + 1);
    if (hashbang.x && hashbang.y) {
        pageInit(hashbang.x, hashbang.y);
    } else if (hashbang.csrf_token) {
        // do something else
    }
});