在Web应用程序中存储大型会话数据的最佳方法是什么?

时间:2013-06-03 13:57:44

标签: javascript python html5 web-applications flask

我正在建立一个不需要人们登录但仍需要大量会话数据的网站。

示例:一个人上传0.5 MB文件。我希望能够从现在开始操纵这个。我应该在哪里存放?我更喜欢像cookie系统这样的东西,但显然这个太小了。 Redis似乎是一个机会,但我希望能有更简单的东西。

我正在使用Python烧瓶。

提前致谢。

3 个答案:

答案 0 :(得分:1)

您有两种选择:

  • 让此人将文件上传到服务器。在这种情况下,您不希望将文件存储在会话中 - 相反,您将希望在其会话中存储对文件位置的引用(或者如果它们需要能够以新的方式返回,则将其保留在更永久的位置会话,仍然使用旧文件)。

    @app.route("/upload", methods=["GET", "POST"])
    def upload_file():
        # Create a folder in your uploads section to store
        # this user's files.
        # Store the file in it (use werkzeug.security.safe_join
        # to ensure the file name is safe).
        # Add the *safe* file name to the session
        # or the datastore (e. g. a database)
        # so you can look it up later
    
  • 使用新的DOM Filesystem API将文件存储在客户端,这样他们就不会来到您的服务器并使用JavaScript操作文件。

第一种方法的优点是你可以存储大型文件并使用许多不同的工具(不仅仅是Python)来操作它们。缺点是您必须存储文件并确保清理文件名(以避免服务器被黑客攻击)。

第二种方法的优点是您不需要在服务器上存储任何东西(因此您不必为额外的存储付费)。缺点是您可能会限制您可以存储的数据量,并且您只能访问在浏览器中运行的库(即仅限JS)您必须通过所有当你需要做一些更复杂的事情时,数据会传到你的服务器上。

答案 1 :(得分:0)

您应该尝试本地存储。

答案 2 :(得分:0)

您可能需要memcached。它比Redis简单。