我有一个 Symfony 应用程序,我想使用 Redis 作为缓存系统。Symfony 开箱即用的默认缓存系统是文件系统缓存。
从文档中我了解到 Symfony 中有两个命名缓存;cache.app因此cache.system我使用以下 cache.yaml 将两者设置为 Redis:
framework:
cache:
# Put the unique name of your app here: the prefix seed
# is used to compute stable namespaces for cache keys.
prefix_seed: myteam/myapp
default_redis_provider: "redis://redis:6379"
# The app cache caches to the filesystem by default.
# Other options include:
# cache.app via Redis
app: cache.adapter.redis
# cache.system also
system: cache.adapter.redis
Run Code Online (Sandbox Code Playgroud)
完成此操作后,我加载了一个示例页面并监视了缓存文件夹。我发现尽管在 Redis 中创建了密钥,但仍在缓存文件夹中创建文件。
我知道 Symfony 不建议弄乱内核在文件缓存中创建的文件,但即使是 cache/prod/Containerxxxxx 文件夹也会被写入。
不属于应用程序或系统的文件夹中可能会缓存什么?是否有另一个我错过的命名缓存?
我一直在寻找在我的网站上使用Google跟踪代码管理器,但由于默认的Google包含代码被我的服务器上的mod-security安装阻止,我在第一个障碍时失败了:
标准GTM包括代码:
<!-- Google Tag Manager -->
<noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-XXXXXX"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXX');</script>
<!-- End Google Tag Manager -->
Run Code Online (Sandbox Code Playgroud)
来自mod-security的回复:
WARNING: Possibly malicious iframe tag in output
Message: Outbound Anomaly Score Exceeded (score 15): Possibly malicious iframe tag in output
Run Code Online (Sandbox Code Playgroud)
触发的规则是ids 981000和981001.
我可以理解为什么mod-security可能认为带有"display:none; visibility:hidden"的iframe可能是恶意的,并且删除style属性会使规则981001停止触发,但由于规则981000,请求仍然失败.
981000似乎对宽度和高度属性应该有一个强烈的意见,但我已经尝试将它们设置为'1'和'10'无效:-(
有谁知道如何格式化iframe以适应此规则?或者如何更改GTM包含代码以使其不包含iframe?
谢谢
PS:我知道你可以通过删除整个noscript区域来解决这个问题,但我正在寻找一种不会改变包含代码功能的解决方案.
PPS:这是规则981000匹配的模式,在我的大脑在嵌套捕获组云中爆炸之前,我能理解其中的一半;-)
Pattern match "<\W*iframe[^>]+?\b(?:width|height)\b\W*?=\W*?["']?[^"'1-9]*?(?:(?:20|1?\d(?:\.\d*)?)(?![\d%.])|[0-3](?:\.\d*)?%)"
Run Code Online (Sandbox Code Playgroud) 我正在为Web服务创建一个AJAX API,我希望能够调用类似jQuery的访问器.jQuery似乎能够将'jQuery'作为函数执行,但也可以使用它来直接访问作为函数EG结果的对象:
jQuery();
jQuery.each({});
Run Code Online (Sandbox Code Playgroud)
这是我似乎无法实现的诀窍:
myAPI('foo'); //output: 'foo'
myAPI('foo').changeBar(); //output: 'foo' 1
myAPI.changeBar(); //Error: not a function
Run Code Online (Sandbox Code Playgroud)
我已经看到了类似问题的答案,这些答案很有帮助,但并没有真正回答我的问题.
#8734115 - 真的很有趣,但你无法访问由f.prototype设置的方法.
#2953314 - 使用多个操作来创建对象而不是单个函数.
这是我的代码:
(function(window) {
var h = function(foo) {
// The h object is actually just the init constructor 'enhanced'
return new h.fn.init(foo);
};
/**
* Methods defined at protoype.
*/
h.fn = h.prototype = {
constructor: h,
init: function(foo) {
console.log(foo);
return this;
},
splice : function () {},
length : 0,
bar : 0,
changeBar …Run Code Online (Sandbox Code Playgroud) apache ×1
caching ×1
iframe ×1
javascript ×1
jquery ×1
mod-security ×1
php ×1
redis ×1
symfony ×1