在高流量网站期间上传的 Smarty 模板会导致空白页面
我在一个使用 Smarty 模板系统的流量非常高的网站上工作。
当我上传当前正在使用的模板的新副本时,页面会变成空白(就好像模板文件本身没有任何内容一样)。 我必须关闭lighttpd,再次上传模板,然后重新启动lighttpd。
Smarty 中是否有任何我应该使用但可能不使用的设置?
以下是我在 Smarty 内部设置的变量列表:
$smarty->use_sub_dirs = true;
$smarty->compile_check = true;
I work on a very high trafficked website that uses a Smarty templating system.
When I upload a fresh copy of a template that is currently being used, the page turns blank (as if there is nothing in the template file itself). I have to shut down lighttpd, upload the template again, and start lighttpd back up.
Are there any settings in Smarty that I should be utilizing that I might not be?
Here's a list of variables that I'm setting inside Smarty itself:
$smarty->use_sub_dirs = true;
$smarty->compile_check = true;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
不要直接复制模板,将它们复制到某个临时文件夹中,上传完成后执行 mv (移动文件操作)
don't copy your templates directly, copy them in some temp folder and after upload finishes do a mv (move file operation)
您尝试清除缓存文件吗? 如果文件未完全上传并且有人请求它,则它会被缓存损坏(至少这是我的想法)。 我以前用过 smarty,也用过 lighttpd。 (决定使用 XSLT)
如果每秒请求页面超过 2 次,除非关闭 http 服务器,否则您将永远无法实际更新文件。 或者清除 smarty 缓存文件。
you try clearing the cached files? If the file is not completely uploaded and someone requests it, it gets cached broken (at least this is what i think). I used to use smarty and i too use lighttpd. (decided to go XSLT)
if the page is being requested more than 2 times a second your never going to be able to actually update the file unless your turn the http server off. Or clear the smarty cached file.
您可能需要在上传文件之前打开缓存(如果已打开,请增加超时并确保缓存整个模板)。 启用缓存并将其设置为几分钟超时,以便 Smarty 不会编译新上传的模板。 访问包含您的模板的页面,以确保 Smarty 已缓存该模板。 然后,在缓存过期之前上传模板。 上传完成后,您可以再次关闭缓存(或将其设置回原始值)。
您可能需要向应用程序添加一个配置设置,以全局打开/关闭此缓存机制。
You may want to turn on caching before you upload a file (if it is already on, increase the timeout and make sure that the entire template is cached). Enable the cache and set it to a couple of minutes timeout so that Smarty does not compile newly uploaded templates. Visit the page that has your template to ensure that Smarty has cached it. Then, upload the template before the cache expires. When the upload has finished you can turn caching off again (or set it back to it's original values).
You may want to add a configuration setting to your application that can globally turn on/off this caching mechanism.